From 55670ea0126b44c033256fc88a56bb09e7013e4d Mon Sep 17 00:00:00 2001 From: Katrina Rogan Date: Thu, 8 Feb 2024 11:43:01 -0800 Subject: [PATCH 001/107] Verify unbounded inputs for all scheduled launch plan types (#4867) --- .../impl/validation/launch_plan_validator.go | 2 +- .../validation/launch_plan_validator_test.go | 22 +++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/flyteadmin/pkg/manager/impl/validation/launch_plan_validator.go b/flyteadmin/pkg/manager/impl/validation/launch_plan_validator.go index 357c3c1e4e7..732c00666ac 100644 --- a/flyteadmin/pkg/manager/impl/validation/launch_plan_validator.go +++ b/flyteadmin/pkg/manager/impl/validation/launch_plan_validator.go @@ -66,7 +66,7 @@ func ValidateLaunchPlan(ctx context.Context, func validateSchedule(request admin.LaunchPlanCreateRequest, expectedInputs *core.ParameterMap) error { schedule := request.GetSpec().GetEntityMetadata().GetSchedule() - if schedule.GetCronExpression() != "" || schedule.GetRate() != nil { + if schedule.GetCronExpression() != "" || schedule.GetRate() != nil || schedule.GetCronSchedule() != nil { for key, value := range expectedInputs.Parameters { if value.GetRequired() && key != schedule.GetKickoffTimeInputArg() { return errors.NewFlyteAdminErrorf( diff --git a/flyteadmin/pkg/manager/impl/validation/launch_plan_validator_test.go b/flyteadmin/pkg/manager/impl/validation/launch_plan_validator_test.go index a2d27c3c6c4..8c2c768d42f 100644 --- a/flyteadmin/pkg/manager/impl/validation/launch_plan_validator_test.go +++ b/flyteadmin/pkg/manager/impl/validation/launch_plan_validator_test.go @@ -297,7 +297,6 @@ func TestValidateSchedule_NoSchedule(t *testing.T) { } func TestValidateSchedule_ArgNotFixed(t *testing.T) { - request := testutils.GetLaunchPlanRequestWithDeprecatedCronSchedule("* * * * * *") inputMap := &core.ParameterMap{ Parameters: map[string]*core.Parameter{ "foo": { @@ -310,9 +309,24 @@ func TestValidateSchedule_ArgNotFixed(t *testing.T) { }, }, } - - err := validateSchedule(request, inputMap) - assert.NotNil(t, err) + t.Run("with deprecated cron expression", func(t *testing.T) { + request := testutils.GetLaunchPlanRequestWithDeprecatedCronSchedule("* * * * * *") + + err := validateSchedule(request, inputMap) + assert.NotNil(t, err) + }) + t.Run("with rate", func(t *testing.T) { + request := testutils.GetLaunchPlanRequestWithFixedRateSchedule(2, admin.FixedRateUnit_HOUR) + + err := validateSchedule(request, inputMap) + assert.NotNil(t, err) + }) + t.Run("with cron schedule", func(t *testing.T) { + request := testutils.GetLaunchPlanRequestWithCronSchedule("* * * * * *") + + err := validateSchedule(request, inputMap) + assert.NotNil(t, err) + }) } func TestValidateSchedule_KickoffTimeArgDoesNotExist(t *testing.T) { From a8aa9bbd83568a156077e4d9cbb8a272a6136187 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Thu, 8 Feb 2024 12:17:00 -0800 Subject: [PATCH 002/107] Fix npm publish of flyteidl package (#4861) Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- .github/workflows/flyteidl-release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/flyteidl-release.yml b/.github/workflows/flyteidl-release.yml index 2ba57408860..7e34f54f297 100644 --- a/.github/workflows/flyteidl-release.yml +++ b/.github/workflows/flyteidl-release.yml @@ -33,6 +33,7 @@ jobs: run: working-directory: flyteidl steps: + - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: node-version: "12.x" From 104b95e0b6357daf322bfa38ee2dbbe5facbac24 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Thu, 8 Feb 2024 12:17:11 -0800 Subject: [PATCH 003/107] Remove protoc_gen_swagger (#4860) Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- flyteidl/pyproject.toml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/flyteidl/pyproject.toml b/flyteidl/pyproject.toml index 1a449b49016..b3c56bacedd 100644 --- a/flyteidl/pyproject.toml +++ b/flyteidl/pyproject.toml @@ -12,24 +12,8 @@ readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.8,<3.13" dependencies = [ 'googleapis-common-protos', - 'protoc_gen_swagger', 'protoc-gen-openapiv2', 'protobuf>=4.21.1,<5.0.0', - # Packages in here should rarely be pinned. This is because these - # packages (at the specified version) are required for project - # consuming this library. By pinning to a specific version you are the - # number of projects that can consume this or forcing them to - # upgrade/downgrade any dependencies pinned here in their project. - # - # Generally packages listed here are pinned to a major version range. - # - # e.g. - # Python FooBar package for foobaring - # pyfoobar>=1.0, <2.0 - # - # This will allow for any consuming projects to use this library as - # long as they have a version of pyfoobar equal to or greater than 1.x - # and less than 2.x installed. ] classifiers = [ "Intended Audience :: Science/Research", From ef8fe40ef2cfe7442acbcecc7869e0fe748c4f3c Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Thu, 8 Feb 2024 14:33:12 -0600 Subject: [PATCH 004/107] create CODEOWNERS file and add docs team (#4857) Signed-off-by: nikki everett --- CODEOWNERS | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 CODEOWNERS diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000000..27a2f910bdb --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,3 @@ +# Automatically request docs team for docs PR review +/docs/ @neverett @ppiegaze + From 1b3a5cc05035dfb844b0b72896847007e2f37d1c Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 8 Feb 2024 15:23:34 -0700 Subject: [PATCH 005/107] update link to on-prem tutorial (#4868) Signed-off-by: Andrew Merrill Co-authored-by: Andrew Merrill --- docs/deployment/deployment/cloud_simple.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deployment/deployment/cloud_simple.rst b/docs/deployment/deployment/cloud_simple.rst index b280546708f..c71708f1f43 100644 --- a/docs/deployment/deployment/cloud_simple.rst +++ b/docs/deployment/deployment/cloud_simple.rst @@ -120,7 +120,7 @@ Flyte in on-premises infrastructure *********************************** Sometimes, it's also helpful to be able to set up a Flyte environment in an on-premises Kubernetes environment or even on a laptop for testing and development purposes. -Check out `this community-maintained tutorial `__ to learn how to setup the required dependencies and deploy the `flyte-binary` chart to a local Kubernetes cluster. +Check out `this community-maintained tutorial `__ to learn how to setup the required dependencies and deploy the `flyte-binary` chart to a local Kubernetes cluster. ************* From c06f5eb65e5997dba9664aa19e0a0a604da5b5d1 Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Fri, 9 Feb 2024 11:04:43 -0600 Subject: [PATCH 006/107] re-add link to hosted sandbox (#4856) Signed-off-by: nikki everett --- docs/quickstart_guide.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/quickstart_guide.md b/docs/quickstart_guide.md index 5a9eb544ecd..eb6d186d86a 100644 --- a/docs/quickstart_guide.md +++ b/docs/quickstart_guide.md @@ -3,6 +3,22 @@ In this guide, you will create and run a Flyte workflow in a local Python environment to generate the output "Hello, world!" +````{dropdown} Try Flyte in your browser +:title: text-muted +:animate: fade-in-slide-down + +```{link-button} https://sandbox.union.ai/ +--- +classes: try-hosted-flyte btn-warning btn-block +text: Hosted Flyte sandbox +--- +``` +```{div} text-muted +*Courtesy of [Union.ai](https://www.union.ai/)* +``` +```` + + ## Prerequisites * [Install Python 3.8x or higher](https://www.python.org/downloads/) From 55a67f23f5d8e44bc7d70f738b0fafe954e0bf94 Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Fri, 9 Feb 2024 11:09:34 -0600 Subject: [PATCH 007/107] prevent asterisk from being turned into list element (#4836) Signed-off-by: nikki everett --- docs/concepts/schedules.rst | 120 ++++++++++++++++++++++++++++++------ 1 file changed, 101 insertions(+), 19 deletions(-) diff --git a/docs/concepts/schedules.rst b/docs/concepts/schedules.rst index 34644b217b3..092a67f4a13 100644 --- a/docs/concepts/schedules.rst +++ b/docs/concepts/schedules.rst @@ -24,37 +24,116 @@ Let's now look at how schedules can be defined through cron_expression_ or rate_ Cron Expression --------------- -Cron expression strings use :ref:`this ` syntax. They are validated at launch plan registration time. - -.. _rate_unit: +Cron expression strings use the syntax shown below. They are validated at launch plan registration time. Format ------ A cron expression represents a set of times, with the help of 5 space-separated fields. -.. _cron_expression_table: - -+--------------+------------+-----------------+----------------------------+ -| Field name | Mandatory? | Allowed values | Allowed special characters | -+==============+============+=================+============================+ -| Minutes | Yes | 0-59 | * / , - | -+--------------+------------+-----------------+----------------------------+ -| Hours | Yes | 0-23 | * / , - | -+--------------+------------+-----------------+----------------------------+ -| Day of month | Yes | 1-31 | * / , - ? | -+--------------+------------+-----------------+----------------------------+ -| Month | Yes | 1-12 or JAN-DEC | * / , - | -+--------------+------------+-----------------+----------------------------+ -| Day of week | Yes | 0-6 or SUN-SAT | * / , - ? | -+--------------+------------+-----------------+----------------------------+ +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Field name

+
+

Required

+
+

Allowed values

+
+

Allowed special characters

+
+

Minutes

+
+

Yes

+
+

0-59

+
+

* / , -

+

Hours

+

Yes

+
+

0-23

+
+

* / , -

+
+

Day of month

+
+

Yes

+
+

1-31

< +
+

/ , - ?

+
+

Month

+
+

Yes

+
+

1-12 or JAN-DEC

+
+

* / , -

+
+

Day of week

+
+

Yes

+
+

0-6 or SUN-SAT

+
+

* / , - ?

+
**Note**: The 'Month' and 'Day of week' fields are case insensitive. Cron schedules -------------- -An incorrect cron schedule expression leads to a failure in triggering the schedule. :ref:`Here ` is a table that shows the format of a cron expression. +An incorrect cron schedule expression leads to a failure in triggering the schedule. :ref:`Here ` is a table that shows the format of a cron expression. Below is another example: @@ -73,6 +152,8 @@ Below is another example: ) +.. _fixed_rate: + Fixed rate schedules ---------------------- Instead of cron schedules, fixed rate schedules can be used. @@ -95,6 +176,7 @@ Below is an example with duration in `days`. ) +.. _rate_unit: Rate Unit --------- From 03a0aeffaf8e88c09ff9283fd3160f87181a7f7c Mon Sep 17 00:00:00 2001 From: David Espejo <82604841+davidmirror-ops@users.noreply.github.com> Date: Fri, 9 Feb 2024 13:54:01 -0500 Subject: [PATCH 008/107] Add notes to selfAuth with Azure docs (#4835) * Add notes from recent Azure deployments Signed-off-by: davidmirror-ops * Rephrase multicluster auth Signed-off-by: davidmirror-ops * Rephrase multicluster auth v2 Signed-off-by: davidmirror-ops --------- Signed-off-by: davidmirror-ops Co-authored-by: davidmirror-ops --- docs/deployment/configuration/auth_setup.rst | 24 ++++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/deployment/configuration/auth_setup.rst b/docs/deployment/configuration/auth_setup.rst index 61a6b4c0aef..41c10f03b13 100644 --- a/docs/deployment/configuration/auth_setup.rst +++ b/docs/deployment/configuration/auth_setup.rst @@ -120,7 +120,7 @@ browser. - ``http://localhost:30081/callback`` for sandbox or ``https:///callback`` for other Flyte deployment types. - .. group-tab:: Microsoft Azure AD + .. group-tab:: Microsoft Entra ID (Azure AD) 1. From the Azure homepage go to **Azure Active Directory** 2. From the **Ovierview** page, take note of the **Tenant ID** @@ -330,7 +330,7 @@ Apply OIDC Configuration userAuth: openId: # baseUrl: https://accounts.google.com # Uncomment for Google - # baseUrl: https://login.microsoftonline.com//oauth2/v2.0/authorize # Uncomment for Azure AD + # baseUrl: https://login.microsoftonline.com//v2.0 # Uncomment for Azure AD # For Okta, use the Issuer URI of the default auth server baseUrl: https://dev-.okta.com/oauth2/default # Use the client ID generated by your IdP @@ -351,28 +351,28 @@ Apply OIDC Configuration # Use the non-encoded version of the random password clientSecret: "" clientId: flytepropeller - - 8. Save and exit your editor. - 9. Restart ``flyteadmin`` for the changes to take effect: +.. note:: - .. prompt:: bash $ + For `multi-cluster deployments `__, + you must add this Secret definition block to the `values-dataplane.yaml` file. + If you are not running `flytepropeller` in the control plane cluster, you do not need to create this secret there. - kubectl rollout restart deployment/flyteadmin -n flyte + 8. Save and exit your editor. - 10. Restart ``flytepropeller`` to start using authenticated requests: + 9. Upgrade your Helm release with the new configuration: .. prompt:: bash $ - kubectl rollout restart deployment/flytepropeller -n flyte + helm upgrade flyteorg/flyte-binary -n --values .yaml - 11. Restart ``flytescheduler``` to start using authenticated requests: + 10. Verify that the `flytepropeller`, `flytescheduler` and `flyteadmin` Pods are restarted and running: .. prompt:: bash $ - kubectl rollout restart deployment/flytescheduler -n flyte + kubectl get pods -n flyte - 12. For flytectl/pyflyte, make sure that your local config file (``$HOME/.flyte/config.yaml``) includes the following option: + 11. For flytectl/pyflyte, make sure that your local config file (``$HOME/.flyte/config.yaml``) includes the following option: .. code-block:: yaml From 227c6a1aa2e69ffdc08416f27b2506b4e4904860 Mon Sep 17 00:00:00 2001 From: Dan Rammer Date: Fri, 9 Feb 2024 13:29:08 -0600 Subject: [PATCH 009/107] Add protos to support cache overrides (#4820) * updated protos Signed-off-by: Daniel Rammer * updated golden files Signed-off-by: Daniel Rammer * removed wf yaml compiler testdata Signed-off-by: Daniel Rammer * removed unecessary yaml compiler testdata Signed-off-by: Daniel Rammer --------- Signed-off-by: Daniel Rammer --- flyteidl/clients/go/assets/admin.swagger.json | 41 + .../gen/pb-es/flyteidl/core/compiler_pb.ts | 52 +- .../gen/pb-es/flyteidl/core/workflow_pb.ts | 91 + .../gen/pb-go/flyteidl/core/compiler.pb.go | 291 +- .../gen/pb-go/flyteidl/core/workflow.pb.go | 489 +- .../flyteidl/service/admin.swagger.json | 41 + flyteidl/gen/pb-js/flyteidl.d.ts | 4463 +++--- flyteidl/gen/pb-js/flyteidl.js | 11282 ++++++++-------- .../pb_python/flyteidl/core/compiler_pb2.py | 34 +- .../pb_python/flyteidl/core/compiler_pb2.pyi | 14 +- .../pb_python/flyteidl/core/workflow_pb2.py | 38 +- .../pb_python/flyteidl/core/workflow_pb2.pyi | 18 +- flyteidl/gen/pb_rust/flyteidl.core.rs | 53 + flyteidl/protos/flyteidl/core/compiler.proto | 11 + flyteidl/protos/flyteidl/core/workflow.proto | 23 + 15 files changed, 9030 insertions(+), 7911 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 590c8ccd2af..5b7e650ee36 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -11328,6 +11328,16 @@ }, "description": "Defines a 2-level tree where the root is a comparison operator and Operands are primitives or known variables.\nEach expression results in a boolean result." }, + "coreCompiledLaunchPlan": { + "type": "object", + "properties": { + "template": { + "$ref": "#/definitions/coreLaunchPlanTemplate", + "title": "Completely contained LaunchPlan Template" + } + }, + "title": "Output of the compilation step. This object represents one LaunchPlan. We store more metadata at this layer" + }, "coreCompiledTask": { "type": "object", "properties": { @@ -11374,6 +11384,14 @@ "$ref": "#/definitions/coreCompiledTask" }, "title": "Guaranteed that there will only exist one and only one task with a given id, i.e., every task has a unique id\n+required (at least 1)" + }, + "launch_plans": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coreCompiledLaunchPlan" + }, + "description": "A collection of launch plans that are compiled. Guaranteed that there will only exist one and only one launch plan\nwith a given id, i.e., every launch plan has a unique id." } }, "description": "A Compiled Workflow Closure contains all the information required to start a new execution, or to visualize a workflow\nand its details. The CompiledWorkflowClosure should always contain a primary workflow, that is the main workflow that\nwill being the execution. All subworkflows are denormalized. WorkflowNodes refer to the workflow identifiers of\ncompiled subworkflows." @@ -11757,6 +11775,20 @@ } } }, + "coreLaunchPlanTemplate": { + "type": "object", + "properties": { + "id": { + "$ref": "#/definitions/coreIdentifier", + "description": "A globally unique identifier for the launch plan." + }, + "interface": { + "$ref": "#/definitions/coreTypedInterface", + "title": "The input and output interface for the launch plan" + } + }, + "description": "A structure that uniquely identifies a launch plan in the system." + }, "coreLiteral": { "type": "object", "properties": { @@ -11964,6 +11996,15 @@ }, "interruptible": { "type": "boolean" + }, + "cacheable": { + "type": "boolean" + }, + "cache_version": { + "type": "string" + }, + "cache_serializable": { + "type": "boolean" } }, "description": "Defines extra information about the Node." diff --git a/flyteidl/gen/pb-es/flyteidl/core/compiler_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/compiler_pb.ts index f178306e362..7078e7451e0 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/compiler_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/compiler_pb.ts @@ -5,7 +5,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto3 } from "@bufbuild/protobuf"; -import { WorkflowTemplate } from "./workflow_pb.js"; +import { LaunchPlanTemplate, WorkflowTemplate } from "./workflow_pb.js"; import { TaskTemplate } from "./tasks_pb.js"; /** @@ -144,6 +144,47 @@ export class CompiledWorkflow extends Message { } } +/** + * Output of the compilation step. This object represents one LaunchPlan. We store more metadata at this layer + * + * @generated from message flyteidl.core.CompiledLaunchPlan + */ +export class CompiledLaunchPlan extends Message { + /** + * Completely contained LaunchPlan Template + * + * @generated from field: flyteidl.core.LaunchPlanTemplate template = 1; + */ + template?: LaunchPlanTemplate; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.core.CompiledLaunchPlan"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "template", kind: "message", T: LaunchPlanTemplate }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CompiledLaunchPlan { + return new CompiledLaunchPlan().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CompiledLaunchPlan { + return new CompiledLaunchPlan().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CompiledLaunchPlan { + return new CompiledLaunchPlan().fromJsonString(jsonString, options); + } + + static equals(a: CompiledLaunchPlan | PlainMessage | undefined, b: CompiledLaunchPlan | PlainMessage | undefined): boolean { + return proto3.util.equals(CompiledLaunchPlan, a, b); + } +} + /** * Output of the Compilation step. This object represent one Task. We store more metadata at this layer * @@ -219,6 +260,14 @@ export class CompiledWorkflowClosure extends Message { */ tasks: CompiledTask[] = []; + /** + * A collection of launch plans that are compiled. Guaranteed that there will only exist one and only one launch plan + * with a given id, i.e., every launch plan has a unique id. + * + * @generated from field: repeated flyteidl.core.CompiledLaunchPlan launch_plans = 4; + */ + launchPlans: CompiledLaunchPlan[] = []; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -230,6 +279,7 @@ export class CompiledWorkflowClosure extends Message { { no: 1, name: "primary", kind: "message", T: CompiledWorkflow }, { no: 2, name: "sub_workflows", kind: "message", T: CompiledWorkflow, repeated: true }, { no: 3, name: "tasks", kind: "message", T: CompiledTask, repeated: true }, + { no: 4, name: "launch_plans", kind: "message", T: CompiledLaunchPlan, repeated: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): CompiledWorkflowClosure { diff --git a/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts index b48ea57cb61..6c599f08b30 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts @@ -612,6 +612,45 @@ export class NodeMetadata extends Message { case: "interruptible"; } | { case: undefined; value?: undefined } = { case: undefined }; + /** + * Identify whether a node should have it's outputs cached. + * + * @generated from oneof flyteidl.core.NodeMetadata.cacheable_value + */ + cacheableValue: { + /** + * @generated from field: bool cacheable = 7; + */ + value: boolean; + case: "cacheable"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * The version of the cache to use. + * + * @generated from oneof flyteidl.core.NodeMetadata.cache_version_value + */ + cacheVersionValue: { + /** + * @generated from field: string cache_version = 8; + */ + value: string; + case: "cacheVersion"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * Identify whether caching operations involving this node should be serialized. + * + * @generated from oneof flyteidl.core.NodeMetadata.cache_serializable_value + */ + cacheSerializableValue: { + /** + * @generated from field: bool cache_serializable = 9; + */ + value: boolean; + case: "cacheSerializable"; + } | { case: undefined; value?: undefined } = { case: undefined }; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -624,6 +663,9 @@ export class NodeMetadata extends Message { { no: 4, name: "timeout", kind: "message", T: Duration }, { no: 5, name: "retries", kind: "message", T: RetryStrategy }, { no: 6, name: "interruptible", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "interruptible_value" }, + { no: 7, name: "cacheable", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "cacheable_value" }, + { no: 8, name: "cache_version", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "cache_version_value" }, + { no: 9, name: "cache_serializable", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "cache_serializable_value" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): NodeMetadata { @@ -1108,3 +1150,52 @@ export class TaskNodeOverrides extends Message { } } +/** + * A structure that uniquely identifies a launch plan in the system. + * + * @generated from message flyteidl.core.LaunchPlanTemplate + */ +export class LaunchPlanTemplate extends Message { + /** + * A globally unique identifier for the launch plan. + * + * @generated from field: flyteidl.core.Identifier id = 1; + */ + id?: Identifier; + + /** + * The input and output interface for the launch plan + * + * @generated from field: flyteidl.core.TypedInterface interface = 2; + */ + interface?: TypedInterface; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.core.LaunchPlanTemplate"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "id", kind: "message", T: Identifier }, + { no: 2, name: "interface", kind: "message", T: TypedInterface }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): LaunchPlanTemplate { + return new LaunchPlanTemplate().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): LaunchPlanTemplate { + return new LaunchPlanTemplate().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): LaunchPlanTemplate { + return new LaunchPlanTemplate().fromJsonString(jsonString, options); + } + + static equals(a: LaunchPlanTemplate | PlainMessage | undefined, b: LaunchPlanTemplate | PlainMessage | undefined): boolean { + return proto3.util.equals(LaunchPlanTemplate, a, b); + } +} + diff --git a/flyteidl/gen/pb-go/flyteidl/core/compiler.pb.go b/flyteidl/gen/pb-go/flyteidl/core/compiler.pb.go index 0122432a985..4bd119175f8 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/compiler.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/compiler.pb.go @@ -137,6 +137,55 @@ func (x *CompiledWorkflow) GetConnections() *ConnectionSet { return nil } +// Output of the compilation step. This object represents one LaunchPlan. We store more metadata at this layer +type CompiledLaunchPlan struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Completely contained LaunchPlan Template + Template *LaunchPlanTemplate `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` +} + +func (x *CompiledLaunchPlan) Reset() { + *x = CompiledLaunchPlan{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_core_compiler_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompiledLaunchPlan) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompiledLaunchPlan) ProtoMessage() {} + +func (x *CompiledLaunchPlan) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_core_compiler_proto_msgTypes[2] + 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 CompiledLaunchPlan.ProtoReflect.Descriptor instead. +func (*CompiledLaunchPlan) Descriptor() ([]byte, []int) { + return file_flyteidl_core_compiler_proto_rawDescGZIP(), []int{2} +} + +func (x *CompiledLaunchPlan) GetTemplate() *LaunchPlanTemplate { + if x != nil { + return x.Template + } + return nil +} + // Output of the Compilation step. This object represent one Task. We store more metadata at this layer type CompiledTask struct { state protoimpl.MessageState @@ -150,7 +199,7 @@ type CompiledTask struct { func (x *CompiledTask) Reset() { *x = CompiledTask{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_compiler_proto_msgTypes[2] + mi := &file_flyteidl_core_compiler_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -163,7 +212,7 @@ func (x *CompiledTask) String() string { func (*CompiledTask) ProtoMessage() {} func (x *CompiledTask) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_compiler_proto_msgTypes[2] + mi := &file_flyteidl_core_compiler_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -176,7 +225,7 @@ func (x *CompiledTask) ProtoReflect() protoreflect.Message { // Deprecated: Use CompiledTask.ProtoReflect.Descriptor instead. func (*CompiledTask) Descriptor() ([]byte, []int) { - return file_flyteidl_core_compiler_proto_rawDescGZIP(), []int{2} + return file_flyteidl_core_compiler_proto_rawDescGZIP(), []int{3} } func (x *CompiledTask) GetTemplate() *TaskTemplate { @@ -205,12 +254,15 @@ type CompiledWorkflowClosure struct { // Guaranteed that there will only exist one and only one task with a given id, i.e., every task has a unique id // +required (at least 1) Tasks []*CompiledTask `protobuf:"bytes,3,rep,name=tasks,proto3" json:"tasks,omitempty"` + // A collection of launch plans that are compiled. Guaranteed that there will only exist one and only one launch plan + // with a given id, i.e., every launch plan has a unique id. + LaunchPlans []*CompiledLaunchPlan `protobuf:"bytes,4,rep,name=launch_plans,json=launchPlans,proto3" json:"launch_plans,omitempty"` } func (x *CompiledWorkflowClosure) Reset() { *x = CompiledWorkflowClosure{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_compiler_proto_msgTypes[3] + mi := &file_flyteidl_core_compiler_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -223,7 +275,7 @@ func (x *CompiledWorkflowClosure) String() string { func (*CompiledWorkflowClosure) ProtoMessage() {} func (x *CompiledWorkflowClosure) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_compiler_proto_msgTypes[3] + mi := &file_flyteidl_core_compiler_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -236,7 +288,7 @@ func (x *CompiledWorkflowClosure) ProtoReflect() protoreflect.Message { // Deprecated: Use CompiledWorkflowClosure.ProtoReflect.Descriptor instead. func (*CompiledWorkflowClosure) Descriptor() ([]byte, []int) { - return file_flyteidl_core_compiler_proto_rawDescGZIP(), []int{3} + return file_flyteidl_core_compiler_proto_rawDescGZIP(), []int{4} } func (x *CompiledWorkflowClosure) GetPrimary() *CompiledWorkflow { @@ -260,6 +312,13 @@ func (x *CompiledWorkflowClosure) GetTasks() []*CompiledTask { return nil } +func (x *CompiledWorkflowClosure) GetLaunchPlans() []*CompiledLaunchPlan { + if x != nil { + return x.LaunchPlans + } + return nil +} + type ConnectionSet_IdList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -271,7 +330,7 @@ type ConnectionSet_IdList struct { func (x *ConnectionSet_IdList) Reset() { *x = ConnectionSet_IdList{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_compiler_proto_msgTypes[4] + mi := &file_flyteidl_core_compiler_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -284,7 +343,7 @@ func (x *ConnectionSet_IdList) String() string { func (*ConnectionSet_IdList) ProtoMessage() {} func (x *ConnectionSet_IdList) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_compiler_proto_msgTypes[4] + mi := &file_flyteidl_core_compiler_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -312,74 +371,88 @@ var File_flyteidl_core_compiler_proto protoreflect.FileDescriptor var file_flyteidl_core_compiler_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x1c, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 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, 0x87, 0x03, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x4c, 0x0a, 0x0a, 0x64, 0x6f, 0x77, 0x6e, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x46, 0x0a, 0x08, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x1a, 0x1a, - 0x0a, 0x06, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x1a, 0x62, 0x0a, 0x0f, 0x44, 0x6f, - 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x2e, 0x49, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x60, - 0x0a, 0x0d, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x2e, 0x49, - 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x8f, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x3b, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x1e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 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, 0x87, 0x03, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x4c, 0x0a, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x46, 0x0a, 0x08, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x47, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x54, 0x61, - 0x73, 0x6b, 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, 0x22, 0xcd, 0x01, 0x0a, 0x17, - 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 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, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, - 0x72, 0x79, 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 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, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 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, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 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, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x1a, 0x1a, 0x0a, + 0x06, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x1a, 0x62, 0x0a, 0x0f, 0x44, 0x6f, 0x77, + 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x2e, 0x49, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x60, 0x0a, + 0x0d, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x2e, 0x49, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x8f, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x3b, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x53, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x47, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, + 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 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, 0x22, + 0x93, 0x02, 0x0a, 0x17, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 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, 0x52, 0x07, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x5f, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 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, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x31, 0x0a, 0x05, + 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, + 0x69, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, + 0x44, 0x0a, 0x0c, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x50, 0x6c, 0x61, 0x6e, 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, 0x43, 0x6f, 0x6d, + 0x70, 0x69, 0x6c, 0x65, 0x72, 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 ( @@ -394,34 +467,38 @@ func file_flyteidl_core_compiler_proto_rawDescGZIP() []byte { return file_flyteidl_core_compiler_proto_rawDescData } -var file_flyteidl_core_compiler_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_flyteidl_core_compiler_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_flyteidl_core_compiler_proto_goTypes = []interface{}{ (*ConnectionSet)(nil), // 0: flyteidl.core.ConnectionSet (*CompiledWorkflow)(nil), // 1: flyteidl.core.CompiledWorkflow - (*CompiledTask)(nil), // 2: flyteidl.core.CompiledTask - (*CompiledWorkflowClosure)(nil), // 3: flyteidl.core.CompiledWorkflowClosure - (*ConnectionSet_IdList)(nil), // 4: flyteidl.core.ConnectionSet.IdList - nil, // 5: flyteidl.core.ConnectionSet.DownstreamEntry - nil, // 6: flyteidl.core.ConnectionSet.UpstreamEntry - (*WorkflowTemplate)(nil), // 7: flyteidl.core.WorkflowTemplate - (*TaskTemplate)(nil), // 8: flyteidl.core.TaskTemplate + (*CompiledLaunchPlan)(nil), // 2: flyteidl.core.CompiledLaunchPlan + (*CompiledTask)(nil), // 3: flyteidl.core.CompiledTask + (*CompiledWorkflowClosure)(nil), // 4: flyteidl.core.CompiledWorkflowClosure + (*ConnectionSet_IdList)(nil), // 5: flyteidl.core.ConnectionSet.IdList + nil, // 6: flyteidl.core.ConnectionSet.DownstreamEntry + nil, // 7: flyteidl.core.ConnectionSet.UpstreamEntry + (*WorkflowTemplate)(nil), // 8: flyteidl.core.WorkflowTemplate + (*LaunchPlanTemplate)(nil), // 9: flyteidl.core.LaunchPlanTemplate + (*TaskTemplate)(nil), // 10: flyteidl.core.TaskTemplate } var file_flyteidl_core_compiler_proto_depIdxs = []int32{ - 5, // 0: flyteidl.core.ConnectionSet.downstream:type_name -> flyteidl.core.ConnectionSet.DownstreamEntry - 6, // 1: flyteidl.core.ConnectionSet.upstream:type_name -> flyteidl.core.ConnectionSet.UpstreamEntry - 7, // 2: flyteidl.core.CompiledWorkflow.template:type_name -> flyteidl.core.WorkflowTemplate + 6, // 0: flyteidl.core.ConnectionSet.downstream:type_name -> flyteidl.core.ConnectionSet.DownstreamEntry + 7, // 1: flyteidl.core.ConnectionSet.upstream:type_name -> flyteidl.core.ConnectionSet.UpstreamEntry + 8, // 2: flyteidl.core.CompiledWorkflow.template:type_name -> flyteidl.core.WorkflowTemplate 0, // 3: flyteidl.core.CompiledWorkflow.connections:type_name -> flyteidl.core.ConnectionSet - 8, // 4: flyteidl.core.CompiledTask.template:type_name -> flyteidl.core.TaskTemplate - 1, // 5: flyteidl.core.CompiledWorkflowClosure.primary:type_name -> flyteidl.core.CompiledWorkflow - 1, // 6: flyteidl.core.CompiledWorkflowClosure.sub_workflows:type_name -> flyteidl.core.CompiledWorkflow - 2, // 7: flyteidl.core.CompiledWorkflowClosure.tasks:type_name -> flyteidl.core.CompiledTask - 4, // 8: flyteidl.core.ConnectionSet.DownstreamEntry.value:type_name -> flyteidl.core.ConnectionSet.IdList - 4, // 9: flyteidl.core.ConnectionSet.UpstreamEntry.value:type_name -> flyteidl.core.ConnectionSet.IdList - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 9, // 4: flyteidl.core.CompiledLaunchPlan.template:type_name -> flyteidl.core.LaunchPlanTemplate + 10, // 5: flyteidl.core.CompiledTask.template:type_name -> flyteidl.core.TaskTemplate + 1, // 6: flyteidl.core.CompiledWorkflowClosure.primary:type_name -> flyteidl.core.CompiledWorkflow + 1, // 7: flyteidl.core.CompiledWorkflowClosure.sub_workflows:type_name -> flyteidl.core.CompiledWorkflow + 3, // 8: flyteidl.core.CompiledWorkflowClosure.tasks:type_name -> flyteidl.core.CompiledTask + 2, // 9: flyteidl.core.CompiledWorkflowClosure.launch_plans:type_name -> flyteidl.core.CompiledLaunchPlan + 5, // 10: flyteidl.core.ConnectionSet.DownstreamEntry.value:type_name -> flyteidl.core.ConnectionSet.IdList + 5, // 11: flyteidl.core.ConnectionSet.UpstreamEntry.value:type_name -> flyteidl.core.ConnectionSet.IdList + 12, // [12:12] is the sub-list for method output_type + 12, // [12:12] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_flyteidl_core_compiler_proto_init() } @@ -429,6 +506,8 @@ func file_flyteidl_core_compiler_proto_init() { if File_flyteidl_core_compiler_proto != nil { return } + file_flyteidl_core_identifier_proto_init() + file_flyteidl_core_interface_proto_init() file_flyteidl_core_workflow_proto_init() file_flyteidl_core_tasks_proto_init() if !protoimpl.UnsafeEnabled { @@ -457,7 +536,7 @@ func file_flyteidl_core_compiler_proto_init() { } } file_flyteidl_core_compiler_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CompiledTask); i { + switch v := v.(*CompiledLaunchPlan); i { case 0: return &v.state case 1: @@ -469,7 +548,7 @@ func file_flyteidl_core_compiler_proto_init() { } } file_flyteidl_core_compiler_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CompiledWorkflowClosure); i { + switch v := v.(*CompiledTask); i { case 0: return &v.state case 1: @@ -481,6 +560,18 @@ func file_flyteidl_core_compiler_proto_init() { } } file_flyteidl_core_compiler_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CompiledWorkflowClosure); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_core_compiler_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConnectionSet_IdList); i { case 0: return &v.state @@ -499,7 +590,7 @@ func file_flyteidl_core_compiler_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_core_compiler_proto_rawDesc, NumEnums: 0, - NumMessages: 7, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, diff --git a/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go b/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go index cadfac41059..66127d2534f 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go @@ -842,6 +842,24 @@ type NodeMetadata struct { // // *NodeMetadata_Interruptible InterruptibleValue isNodeMetadata_InterruptibleValue `protobuf_oneof:"interruptible_value"` + // Identify whether a node should have it's outputs cached. + // + // Types that are assignable to CacheableValue: + // + // *NodeMetadata_Cacheable + CacheableValue isNodeMetadata_CacheableValue `protobuf_oneof:"cacheable_value"` + // The version of the cache to use. + // + // Types that are assignable to CacheVersionValue: + // + // *NodeMetadata_CacheVersion + CacheVersionValue isNodeMetadata_CacheVersionValue `protobuf_oneof:"cache_version_value"` + // Identify whether caching operations involving this node should be serialized. + // + // Types that are assignable to CacheSerializableValue: + // + // *NodeMetadata_CacheSerializable + CacheSerializableValue isNodeMetadata_CacheSerializableValue `protobuf_oneof:"cache_serializable_value"` } func (x *NodeMetadata) Reset() { @@ -911,6 +929,48 @@ func (x *NodeMetadata) GetInterruptible() bool { return false } +func (m *NodeMetadata) GetCacheableValue() isNodeMetadata_CacheableValue { + if m != nil { + return m.CacheableValue + } + return nil +} + +func (x *NodeMetadata) GetCacheable() bool { + if x, ok := x.GetCacheableValue().(*NodeMetadata_Cacheable); ok { + return x.Cacheable + } + return false +} + +func (m *NodeMetadata) GetCacheVersionValue() isNodeMetadata_CacheVersionValue { + if m != nil { + return m.CacheVersionValue + } + return nil +} + +func (x *NodeMetadata) GetCacheVersion() string { + if x, ok := x.GetCacheVersionValue().(*NodeMetadata_CacheVersion); ok { + return x.CacheVersion + } + return "" +} + +func (m *NodeMetadata) GetCacheSerializableValue() isNodeMetadata_CacheSerializableValue { + if m != nil { + return m.CacheSerializableValue + } + return nil +} + +func (x *NodeMetadata) GetCacheSerializable() bool { + if x, ok := x.GetCacheSerializableValue().(*NodeMetadata_CacheSerializable); ok { + return x.CacheSerializable + } + return false +} + type isNodeMetadata_InterruptibleValue interface { isNodeMetadata_InterruptibleValue() } @@ -921,6 +981,36 @@ type NodeMetadata_Interruptible struct { func (*NodeMetadata_Interruptible) isNodeMetadata_InterruptibleValue() {} +type isNodeMetadata_CacheableValue interface { + isNodeMetadata_CacheableValue() +} + +type NodeMetadata_Cacheable struct { + Cacheable bool `protobuf:"varint,7,opt,name=cacheable,proto3,oneof"` +} + +func (*NodeMetadata_Cacheable) isNodeMetadata_CacheableValue() {} + +type isNodeMetadata_CacheVersionValue interface { + isNodeMetadata_CacheVersionValue() +} + +type NodeMetadata_CacheVersion struct { + CacheVersion string `protobuf:"bytes,8,opt,name=cache_version,json=cacheVersion,proto3,oneof"` +} + +func (*NodeMetadata_CacheVersion) isNodeMetadata_CacheVersionValue() {} + +type isNodeMetadata_CacheSerializableValue interface { + isNodeMetadata_CacheSerializableValue() +} + +type NodeMetadata_CacheSerializable struct { + CacheSerializable bool `protobuf:"varint,9,opt,name=cache_serializable,json=cacheSerializable,proto3,oneof"` +} + +func (*NodeMetadata_CacheSerializable) isNodeMetadata_CacheSerializableValue() {} + // Links a variable to an alias. type Alias struct { state protoimpl.MessageState @@ -1456,6 +1546,64 @@ func (x *TaskNodeOverrides) GetExtendedResources() *ExtendedResources { return nil } +// A structure that uniquely identifies a launch plan in the system. +type LaunchPlanTemplate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A globally unique identifier for the launch plan. + Id *Identifier `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // The input and output interface for the launch plan + Interface *TypedInterface `protobuf:"bytes,2,opt,name=interface,proto3" json:"interface,omitempty"` +} + +func (x *LaunchPlanTemplate) Reset() { + *x = LaunchPlanTemplate{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_core_workflow_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LaunchPlanTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LaunchPlanTemplate) ProtoMessage() {} + +func (x *LaunchPlanTemplate) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_core_workflow_proto_msgTypes[17] + 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 LaunchPlanTemplate.ProtoReflect.Descriptor instead. +func (*LaunchPlanTemplate) Descriptor() ([]byte, []int) { + return file_flyteidl_core_workflow_proto_rawDescGZIP(), []int{17} +} + +func (x *LaunchPlanTemplate) GetId() *Identifier { + if x != nil { + return x.Id + } + return nil +} + +func (x *LaunchPlanTemplate) GetInterface() *TypedInterface { + if x != nil { + return x.Interface + } + return nil +} + var File_flyteidl_core_workflow_proto protoreflect.FileDescriptor var file_flyteidl_core_workflow_proto_rawDesc = []byte{ @@ -1565,7 +1713,7 @@ var file_flyteidl_core_workflow_proto_rawDesc = []byte{ 0x69, 0x6e, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x22, 0xce, 0x01, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x22, 0x8c, 0x03, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, @@ -1577,122 +1725,141 @@ var file_flyteidl_core_workflow_proto_rawDesc = []byte{ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, - 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2f, - 0x0a, 0x05, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, - 0x9f, 0x04, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x12, 0x3b, 0x0a, - 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0d, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, - 0x64, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, - 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, 0x61, 0x72, - 0x72, 0x61, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x22, 0xfc, 0x02, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x12, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 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, 0x4e, 0x0a, 0x0a, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6e, 0x46, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x09, 0x6f, 0x6e, 0x46, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 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, 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, 0x51, 0x0a, - 0x0f, 0x4f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x5f, 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41, - 0x54, 0x45, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x46, 0x41, 0x49, 0x4c, 0x5f, 0x41, - 0x46, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x01, - 0x22, 0x40, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, - 0x6c, 0x65, 0x22, 0xa2, 0x03, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, + 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x09, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, + 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, + 0x0a, 0x12, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x11, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x15, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x1a, 0x0a, 0x18, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2f, 0x0a, 0x05, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x9f, 0x04, + 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, - 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x05, - 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x66, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x64, - 0x65, 0x12, 0x54, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, - 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x36, 0x0a, - 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 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, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 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, + 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, + 0x2a, 0x0a, 0x11, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, + 0x12, 0x42, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x6f, 0x64, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, + 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x6f, + 0x64, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, + 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x72, + 0x72, 0x61, 0x79, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, 0x61, 0x72, 0x72, 0x61, + 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, + 0xfc, 0x02, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x12, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, + 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 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, 0x4e, 0x0a, 0x0a, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x09, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 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, 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, 0x51, 0x0a, 0x0f, 0x4f, + 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x14, + 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x5f, 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, + 0x4c, 0x59, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x46, 0x41, 0x49, 0x4c, 0x5f, 0x41, 0x46, 0x54, + 0x45, 0x52, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, + 0x44, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x01, 0x22, 0x40, + 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, + 0x22, 0xa2, 0x03, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, + 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, + 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x6e, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, + 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x54, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x73, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, + 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, + 0x61, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x42, 0xb3, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 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 ( @@ -1708,7 +1875,7 @@ func file_flyteidl_core_workflow_proto_rawDescGZIP() []byte { } var file_flyteidl_core_workflow_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_flyteidl_core_workflow_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_flyteidl_core_workflow_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_flyteidl_core_workflow_proto_goTypes = []interface{}{ (WorkflowMetadata_OnFailurePolicy)(0), // 0: flyteidl.core.WorkflowMetadata.OnFailurePolicy (*IfBlock)(nil), // 1: flyteidl.core.IfBlock @@ -1728,64 +1895,67 @@ var file_flyteidl_core_workflow_proto_goTypes = []interface{}{ (*WorkflowMetadataDefaults)(nil), // 15: flyteidl.core.WorkflowMetadataDefaults (*WorkflowTemplate)(nil), // 16: flyteidl.core.WorkflowTemplate (*TaskNodeOverrides)(nil), // 17: flyteidl.core.TaskNodeOverrides - nil, // 18: flyteidl.core.WorkflowMetadata.TagsEntry - (*BooleanExpression)(nil), // 19: flyteidl.core.BooleanExpression - (*Error)(nil), // 20: flyteidl.core.Error - (*Identifier)(nil), // 21: flyteidl.core.Identifier - (*LiteralType)(nil), // 22: flyteidl.core.LiteralType - (*durationpb.Duration)(nil), // 23: google.protobuf.Duration - (*RetryStrategy)(nil), // 24: flyteidl.core.RetryStrategy - (*Binding)(nil), // 25: flyteidl.core.Binding - (*QualityOfService)(nil), // 26: flyteidl.core.QualityOfService - (*TypedInterface)(nil), // 27: flyteidl.core.TypedInterface - (*Resources)(nil), // 28: flyteidl.core.Resources - (*ExtendedResources)(nil), // 29: flyteidl.core.ExtendedResources + (*LaunchPlanTemplate)(nil), // 18: flyteidl.core.LaunchPlanTemplate + nil, // 19: flyteidl.core.WorkflowMetadata.TagsEntry + (*BooleanExpression)(nil), // 20: flyteidl.core.BooleanExpression + (*Error)(nil), // 21: flyteidl.core.Error + (*Identifier)(nil), // 22: flyteidl.core.Identifier + (*LiteralType)(nil), // 23: flyteidl.core.LiteralType + (*durationpb.Duration)(nil), // 24: google.protobuf.Duration + (*RetryStrategy)(nil), // 25: flyteidl.core.RetryStrategy + (*Binding)(nil), // 26: flyteidl.core.Binding + (*QualityOfService)(nil), // 27: flyteidl.core.QualityOfService + (*TypedInterface)(nil), // 28: flyteidl.core.TypedInterface + (*Resources)(nil), // 29: flyteidl.core.Resources + (*ExtendedResources)(nil), // 30: flyteidl.core.ExtendedResources } var file_flyteidl_core_workflow_proto_depIdxs = []int32{ - 19, // 0: flyteidl.core.IfBlock.condition:type_name -> flyteidl.core.BooleanExpression + 20, // 0: flyteidl.core.IfBlock.condition:type_name -> flyteidl.core.BooleanExpression 13, // 1: flyteidl.core.IfBlock.then_node:type_name -> flyteidl.core.Node 1, // 2: flyteidl.core.IfElseBlock.case:type_name -> flyteidl.core.IfBlock 1, // 3: flyteidl.core.IfElseBlock.other:type_name -> flyteidl.core.IfBlock 13, // 4: flyteidl.core.IfElseBlock.else_node:type_name -> flyteidl.core.Node - 20, // 5: flyteidl.core.IfElseBlock.error:type_name -> flyteidl.core.Error + 21, // 5: flyteidl.core.IfElseBlock.error:type_name -> flyteidl.core.Error 2, // 6: flyteidl.core.BranchNode.if_else:type_name -> flyteidl.core.IfElseBlock - 21, // 7: flyteidl.core.TaskNode.reference_id:type_name -> flyteidl.core.Identifier + 22, // 7: flyteidl.core.TaskNode.reference_id:type_name -> flyteidl.core.Identifier 17, // 8: flyteidl.core.TaskNode.overrides:type_name -> flyteidl.core.TaskNodeOverrides - 21, // 9: flyteidl.core.WorkflowNode.launchplan_ref:type_name -> flyteidl.core.Identifier - 21, // 10: flyteidl.core.WorkflowNode.sub_workflow_ref:type_name -> flyteidl.core.Identifier - 22, // 11: flyteidl.core.SignalCondition.type:type_name -> flyteidl.core.LiteralType - 23, // 12: flyteidl.core.SleepCondition.duration:type_name -> google.protobuf.Duration + 22, // 9: flyteidl.core.WorkflowNode.launchplan_ref:type_name -> flyteidl.core.Identifier + 22, // 10: flyteidl.core.WorkflowNode.sub_workflow_ref:type_name -> flyteidl.core.Identifier + 23, // 11: flyteidl.core.SignalCondition.type:type_name -> flyteidl.core.LiteralType + 24, // 12: flyteidl.core.SleepCondition.duration:type_name -> google.protobuf.Duration 6, // 13: flyteidl.core.GateNode.approve:type_name -> flyteidl.core.ApproveCondition 7, // 14: flyteidl.core.GateNode.signal:type_name -> flyteidl.core.SignalCondition 8, // 15: flyteidl.core.GateNode.sleep:type_name -> flyteidl.core.SleepCondition 13, // 16: flyteidl.core.ArrayNode.node:type_name -> flyteidl.core.Node - 23, // 17: flyteidl.core.NodeMetadata.timeout:type_name -> google.protobuf.Duration - 24, // 18: flyteidl.core.NodeMetadata.retries:type_name -> flyteidl.core.RetryStrategy + 24, // 17: flyteidl.core.NodeMetadata.timeout:type_name -> google.protobuf.Duration + 25, // 18: flyteidl.core.NodeMetadata.retries:type_name -> flyteidl.core.RetryStrategy 11, // 19: flyteidl.core.Node.metadata:type_name -> flyteidl.core.NodeMetadata - 25, // 20: flyteidl.core.Node.inputs:type_name -> flyteidl.core.Binding + 26, // 20: flyteidl.core.Node.inputs:type_name -> flyteidl.core.Binding 12, // 21: flyteidl.core.Node.output_aliases:type_name -> flyteidl.core.Alias 4, // 22: flyteidl.core.Node.task_node:type_name -> flyteidl.core.TaskNode 5, // 23: flyteidl.core.Node.workflow_node:type_name -> flyteidl.core.WorkflowNode 3, // 24: flyteidl.core.Node.branch_node:type_name -> flyteidl.core.BranchNode 9, // 25: flyteidl.core.Node.gate_node:type_name -> flyteidl.core.GateNode 10, // 26: flyteidl.core.Node.array_node:type_name -> flyteidl.core.ArrayNode - 26, // 27: flyteidl.core.WorkflowMetadata.quality_of_service:type_name -> flyteidl.core.QualityOfService + 27, // 27: flyteidl.core.WorkflowMetadata.quality_of_service:type_name -> flyteidl.core.QualityOfService 0, // 28: flyteidl.core.WorkflowMetadata.on_failure:type_name -> flyteidl.core.WorkflowMetadata.OnFailurePolicy - 18, // 29: flyteidl.core.WorkflowMetadata.tags:type_name -> flyteidl.core.WorkflowMetadata.TagsEntry - 21, // 30: flyteidl.core.WorkflowTemplate.id:type_name -> flyteidl.core.Identifier + 19, // 29: flyteidl.core.WorkflowMetadata.tags:type_name -> flyteidl.core.WorkflowMetadata.TagsEntry + 22, // 30: flyteidl.core.WorkflowTemplate.id:type_name -> flyteidl.core.Identifier 14, // 31: flyteidl.core.WorkflowTemplate.metadata:type_name -> flyteidl.core.WorkflowMetadata - 27, // 32: flyteidl.core.WorkflowTemplate.interface:type_name -> flyteidl.core.TypedInterface + 28, // 32: flyteidl.core.WorkflowTemplate.interface:type_name -> flyteidl.core.TypedInterface 13, // 33: flyteidl.core.WorkflowTemplate.nodes:type_name -> flyteidl.core.Node - 25, // 34: flyteidl.core.WorkflowTemplate.outputs:type_name -> flyteidl.core.Binding + 26, // 34: flyteidl.core.WorkflowTemplate.outputs:type_name -> flyteidl.core.Binding 13, // 35: flyteidl.core.WorkflowTemplate.failure_node:type_name -> flyteidl.core.Node 15, // 36: flyteidl.core.WorkflowTemplate.metadata_defaults:type_name -> flyteidl.core.WorkflowMetadataDefaults - 28, // 37: flyteidl.core.TaskNodeOverrides.resources:type_name -> flyteidl.core.Resources - 29, // 38: flyteidl.core.TaskNodeOverrides.extended_resources:type_name -> flyteidl.core.ExtendedResources - 39, // [39:39] is the sub-list for method output_type - 39, // [39:39] is the sub-list for method input_type - 39, // [39:39] is the sub-list for extension type_name - 39, // [39:39] is the sub-list for extension extendee - 0, // [0:39] is the sub-list for field type_name + 29, // 37: flyteidl.core.TaskNodeOverrides.resources:type_name -> flyteidl.core.Resources + 30, // 38: flyteidl.core.TaskNodeOverrides.extended_resources:type_name -> flyteidl.core.ExtendedResources + 22, // 39: flyteidl.core.LaunchPlanTemplate.id:type_name -> flyteidl.core.Identifier + 28, // 40: flyteidl.core.LaunchPlanTemplate.interface:type_name -> flyteidl.core.TypedInterface + 41, // [41:41] is the sub-list for method output_type + 41, // [41:41] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_flyteidl_core_workflow_proto_init() } @@ -2006,6 +2176,18 @@ func file_flyteidl_core_workflow_proto_init() { return nil } } + file_flyteidl_core_workflow_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LaunchPlanTemplate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_flyteidl_core_workflow_proto_msgTypes[1].OneofWrappers = []interface{}{ (*IfElseBlock_ElseNode)(nil), @@ -2029,6 +2211,9 @@ func file_flyteidl_core_workflow_proto_init() { } file_flyteidl_core_workflow_proto_msgTypes[10].OneofWrappers = []interface{}{ (*NodeMetadata_Interruptible)(nil), + (*NodeMetadata_Cacheable)(nil), + (*NodeMetadata_CacheVersion)(nil), + (*NodeMetadata_CacheSerializable)(nil), } file_flyteidl_core_workflow_proto_msgTypes[12].OneofWrappers = []interface{}{ (*Node_TaskNode)(nil), @@ -2043,7 +2228,7 @@ func file_flyteidl_core_workflow_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_core_workflow_proto_rawDesc, NumEnums: 1, - NumMessages: 18, + NumMessages: 19, NumExtensions: 0, NumServices: 0, }, 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 590c8ccd2af..5b7e650ee36 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -11328,6 +11328,16 @@ }, "description": "Defines a 2-level tree where the root is a comparison operator and Operands are primitives or known variables.\nEach expression results in a boolean result." }, + "coreCompiledLaunchPlan": { + "type": "object", + "properties": { + "template": { + "$ref": "#/definitions/coreLaunchPlanTemplate", + "title": "Completely contained LaunchPlan Template" + } + }, + "title": "Output of the compilation step. This object represents one LaunchPlan. We store more metadata at this layer" + }, "coreCompiledTask": { "type": "object", "properties": { @@ -11374,6 +11384,14 @@ "$ref": "#/definitions/coreCompiledTask" }, "title": "Guaranteed that there will only exist one and only one task with a given id, i.e., every task has a unique id\n+required (at least 1)" + }, + "launch_plans": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coreCompiledLaunchPlan" + }, + "description": "A collection of launch plans that are compiled. Guaranteed that there will only exist one and only one launch plan\nwith a given id, i.e., every launch plan has a unique id." } }, "description": "A Compiled Workflow Closure contains all the information required to start a new execution, or to visualize a workflow\nand its details. The CompiledWorkflowClosure should always contain a primary workflow, that is the main workflow that\nwill being the execution. All subworkflows are denormalized. WorkflowNodes refer to the workflow identifiers of\ncompiled subworkflows." @@ -11757,6 +11775,20 @@ } } }, + "coreLaunchPlanTemplate": { + "type": "object", + "properties": { + "id": { + "$ref": "#/definitions/coreIdentifier", + "description": "A globally unique identifier for the launch plan." + }, + "interface": { + "$ref": "#/definitions/coreTypedInterface", + "title": "The input and output interface for the launch plan" + } + }, + "description": "A structure that uniquely identifies a launch plan in the system." + }, "coreLiteral": { "type": "object", "properties": { @@ -11964,6 +11996,15 @@ }, "interruptible": { "type": "boolean" + }, + "cacheable": { + "type": "boolean" + }, + "cache_version": { + "type": "string" + }, + "cache_serializable": { + "type": "boolean" } }, "description": "Defines extra information about the Node." diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 5fe0c697d85..b815ae4a82f 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -1279,6 +1279,58 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a CompiledLaunchPlan. */ + interface ICompiledLaunchPlan { + + /** CompiledLaunchPlan template */ + template?: (flyteidl.core.ILaunchPlanTemplate|null); + } + + /** Represents a CompiledLaunchPlan. */ + class CompiledLaunchPlan implements ICompiledLaunchPlan { + + /** + * Constructs a new CompiledLaunchPlan. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.ICompiledLaunchPlan); + + /** CompiledLaunchPlan template. */ + public template?: (flyteidl.core.ILaunchPlanTemplate|null); + + /** + * Creates a new CompiledLaunchPlan instance using the specified properties. + * @param [properties] Properties to set + * @returns CompiledLaunchPlan instance + */ + public static create(properties?: flyteidl.core.ICompiledLaunchPlan): flyteidl.core.CompiledLaunchPlan; + + /** + * Encodes the specified CompiledLaunchPlan message. Does not implicitly {@link flyteidl.core.CompiledLaunchPlan.verify|verify} messages. + * @param message CompiledLaunchPlan message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.ICompiledLaunchPlan, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CompiledLaunchPlan message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CompiledLaunchPlan + * @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.CompiledLaunchPlan; + + /** + * Verifies a CompiledLaunchPlan 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 CompiledTask. */ interface ICompiledTask { @@ -1342,6 +1394,9 @@ export namespace flyteidl { /** CompiledWorkflowClosure tasks */ tasks?: (flyteidl.core.ICompiledTask[]|null); + + /** CompiledWorkflowClosure launchPlans */ + launchPlans?: (flyteidl.core.ICompiledLaunchPlan[]|null); } /** Represents a CompiledWorkflowClosure. */ @@ -1362,6 +1417,9 @@ export namespace flyteidl { /** CompiledWorkflowClosure tasks. */ public tasks: flyteidl.core.ICompiledTask[]; + /** CompiledWorkflowClosure launchPlans. */ + public launchPlans: flyteidl.core.ICompiledLaunchPlan[]; + /** * Creates a new CompiledWorkflowClosure instance using the specified properties. * @param [properties] Properties to set @@ -1395,4255 +1453,4340 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } - /** Properties of an IfBlock. */ - interface IIfBlock { + /** Properties of a Variable. */ + interface IVariable { - /** IfBlock condition */ - condition?: (flyteidl.core.IBooleanExpression|null); + /** Variable type */ + type?: (flyteidl.core.ILiteralType|null); - /** IfBlock thenNode */ - thenNode?: (flyteidl.core.INode|null); + /** Variable description */ + description?: (string|null); + + /** Variable artifactPartialId */ + artifactPartialId?: (flyteidl.core.IArtifactID|null); + + /** Variable artifactTag */ + artifactTag?: (flyteidl.core.IArtifactTag|null); } - /** Represents an IfBlock. */ - class IfBlock implements IIfBlock { + /** Represents a Variable. */ + class Variable implements IVariable { /** - * Constructs a new IfBlock. + * Constructs a new Variable. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IIfBlock); + constructor(properties?: flyteidl.core.IVariable); - /** IfBlock condition. */ - public condition?: (flyteidl.core.IBooleanExpression|null); + /** Variable type. */ + public type?: (flyteidl.core.ILiteralType|null); - /** IfBlock thenNode. */ - public thenNode?: (flyteidl.core.INode|null); + /** Variable description. */ + public description: string; + + /** Variable artifactPartialId. */ + public artifactPartialId?: (flyteidl.core.IArtifactID|null); + + /** Variable artifactTag. */ + public artifactTag?: (flyteidl.core.IArtifactTag|null); /** - * Creates a new IfBlock instance using the specified properties. + * Creates a new Variable instance using the specified properties. * @param [properties] Properties to set - * @returns IfBlock instance + * @returns Variable instance */ - public static create(properties?: flyteidl.core.IIfBlock): flyteidl.core.IfBlock; + public static create(properties?: flyteidl.core.IVariable): flyteidl.core.Variable; /** - * Encodes the specified IfBlock message. Does not implicitly {@link flyteidl.core.IfBlock.verify|verify} messages. - * @param message IfBlock message or plain object to encode + * Encodes the specified Variable message. Does not implicitly {@link flyteidl.core.Variable.verify|verify} messages. + * @param message Variable message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IIfBlock, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IVariable, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an IfBlock message from the specified reader or buffer. + * Decodes a Variable message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns IfBlock + * @returns Variable * @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.IfBlock; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Variable; /** - * Verifies an IfBlock message. + * Verifies a Variable 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 IfElseBlock. */ - interface IIfElseBlock { - - /** IfElseBlock case */ - "case"?: (flyteidl.core.IIfBlock|null); - - /** IfElseBlock other */ - other?: (flyteidl.core.IIfBlock[]|null); - - /** IfElseBlock elseNode */ - elseNode?: (flyteidl.core.INode|null); + /** Properties of a VariableMap. */ + interface IVariableMap { - /** IfElseBlock error */ - error?: (flyteidl.core.IError|null); + /** VariableMap variables */ + variables?: ({ [k: string]: flyteidl.core.IVariable }|null); } - /** Represents an IfElseBlock. */ - class IfElseBlock implements IIfElseBlock { + /** Represents a VariableMap. */ + class VariableMap implements IVariableMap { /** - * Constructs a new IfElseBlock. + * Constructs a new VariableMap. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IIfElseBlock); - - /** IfElseBlock case. */ - public case?: (flyteidl.core.IIfBlock|null); - - /** IfElseBlock other. */ - public other: flyteidl.core.IIfBlock[]; - - /** IfElseBlock elseNode. */ - public elseNode?: (flyteidl.core.INode|null); - - /** IfElseBlock error. */ - public error?: (flyteidl.core.IError|null); + constructor(properties?: flyteidl.core.IVariableMap); - /** IfElseBlock default. */ - public default_?: ("elseNode"|"error"); + /** VariableMap variables. */ + public variables: { [k: string]: flyteidl.core.IVariable }; /** - * Creates a new IfElseBlock instance using the specified properties. + * Creates a new VariableMap instance using the specified properties. * @param [properties] Properties to set - * @returns IfElseBlock instance + * @returns VariableMap instance */ - public static create(properties?: flyteidl.core.IIfElseBlock): flyteidl.core.IfElseBlock; + public static create(properties?: flyteidl.core.IVariableMap): flyteidl.core.VariableMap; /** - * Encodes the specified IfElseBlock message. Does not implicitly {@link flyteidl.core.IfElseBlock.verify|verify} messages. - * @param message IfElseBlock message or plain object to encode + * Encodes the specified VariableMap message. Does not implicitly {@link flyteidl.core.VariableMap.verify|verify} messages. + * @param message VariableMap message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IIfElseBlock, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IVariableMap, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an IfElseBlock message from the specified reader or buffer. + * Decodes a VariableMap message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns IfElseBlock + * @returns VariableMap * @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.IfElseBlock; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.VariableMap; /** - * Verifies an IfElseBlock message. + * Verifies a VariableMap 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 BranchNode. */ - interface IBranchNode { + /** Properties of a TypedInterface. */ + interface ITypedInterface { - /** BranchNode ifElse */ - ifElse?: (flyteidl.core.IIfElseBlock|null); + /** TypedInterface inputs */ + inputs?: (flyteidl.core.IVariableMap|null); + + /** TypedInterface outputs */ + outputs?: (flyteidl.core.IVariableMap|null); } - /** Represents a BranchNode. */ - class BranchNode implements IBranchNode { + /** Represents a TypedInterface. */ + class TypedInterface implements ITypedInterface { /** - * Constructs a new BranchNode. + * Constructs a new TypedInterface. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBranchNode); + constructor(properties?: flyteidl.core.ITypedInterface); - /** BranchNode ifElse. */ - public ifElse?: (flyteidl.core.IIfElseBlock|null); + /** TypedInterface inputs. */ + public inputs?: (flyteidl.core.IVariableMap|null); + + /** TypedInterface outputs. */ + public outputs?: (flyteidl.core.IVariableMap|null); /** - * Creates a new BranchNode instance using the specified properties. + * Creates a new TypedInterface instance using the specified properties. * @param [properties] Properties to set - * @returns BranchNode instance + * @returns TypedInterface instance */ - public static create(properties?: flyteidl.core.IBranchNode): flyteidl.core.BranchNode; + public static create(properties?: flyteidl.core.ITypedInterface): flyteidl.core.TypedInterface; /** - * Encodes the specified BranchNode message. Does not implicitly {@link flyteidl.core.BranchNode.verify|verify} messages. - * @param message BranchNode message or plain object to encode + * Encodes the specified TypedInterface message. Does not implicitly {@link flyteidl.core.TypedInterface.verify|verify} messages. + * @param message TypedInterface message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBranchNode, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ITypedInterface, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BranchNode message from the specified reader or buffer. + * Decodes a TypedInterface message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BranchNode + * @returns TypedInterface * @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.BranchNode; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.TypedInterface; /** - * Verifies a BranchNode message. + * Verifies a TypedInterface 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 TaskNode. */ - interface ITaskNode { + /** Properties of a Parameter. */ + interface IParameter { - /** TaskNode referenceId */ - referenceId?: (flyteidl.core.IIdentifier|null); + /** Parameter var */ + "var"?: (flyteidl.core.IVariable|null); - /** TaskNode overrides */ - overrides?: (flyteidl.core.ITaskNodeOverrides|null); + /** Parameter default */ + "default"?: (flyteidl.core.ILiteral|null); + + /** Parameter required */ + required?: (boolean|null); + + /** Parameter artifactQuery */ + artifactQuery?: (flyteidl.core.IArtifactQuery|null); + + /** Parameter artifactId */ + artifactId?: (flyteidl.core.IArtifactID|null); } - /** Represents a TaskNode. */ - class TaskNode implements ITaskNode { + /** Represents a Parameter. */ + class Parameter implements IParameter { /** - * Constructs a new TaskNode. + * Constructs a new Parameter. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ITaskNode); + constructor(properties?: flyteidl.core.IParameter); - /** TaskNode referenceId. */ - public referenceId?: (flyteidl.core.IIdentifier|null); + /** Parameter var. */ + public var?: (flyteidl.core.IVariable|null); - /** TaskNode overrides. */ - public overrides?: (flyteidl.core.ITaskNodeOverrides|null); + /** Parameter default. */ + public default?: (flyteidl.core.ILiteral|null); - /** TaskNode reference. */ - public reference?: "referenceId"; + /** Parameter required. */ + public required: boolean; + + /** Parameter artifactQuery. */ + public artifactQuery?: (flyteidl.core.IArtifactQuery|null); + + /** Parameter artifactId. */ + public artifactId?: (flyteidl.core.IArtifactID|null); + + /** Parameter behavior. */ + public behavior?: ("default"|"required"|"artifactQuery"|"artifactId"); /** - * Creates a new TaskNode instance using the specified properties. + * Creates a new Parameter instance using the specified properties. * @param [properties] Properties to set - * @returns TaskNode instance + * @returns Parameter instance */ - public static create(properties?: flyteidl.core.ITaskNode): flyteidl.core.TaskNode; + public static create(properties?: flyteidl.core.IParameter): flyteidl.core.Parameter; /** - * Encodes the specified TaskNode message. Does not implicitly {@link flyteidl.core.TaskNode.verify|verify} messages. - * @param message TaskNode message or plain object to encode + * Encodes the specified Parameter message. Does not implicitly {@link flyteidl.core.Parameter.verify|verify} messages. + * @param message Parameter message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ITaskNode, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IParameter, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TaskNode message from the specified reader or buffer. + * Decodes a Parameter message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TaskNode + * @returns Parameter * @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.TaskNode; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Parameter; /** - * Verifies a TaskNode message. + * Verifies a Parameter 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 WorkflowNode. */ - interface IWorkflowNode { - - /** WorkflowNode launchplanRef */ - launchplanRef?: (flyteidl.core.IIdentifier|null); + /** Properties of a ParameterMap. */ + interface IParameterMap { - /** WorkflowNode subWorkflowRef */ - subWorkflowRef?: (flyteidl.core.IIdentifier|null); + /** ParameterMap parameters */ + parameters?: ({ [k: string]: flyteidl.core.IParameter }|null); } - /** Represents a WorkflowNode. */ - class WorkflowNode implements IWorkflowNode { + /** Represents a ParameterMap. */ + class ParameterMap implements IParameterMap { /** - * Constructs a new WorkflowNode. + * Constructs a new ParameterMap. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IWorkflowNode); - - /** WorkflowNode launchplanRef. */ - public launchplanRef?: (flyteidl.core.IIdentifier|null); - - /** WorkflowNode subWorkflowRef. */ - public subWorkflowRef?: (flyteidl.core.IIdentifier|null); + constructor(properties?: flyteidl.core.IParameterMap); - /** WorkflowNode reference. */ - public reference?: ("launchplanRef"|"subWorkflowRef"); + /** ParameterMap parameters. */ + public parameters: { [k: string]: flyteidl.core.IParameter }; /** - * Creates a new WorkflowNode instance using the specified properties. + * Creates a new ParameterMap instance using the specified properties. * @param [properties] Properties to set - * @returns WorkflowNode instance + * @returns ParameterMap instance */ - public static create(properties?: flyteidl.core.IWorkflowNode): flyteidl.core.WorkflowNode; + public static create(properties?: flyteidl.core.IParameterMap): flyteidl.core.ParameterMap; /** - * Encodes the specified WorkflowNode message. Does not implicitly {@link flyteidl.core.WorkflowNode.verify|verify} messages. - * @param message WorkflowNode message or plain object to encode + * Encodes the specified ParameterMap message. Does not implicitly {@link flyteidl.core.ParameterMap.verify|verify} messages. + * @param message ParameterMap message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IWorkflowNode, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IParameterMap, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a WorkflowNode message from the specified reader or buffer. + * Decodes a ParameterMap message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns WorkflowNode + * @returns ParameterMap * @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.WorkflowNode; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.ParameterMap; /** - * Verifies a WorkflowNode message. + * Verifies a ParameterMap 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 ApproveCondition. */ - interface IApproveCondition { + /** SimpleType enum. */ + enum SimpleType { + NONE = 0, + INTEGER = 1, + FLOAT = 2, + STRING = 3, + BOOLEAN = 4, + DATETIME = 5, + DURATION = 6, + BINARY = 7, + ERROR = 8, + STRUCT = 9 + } - /** ApproveCondition signalId */ - signalId?: (string|null); + /** Properties of a SchemaType. */ + interface ISchemaType { + + /** SchemaType columns */ + columns?: (flyteidl.core.SchemaType.ISchemaColumn[]|null); } - /** Represents an ApproveCondition. */ - class ApproveCondition implements IApproveCondition { + /** Represents a SchemaType. */ + class SchemaType implements ISchemaType { /** - * Constructs a new ApproveCondition. + * Constructs a new SchemaType. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IApproveCondition); + constructor(properties?: flyteidl.core.ISchemaType); - /** ApproveCondition signalId. */ - public signalId: string; + /** SchemaType columns. */ + public columns: flyteidl.core.SchemaType.ISchemaColumn[]; /** - * Creates a new ApproveCondition instance using the specified properties. + * Creates a new SchemaType instance using the specified properties. * @param [properties] Properties to set - * @returns ApproveCondition instance + * @returns SchemaType instance */ - public static create(properties?: flyteidl.core.IApproveCondition): flyteidl.core.ApproveCondition; + public static create(properties?: flyteidl.core.ISchemaType): flyteidl.core.SchemaType; /** - * Encodes the specified ApproveCondition message. Does not implicitly {@link flyteidl.core.ApproveCondition.verify|verify} messages. - * @param message ApproveCondition message or plain object to encode + * Encodes the specified SchemaType message. Does not implicitly {@link flyteidl.core.SchemaType.verify|verify} messages. + * @param message SchemaType message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IApproveCondition, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ISchemaType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ApproveCondition message from the specified reader or buffer. + * Decodes a SchemaType message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ApproveCondition + * @returns SchemaType * @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.ApproveCondition; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.SchemaType; /** - * Verifies an ApproveCondition message. + * Verifies a SchemaType 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 SignalCondition. */ - interface ISignalCondition { + namespace SchemaType { - /** SignalCondition signalId */ - signalId?: (string|null); + /** Properties of a SchemaColumn. */ + interface ISchemaColumn { - /** SignalCondition type */ - type?: (flyteidl.core.ILiteralType|null); + /** SchemaColumn name */ + name?: (string|null); - /** SignalCondition outputVariableName */ - outputVariableName?: (string|null); + /** SchemaColumn type */ + type?: (flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType|null); + } + + /** Represents a SchemaColumn. */ + class SchemaColumn implements ISchemaColumn { + + /** + * Constructs a new SchemaColumn. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.SchemaType.ISchemaColumn); + + /** SchemaColumn name. */ + public name: string; + + /** SchemaColumn type. */ + public type: flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType; + + /** + * Creates a new SchemaColumn instance using the specified properties. + * @param [properties] Properties to set + * @returns SchemaColumn instance + */ + public static create(properties?: flyteidl.core.SchemaType.ISchemaColumn): flyteidl.core.SchemaType.SchemaColumn; + + /** + * Encodes the specified SchemaColumn message. Does not implicitly {@link flyteidl.core.SchemaType.SchemaColumn.verify|verify} messages. + * @param message SchemaColumn message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.SchemaType.ISchemaColumn, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SchemaColumn message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SchemaColumn + * @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.SchemaType.SchemaColumn; + + /** + * Verifies a SchemaColumn 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); + } + + namespace SchemaColumn { + + /** SchemaColumnType enum. */ + enum SchemaColumnType { + INTEGER = 0, + FLOAT = 1, + STRING = 2, + BOOLEAN = 3, + DATETIME = 4, + DURATION = 5 + } + } } - /** Represents a SignalCondition. */ - class SignalCondition implements ISignalCondition { + /** Properties of a StructuredDatasetType. */ + interface IStructuredDatasetType { + + /** StructuredDatasetType columns */ + columns?: (flyteidl.core.StructuredDatasetType.IDatasetColumn[]|null); + + /** StructuredDatasetType format */ + format?: (string|null); + + /** StructuredDatasetType externalSchemaType */ + externalSchemaType?: (string|null); + + /** StructuredDatasetType externalSchemaBytes */ + externalSchemaBytes?: (Uint8Array|null); + } + + /** Represents a StructuredDatasetType. */ + class StructuredDatasetType implements IStructuredDatasetType { /** - * Constructs a new SignalCondition. + * Constructs a new StructuredDatasetType. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ISignalCondition); + constructor(properties?: flyteidl.core.IStructuredDatasetType); - /** SignalCondition signalId. */ - public signalId: string; + /** StructuredDatasetType columns. */ + public columns: flyteidl.core.StructuredDatasetType.IDatasetColumn[]; - /** SignalCondition type. */ - public type?: (flyteidl.core.ILiteralType|null); + /** StructuredDatasetType format. */ + public format: string; - /** SignalCondition outputVariableName. */ - public outputVariableName: string; + /** StructuredDatasetType externalSchemaType. */ + public externalSchemaType: string; + + /** StructuredDatasetType externalSchemaBytes. */ + public externalSchemaBytes: Uint8Array; /** - * Creates a new SignalCondition instance using the specified properties. + * Creates a new StructuredDatasetType instance using the specified properties. * @param [properties] Properties to set - * @returns SignalCondition instance + * @returns StructuredDatasetType instance */ - public static create(properties?: flyteidl.core.ISignalCondition): flyteidl.core.SignalCondition; + public static create(properties?: flyteidl.core.IStructuredDatasetType): flyteidl.core.StructuredDatasetType; /** - * Encodes the specified SignalCondition message. Does not implicitly {@link flyteidl.core.SignalCondition.verify|verify} messages. - * @param message SignalCondition message or plain object to encode + * Encodes the specified StructuredDatasetType message. Does not implicitly {@link flyteidl.core.StructuredDatasetType.verify|verify} messages. + * @param message StructuredDatasetType message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ISignalCondition, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IStructuredDatasetType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a SignalCondition message from the specified reader or buffer. + * Decodes a StructuredDatasetType message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns SignalCondition + * @returns StructuredDatasetType * @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.SignalCondition; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.StructuredDatasetType; /** - * Verifies a SignalCondition message. + * Verifies a StructuredDatasetType 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 SleepCondition. */ - interface ISleepCondition { + namespace StructuredDatasetType { - /** SleepCondition duration */ - duration?: (google.protobuf.IDuration|null); + /** Properties of a DatasetColumn. */ + interface IDatasetColumn { + + /** DatasetColumn name */ + name?: (string|null); + + /** DatasetColumn literalType */ + literalType?: (flyteidl.core.ILiteralType|null); + } + + /** Represents a DatasetColumn. */ + class DatasetColumn implements IDatasetColumn { + + /** + * Constructs a new DatasetColumn. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.StructuredDatasetType.IDatasetColumn); + + /** DatasetColumn name. */ + public name: string; + + /** DatasetColumn literalType. */ + public literalType?: (flyteidl.core.ILiteralType|null); + + /** + * Creates a new DatasetColumn instance using the specified properties. + * @param [properties] Properties to set + * @returns DatasetColumn instance + */ + public static create(properties?: flyteidl.core.StructuredDatasetType.IDatasetColumn): flyteidl.core.StructuredDatasetType.DatasetColumn; + + /** + * Encodes the specified DatasetColumn message. Does not implicitly {@link flyteidl.core.StructuredDatasetType.DatasetColumn.verify|verify} messages. + * @param message DatasetColumn message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.StructuredDatasetType.IDatasetColumn, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DatasetColumn message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DatasetColumn + * @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.StructuredDatasetType.DatasetColumn; + + /** + * Verifies a DatasetColumn 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); + } } - /** Represents a SleepCondition. */ - class SleepCondition implements ISleepCondition { + /** Properties of a BlobType. */ + interface IBlobType { + + /** BlobType format */ + format?: (string|null); + + /** BlobType dimensionality */ + dimensionality?: (flyteidl.core.BlobType.BlobDimensionality|null); + } + + /** Represents a BlobType. */ + class BlobType implements IBlobType { /** - * Constructs a new SleepCondition. + * Constructs a new BlobType. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ISleepCondition); + constructor(properties?: flyteidl.core.IBlobType); - /** SleepCondition duration. */ - public duration?: (google.protobuf.IDuration|null); + /** BlobType format. */ + public format: string; + + /** BlobType dimensionality. */ + public dimensionality: flyteidl.core.BlobType.BlobDimensionality; /** - * Creates a new SleepCondition instance using the specified properties. + * Creates a new BlobType instance using the specified properties. * @param [properties] Properties to set - * @returns SleepCondition instance + * @returns BlobType instance */ - public static create(properties?: flyteidl.core.ISleepCondition): flyteidl.core.SleepCondition; + public static create(properties?: flyteidl.core.IBlobType): flyteidl.core.BlobType; /** - * Encodes the specified SleepCondition message. Does not implicitly {@link flyteidl.core.SleepCondition.verify|verify} messages. - * @param message SleepCondition message or plain object to encode + * Encodes the specified BlobType message. Does not implicitly {@link flyteidl.core.BlobType.verify|verify} messages. + * @param message BlobType message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ISleepCondition, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IBlobType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a SleepCondition message from the specified reader or buffer. + * Decodes a BlobType message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns SleepCondition + * @returns BlobType * @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.SleepCondition; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.BlobType; /** - * Verifies a SleepCondition message. + * Verifies a BlobType 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 GateNode. */ - interface IGateNode { + namespace BlobType { - /** GateNode approve */ - approve?: (flyteidl.core.IApproveCondition|null); + /** BlobDimensionality enum. */ + enum BlobDimensionality { + SINGLE = 0, + MULTIPART = 1 + } + } - /** GateNode signal */ - signal?: (flyteidl.core.ISignalCondition|null); + /** Properties of an EnumType. */ + interface IEnumType { - /** GateNode sleep */ - sleep?: (flyteidl.core.ISleepCondition|null); + /** EnumType values */ + values?: (string[]|null); } - /** Represents a GateNode. */ - class GateNode implements IGateNode { + /** Represents an EnumType. */ + class EnumType implements IEnumType { /** - * Constructs a new GateNode. + * Constructs a new EnumType. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IGateNode); - - /** GateNode approve. */ - public approve?: (flyteidl.core.IApproveCondition|null); - - /** GateNode signal. */ - public signal?: (flyteidl.core.ISignalCondition|null); - - /** GateNode sleep. */ - public sleep?: (flyteidl.core.ISleepCondition|null); + constructor(properties?: flyteidl.core.IEnumType); - /** GateNode condition. */ - public condition?: ("approve"|"signal"|"sleep"); + /** EnumType values. */ + public values: string[]; /** - * Creates a new GateNode instance using the specified properties. + * Creates a new EnumType instance using the specified properties. * @param [properties] Properties to set - * @returns GateNode instance + * @returns EnumType instance */ - public static create(properties?: flyteidl.core.IGateNode): flyteidl.core.GateNode; + public static create(properties?: flyteidl.core.IEnumType): flyteidl.core.EnumType; /** - * Encodes the specified GateNode message. Does not implicitly {@link flyteidl.core.GateNode.verify|verify} messages. - * @param message GateNode message or plain object to encode + * Encodes the specified EnumType message. Does not implicitly {@link flyteidl.core.EnumType.verify|verify} messages. + * @param message EnumType message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IGateNode, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IEnumType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a GateNode message from the specified reader or buffer. + * Decodes an EnumType message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns GateNode + * @returns EnumType * @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.GateNode; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.EnumType; /** - * Verifies a GateNode message. + * Verifies an EnumType 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 ArrayNode. */ - interface IArrayNode { - - /** ArrayNode node */ - node?: (flyteidl.core.INode|null); - - /** ArrayNode parallelism */ - parallelism?: (number|null); - - /** ArrayNode minSuccesses */ - minSuccesses?: (number|null); + /** Properties of an UnionType. */ + interface IUnionType { - /** ArrayNode minSuccessRatio */ - minSuccessRatio?: (number|null); + /** UnionType variants */ + variants?: (flyteidl.core.ILiteralType[]|null); } - /** Represents an ArrayNode. */ - class ArrayNode implements IArrayNode { + /** Represents an UnionType. */ + class UnionType implements IUnionType { /** - * Constructs a new ArrayNode. + * Constructs a new UnionType. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IArrayNode); - - /** ArrayNode node. */ - public node?: (flyteidl.core.INode|null); - - /** ArrayNode parallelism. */ - public parallelism: number; - - /** ArrayNode minSuccesses. */ - public minSuccesses: number; - - /** ArrayNode minSuccessRatio. */ - public minSuccessRatio: number; + constructor(properties?: flyteidl.core.IUnionType); - /** ArrayNode successCriteria. */ - public successCriteria?: ("minSuccesses"|"minSuccessRatio"); + /** UnionType variants. */ + public variants: flyteidl.core.ILiteralType[]; /** - * Creates a new ArrayNode instance using the specified properties. + * Creates a new UnionType instance using the specified properties. * @param [properties] Properties to set - * @returns ArrayNode instance + * @returns UnionType instance */ - public static create(properties?: flyteidl.core.IArrayNode): flyteidl.core.ArrayNode; + public static create(properties?: flyteidl.core.IUnionType): flyteidl.core.UnionType; /** - * Encodes the specified ArrayNode message. Does not implicitly {@link flyteidl.core.ArrayNode.verify|verify} messages. - * @param message ArrayNode message or plain object to encode + * Encodes the specified UnionType message. Does not implicitly {@link flyteidl.core.UnionType.verify|verify} messages. + * @param message UnionType message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IArrayNode, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IUnionType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ArrayNode message from the specified reader or buffer. + * Decodes an UnionType message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ArrayNode + * @returns UnionType * @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.ArrayNode; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.UnionType; /** - * Verifies an ArrayNode message. + * Verifies an UnionType 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 NodeMetadata. */ - interface INodeMetadata { - - /** NodeMetadata name */ - name?: (string|null); - - /** NodeMetadata timeout */ - timeout?: (google.protobuf.IDuration|null); + /** Properties of a TypeStructure. */ + interface ITypeStructure { - /** NodeMetadata retries */ - retries?: (flyteidl.core.IRetryStrategy|null); + /** TypeStructure tag */ + tag?: (string|null); - /** NodeMetadata interruptible */ - interruptible?: (boolean|null); + /** TypeStructure dataclassType */ + dataclassType?: ({ [k: string]: flyteidl.core.ILiteralType }|null); } - /** Represents a NodeMetadata. */ - class NodeMetadata implements INodeMetadata { + /** Represents a TypeStructure. */ + class TypeStructure implements ITypeStructure { /** - * Constructs a new NodeMetadata. + * Constructs a new TypeStructure. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.INodeMetadata); + constructor(properties?: flyteidl.core.ITypeStructure); - /** NodeMetadata name. */ - public name: string; + /** TypeStructure tag. */ + public tag: string; - /** NodeMetadata timeout. */ - public timeout?: (google.protobuf.IDuration|null); - - /** NodeMetadata retries. */ - public retries?: (flyteidl.core.IRetryStrategy|null); - - /** NodeMetadata interruptible. */ - public interruptible: boolean; - - /** NodeMetadata interruptibleValue. */ - public interruptibleValue?: "interruptible"; + /** TypeStructure dataclassType. */ + public dataclassType: { [k: string]: flyteidl.core.ILiteralType }; /** - * Creates a new NodeMetadata instance using the specified properties. + * Creates a new TypeStructure instance using the specified properties. * @param [properties] Properties to set - * @returns NodeMetadata instance + * @returns TypeStructure instance */ - public static create(properties?: flyteidl.core.INodeMetadata): flyteidl.core.NodeMetadata; + public static create(properties?: flyteidl.core.ITypeStructure): flyteidl.core.TypeStructure; /** - * Encodes the specified NodeMetadata message. Does not implicitly {@link flyteidl.core.NodeMetadata.verify|verify} messages. - * @param message NodeMetadata message or plain object to encode + * Encodes the specified TypeStructure message. Does not implicitly {@link flyteidl.core.TypeStructure.verify|verify} messages. + * @param message TypeStructure message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.INodeMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ITypeStructure, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a NodeMetadata message from the specified reader or buffer. + * Decodes a TypeStructure message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns NodeMetadata + * @returns TypeStructure * @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.NodeMetadata; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.TypeStructure; /** - * Verifies a NodeMetadata message. + * Verifies a TypeStructure 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 Alias. */ - interface IAlias { - - /** Alias var */ - "var"?: (string|null); + /** Properties of a TypeAnnotation. */ + interface ITypeAnnotation { - /** Alias alias */ - alias?: (string|null); + /** TypeAnnotation annotations */ + annotations?: (google.protobuf.IStruct|null); } - /** Represents an Alias. */ - class Alias implements IAlias { + /** Represents a TypeAnnotation. */ + class TypeAnnotation implements ITypeAnnotation { /** - * Constructs a new Alias. + * Constructs a new TypeAnnotation. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IAlias); - - /** Alias var. */ - public var: string; + constructor(properties?: flyteidl.core.ITypeAnnotation); - /** Alias alias. */ - public alias: string; + /** TypeAnnotation annotations. */ + public annotations?: (google.protobuf.IStruct|null); /** - * Creates a new Alias instance using the specified properties. + * Creates a new TypeAnnotation instance using the specified properties. * @param [properties] Properties to set - * @returns Alias instance + * @returns TypeAnnotation instance */ - public static create(properties?: flyteidl.core.IAlias): flyteidl.core.Alias; + public static create(properties?: flyteidl.core.ITypeAnnotation): flyteidl.core.TypeAnnotation; /** - * Encodes the specified Alias message. Does not implicitly {@link flyteidl.core.Alias.verify|verify} messages. - * @param message Alias message or plain object to encode + * Encodes the specified TypeAnnotation message. Does not implicitly {@link flyteidl.core.TypeAnnotation.verify|verify} messages. + * @param message TypeAnnotation message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IAlias, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ITypeAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Alias message from the specified reader or buffer. + * Decodes a TypeAnnotation message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Alias + * @returns TypeAnnotation * @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.Alias; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.TypeAnnotation; /** - * Verifies an Alias message. + * Verifies a TypeAnnotation 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 Node. */ - interface INode { + /** Properties of a LiteralType. */ + interface ILiteralType { - /** Node id */ - id?: (string|null); + /** LiteralType simple */ + simple?: (flyteidl.core.SimpleType|null); - /** Node metadata */ - metadata?: (flyteidl.core.INodeMetadata|null); + /** LiteralType schema */ + schema?: (flyteidl.core.ISchemaType|null); - /** Node inputs */ - inputs?: (flyteidl.core.IBinding[]|null); + /** LiteralType collectionType */ + collectionType?: (flyteidl.core.ILiteralType|null); - /** Node upstreamNodeIds */ - upstreamNodeIds?: (string[]|null); + /** LiteralType mapValueType */ + mapValueType?: (flyteidl.core.ILiteralType|null); - /** Node outputAliases */ - outputAliases?: (flyteidl.core.IAlias[]|null); + /** LiteralType blob */ + blob?: (flyteidl.core.IBlobType|null); - /** Node taskNode */ - taskNode?: (flyteidl.core.ITaskNode|null); + /** LiteralType enumType */ + enumType?: (flyteidl.core.IEnumType|null); - /** Node workflowNode */ - workflowNode?: (flyteidl.core.IWorkflowNode|null); + /** LiteralType structuredDatasetType */ + structuredDatasetType?: (flyteidl.core.IStructuredDatasetType|null); - /** Node branchNode */ - branchNode?: (flyteidl.core.IBranchNode|null); + /** LiteralType unionType */ + unionType?: (flyteidl.core.IUnionType|null); - /** Node gateNode */ - gateNode?: (flyteidl.core.IGateNode|null); + /** LiteralType metadata */ + metadata?: (google.protobuf.IStruct|null); - /** Node arrayNode */ - arrayNode?: (flyteidl.core.IArrayNode|null); + /** LiteralType annotation */ + annotation?: (flyteidl.core.ITypeAnnotation|null); + + /** LiteralType structure */ + structure?: (flyteidl.core.ITypeStructure|null); } - /** Represents a Node. */ - class Node implements INode { + /** Represents a LiteralType. */ + class LiteralType implements ILiteralType { /** - * Constructs a new Node. + * Constructs a new LiteralType. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.INode); + constructor(properties?: flyteidl.core.ILiteralType); - /** Node id. */ - public id: string; + /** LiteralType simple. */ + public simple: flyteidl.core.SimpleType; - /** Node metadata. */ - public metadata?: (flyteidl.core.INodeMetadata|null); + /** LiteralType schema. */ + public schema?: (flyteidl.core.ISchemaType|null); - /** Node inputs. */ - public inputs: flyteidl.core.IBinding[]; + /** LiteralType collectionType. */ + public collectionType?: (flyteidl.core.ILiteralType|null); - /** Node upstreamNodeIds. */ - public upstreamNodeIds: string[]; + /** LiteralType mapValueType. */ + public mapValueType?: (flyteidl.core.ILiteralType|null); - /** Node outputAliases. */ - public outputAliases: flyteidl.core.IAlias[]; + /** LiteralType blob. */ + public blob?: (flyteidl.core.IBlobType|null); - /** Node taskNode. */ - public taskNode?: (flyteidl.core.ITaskNode|null); + /** LiteralType enumType. */ + public enumType?: (flyteidl.core.IEnumType|null); - /** Node workflowNode. */ - public workflowNode?: (flyteidl.core.IWorkflowNode|null); + /** LiteralType structuredDatasetType. */ + public structuredDatasetType?: (flyteidl.core.IStructuredDatasetType|null); - /** Node branchNode. */ - public branchNode?: (flyteidl.core.IBranchNode|null); + /** LiteralType unionType. */ + public unionType?: (flyteidl.core.IUnionType|null); - /** Node gateNode. */ - public gateNode?: (flyteidl.core.IGateNode|null); + /** LiteralType metadata. */ + public metadata?: (google.protobuf.IStruct|null); - /** Node arrayNode. */ - public arrayNode?: (flyteidl.core.IArrayNode|null); + /** LiteralType annotation. */ + public annotation?: (flyteidl.core.ITypeAnnotation|null); - /** Node target. */ - public target?: ("taskNode"|"workflowNode"|"branchNode"|"gateNode"|"arrayNode"); + /** LiteralType structure. */ + public structure?: (flyteidl.core.ITypeStructure|null); + + /** LiteralType type. */ + public type?: ("simple"|"schema"|"collectionType"|"mapValueType"|"blob"|"enumType"|"structuredDatasetType"|"unionType"); /** - * Creates a new Node instance using the specified properties. + * Creates a new LiteralType instance using the specified properties. * @param [properties] Properties to set - * @returns Node instance + * @returns LiteralType instance */ - public static create(properties?: flyteidl.core.INode): flyteidl.core.Node; + public static create(properties?: flyteidl.core.ILiteralType): flyteidl.core.LiteralType; /** - * Encodes the specified Node message. Does not implicitly {@link flyteidl.core.Node.verify|verify} messages. - * @param message Node message or plain object to encode + * Encodes the specified LiteralType message. Does not implicitly {@link flyteidl.core.LiteralType.verify|verify} messages. + * @param message LiteralType message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.INode, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ILiteralType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Node message from the specified reader or buffer. + * Decodes a LiteralType message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Node + * @returns LiteralType * @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.Node; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.LiteralType; /** - * Verifies a Node message. + * Verifies a LiteralType 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 WorkflowMetadata. */ - interface IWorkflowMetadata { + /** Properties of an OutputReference. */ + interface IOutputReference { - /** WorkflowMetadata qualityOfService */ - qualityOfService?: (flyteidl.core.IQualityOfService|null); + /** OutputReference nodeId */ + nodeId?: (string|null); - /** WorkflowMetadata onFailure */ - onFailure?: (flyteidl.core.WorkflowMetadata.OnFailurePolicy|null); + /** OutputReference var */ + "var"?: (string|null); - /** WorkflowMetadata tags */ - tags?: ({ [k: string]: string }|null); + /** OutputReference attrPath */ + attrPath?: (flyteidl.core.IPromiseAttribute[]|null); } - /** Represents a WorkflowMetadata. */ - class WorkflowMetadata implements IWorkflowMetadata { + /** Represents an OutputReference. */ + class OutputReference implements IOutputReference { /** - * Constructs a new WorkflowMetadata. + * Constructs a new OutputReference. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IWorkflowMetadata); + constructor(properties?: flyteidl.core.IOutputReference); - /** WorkflowMetadata qualityOfService. */ - public qualityOfService?: (flyteidl.core.IQualityOfService|null); + /** OutputReference nodeId. */ + public nodeId: string; - /** WorkflowMetadata onFailure. */ - public onFailure: flyteidl.core.WorkflowMetadata.OnFailurePolicy; + /** OutputReference var. */ + public var: string; - /** WorkflowMetadata tags. */ - public tags: { [k: string]: string }; + /** OutputReference attrPath. */ + public attrPath: flyteidl.core.IPromiseAttribute[]; /** - * Creates a new WorkflowMetadata instance using the specified properties. + * Creates a new OutputReference instance using the specified properties. * @param [properties] Properties to set - * @returns WorkflowMetadata instance + * @returns OutputReference instance */ - public static create(properties?: flyteidl.core.IWorkflowMetadata): flyteidl.core.WorkflowMetadata; + public static create(properties?: flyteidl.core.IOutputReference): flyteidl.core.OutputReference; /** - * Encodes the specified WorkflowMetadata message. Does not implicitly {@link flyteidl.core.WorkflowMetadata.verify|verify} messages. - * @param message WorkflowMetadata message or plain object to encode + * Encodes the specified OutputReference message. Does not implicitly {@link flyteidl.core.OutputReference.verify|verify} messages. + * @param message OutputReference message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IWorkflowMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IOutputReference, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a WorkflowMetadata message from the specified reader or buffer. + * Decodes an OutputReference message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns WorkflowMetadata + * @returns OutputReference * @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.WorkflowMetadata; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.OutputReference; /** - * Verifies a WorkflowMetadata message. + * Verifies an OutputReference 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); } - namespace WorkflowMetadata { - - /** OnFailurePolicy enum. */ - enum OnFailurePolicy { - FAIL_IMMEDIATELY = 0, - FAIL_AFTER_EXECUTABLE_NODES_COMPLETE = 1 - } - } + /** Properties of a PromiseAttribute. */ + interface IPromiseAttribute { - /** Properties of a WorkflowMetadataDefaults. */ - interface IWorkflowMetadataDefaults { + /** PromiseAttribute stringValue */ + stringValue?: (string|null); - /** WorkflowMetadataDefaults interruptible */ - interruptible?: (boolean|null); + /** PromiseAttribute intValue */ + intValue?: (number|null); } - /** Represents a WorkflowMetadataDefaults. */ - class WorkflowMetadataDefaults implements IWorkflowMetadataDefaults { + /** Represents a PromiseAttribute. */ + class PromiseAttribute implements IPromiseAttribute { /** - * Constructs a new WorkflowMetadataDefaults. + * Constructs a new PromiseAttribute. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IWorkflowMetadataDefaults); + constructor(properties?: flyteidl.core.IPromiseAttribute); - /** WorkflowMetadataDefaults interruptible. */ - public interruptible: boolean; + /** PromiseAttribute stringValue. */ + public stringValue: string; + + /** PromiseAttribute intValue. */ + public intValue: number; + + /** PromiseAttribute value. */ + public value?: ("stringValue"|"intValue"); /** - * Creates a new WorkflowMetadataDefaults instance using the specified properties. + * Creates a new PromiseAttribute instance using the specified properties. * @param [properties] Properties to set - * @returns WorkflowMetadataDefaults instance + * @returns PromiseAttribute instance */ - public static create(properties?: flyteidl.core.IWorkflowMetadataDefaults): flyteidl.core.WorkflowMetadataDefaults; + public static create(properties?: flyteidl.core.IPromiseAttribute): flyteidl.core.PromiseAttribute; /** - * Encodes the specified WorkflowMetadataDefaults message. Does not implicitly {@link flyteidl.core.WorkflowMetadataDefaults.verify|verify} messages. - * @param message WorkflowMetadataDefaults message or plain object to encode + * Encodes the specified PromiseAttribute message. Does not implicitly {@link flyteidl.core.PromiseAttribute.verify|verify} messages. + * @param message PromiseAttribute message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IWorkflowMetadataDefaults, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IPromiseAttribute, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a WorkflowMetadataDefaults message from the specified reader or buffer. + * Decodes a PromiseAttribute message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns WorkflowMetadataDefaults + * @returns PromiseAttribute * @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.WorkflowMetadataDefaults; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.PromiseAttribute; /** - * Verifies a WorkflowMetadataDefaults message. + * Verifies a PromiseAttribute 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 WorkflowTemplate. */ - interface IWorkflowTemplate { - - /** WorkflowTemplate id */ - id?: (flyteidl.core.IIdentifier|null); - - /** WorkflowTemplate metadata */ - metadata?: (flyteidl.core.IWorkflowMetadata|null); - - /** WorkflowTemplate interface */ - "interface"?: (flyteidl.core.ITypedInterface|null); - - /** WorkflowTemplate nodes */ - nodes?: (flyteidl.core.INode[]|null); - - /** WorkflowTemplate outputs */ - outputs?: (flyteidl.core.IBinding[]|null); + /** Properties of an Error. */ + interface IError { - /** WorkflowTemplate failureNode */ - failureNode?: (flyteidl.core.INode|null); + /** Error failedNodeId */ + failedNodeId?: (string|null); - /** WorkflowTemplate metadataDefaults */ - metadataDefaults?: (flyteidl.core.IWorkflowMetadataDefaults|null); + /** Error message */ + message?: (string|null); } - /** Represents a WorkflowTemplate. */ - class WorkflowTemplate implements IWorkflowTemplate { + /** Represents an Error. */ + class Error implements IError { /** - * Constructs a new WorkflowTemplate. + * Constructs a new Error. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IWorkflowTemplate); - - /** WorkflowTemplate id. */ - public id?: (flyteidl.core.IIdentifier|null); - - /** WorkflowTemplate metadata. */ - public metadata?: (flyteidl.core.IWorkflowMetadata|null); - - /** WorkflowTemplate interface. */ - public interface?: (flyteidl.core.ITypedInterface|null); - - /** WorkflowTemplate nodes. */ - public nodes: flyteidl.core.INode[]; - - /** WorkflowTemplate outputs. */ - public outputs: flyteidl.core.IBinding[]; + constructor(properties?: flyteidl.core.IError); - /** WorkflowTemplate failureNode. */ - public failureNode?: (flyteidl.core.INode|null); + /** Error failedNodeId. */ + public failedNodeId: string; - /** WorkflowTemplate metadataDefaults. */ - public metadataDefaults?: (flyteidl.core.IWorkflowMetadataDefaults|null); + /** Error message. */ + public message: string; /** - * Creates a new WorkflowTemplate instance using the specified properties. + * Creates a new Error instance using the specified properties. * @param [properties] Properties to set - * @returns WorkflowTemplate instance + * @returns Error instance */ - public static create(properties?: flyteidl.core.IWorkflowTemplate): flyteidl.core.WorkflowTemplate; + public static create(properties?: flyteidl.core.IError): flyteidl.core.Error; /** - * Encodes the specified WorkflowTemplate message. Does not implicitly {@link flyteidl.core.WorkflowTemplate.verify|verify} messages. - * @param message WorkflowTemplate message or plain object to encode + * Encodes the specified Error message. Does not implicitly {@link flyteidl.core.Error.verify|verify} messages. + * @param message Error message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IWorkflowTemplate, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IError, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a WorkflowTemplate message from the specified reader or buffer. + * Decodes an Error message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns WorkflowTemplate + * @returns Error * @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.WorkflowTemplate; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Error; /** - * Verifies a WorkflowTemplate message. + * Verifies an Error 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 TaskNodeOverrides. */ - interface ITaskNodeOverrides { + /** Properties of a Primitive. */ + interface IPrimitive { - /** TaskNodeOverrides resources */ - resources?: (flyteidl.core.IResources|null); + /** Primitive integer */ + integer?: (Long|null); - /** TaskNodeOverrides extendedResources */ - extendedResources?: (flyteidl.core.IExtendedResources|null); + /** Primitive floatValue */ + floatValue?: (number|null); + + /** Primitive stringValue */ + stringValue?: (string|null); + + /** Primitive boolean */ + boolean?: (boolean|null); + + /** Primitive datetime */ + datetime?: (google.protobuf.ITimestamp|null); + + /** Primitive duration */ + duration?: (google.protobuf.IDuration|null); } - /** Represents a TaskNodeOverrides. */ - class TaskNodeOverrides implements ITaskNodeOverrides { + /** Represents a Primitive. */ + class Primitive implements IPrimitive { /** - * Constructs a new TaskNodeOverrides. + * Constructs a new Primitive. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ITaskNodeOverrides); + constructor(properties?: flyteidl.core.IPrimitive); - /** TaskNodeOverrides resources. */ - public resources?: (flyteidl.core.IResources|null); + /** Primitive integer. */ + public integer: Long; - /** TaskNodeOverrides extendedResources. */ - public extendedResources?: (flyteidl.core.IExtendedResources|null); + /** Primitive floatValue. */ + public floatValue: number; + + /** Primitive stringValue. */ + public stringValue: string; + + /** Primitive boolean. */ + public boolean: boolean; + + /** Primitive datetime. */ + public datetime?: (google.protobuf.ITimestamp|null); + + /** Primitive duration. */ + public duration?: (google.protobuf.IDuration|null); + + /** Primitive value. */ + public value?: ("integer"|"floatValue"|"stringValue"|"boolean"|"datetime"|"duration"); /** - * Creates a new TaskNodeOverrides instance using the specified properties. + * Creates a new Primitive instance using the specified properties. * @param [properties] Properties to set - * @returns TaskNodeOverrides instance + * @returns Primitive instance */ - public static create(properties?: flyteidl.core.ITaskNodeOverrides): flyteidl.core.TaskNodeOverrides; + public static create(properties?: flyteidl.core.IPrimitive): flyteidl.core.Primitive; /** - * Encodes the specified TaskNodeOverrides message. Does not implicitly {@link flyteidl.core.TaskNodeOverrides.verify|verify} messages. - * @param message TaskNodeOverrides message or plain object to encode + * Encodes the specified Primitive message. Does not implicitly {@link flyteidl.core.Primitive.verify|verify} messages. + * @param message Primitive message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ITaskNodeOverrides, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IPrimitive, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TaskNodeOverrides message from the specified reader or buffer. + * Decodes a Primitive message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TaskNodeOverrides + * @returns Primitive * @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.TaskNodeOverrides; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Primitive; /** - * Verifies a TaskNodeOverrides message. + * Verifies a Primitive 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 ComparisonExpression. */ - interface IComparisonExpression { - - /** ComparisonExpression operator */ - operator?: (flyteidl.core.ComparisonExpression.Operator|null); - - /** ComparisonExpression leftValue */ - leftValue?: (flyteidl.core.IOperand|null); - - /** ComparisonExpression rightValue */ - rightValue?: (flyteidl.core.IOperand|null); + /** Properties of a Void. */ + interface IVoid { } - /** Represents a ComparisonExpression. */ - class ComparisonExpression implements IComparisonExpression { + /** Represents a Void. */ + class Void implements IVoid { /** - * Constructs a new ComparisonExpression. + * Constructs a new Void. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IComparisonExpression); - - /** ComparisonExpression operator. */ - public operator: flyteidl.core.ComparisonExpression.Operator; - - /** ComparisonExpression leftValue. */ - public leftValue?: (flyteidl.core.IOperand|null); - - /** ComparisonExpression rightValue. */ - public rightValue?: (flyteidl.core.IOperand|null); + constructor(properties?: flyteidl.core.IVoid); /** - * Creates a new ComparisonExpression instance using the specified properties. + * Creates a new Void instance using the specified properties. * @param [properties] Properties to set - * @returns ComparisonExpression instance + * @returns Void instance */ - public static create(properties?: flyteidl.core.IComparisonExpression): flyteidl.core.ComparisonExpression; + public static create(properties?: flyteidl.core.IVoid): flyteidl.core.Void; /** - * Encodes the specified ComparisonExpression message. Does not implicitly {@link flyteidl.core.ComparisonExpression.verify|verify} messages. - * @param message ComparisonExpression message or plain object to encode + * Encodes the specified Void message. Does not implicitly {@link flyteidl.core.Void.verify|verify} messages. + * @param message Void message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IComparisonExpression, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IVoid, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ComparisonExpression message from the specified reader or buffer. + * Decodes a Void message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ComparisonExpression + * @returns Void * @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.ComparisonExpression; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Void; /** - * Verifies a ComparisonExpression message. + * Verifies a Void 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); } - namespace ComparisonExpression { - - /** Operator enum. */ - enum Operator { - EQ = 0, - NEQ = 1, - GT = 2, - GTE = 3, - LT = 4, - LTE = 5 - } - } - - /** Properties of an Operand. */ - interface IOperand { - - /** Operand primitive */ - primitive?: (flyteidl.core.IPrimitive|null); + /** Properties of a Blob. */ + interface IBlob { - /** Operand var */ - "var"?: (string|null); + /** Blob metadata */ + metadata?: (flyteidl.core.IBlobMetadata|null); - /** Operand scalar */ - scalar?: (flyteidl.core.IScalar|null); + /** Blob uri */ + uri?: (string|null); } - /** Represents an Operand. */ - class Operand implements IOperand { + /** Represents a Blob. */ + class Blob implements IBlob { /** - * Constructs a new Operand. + * Constructs a new Blob. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IOperand); - - /** Operand primitive. */ - public primitive?: (flyteidl.core.IPrimitive|null); - - /** Operand var. */ - public var: string; + constructor(properties?: flyteidl.core.IBlob); - /** Operand scalar. */ - public scalar?: (flyteidl.core.IScalar|null); + /** Blob metadata. */ + public metadata?: (flyteidl.core.IBlobMetadata|null); - /** Operand val. */ - public val?: ("primitive"|"var"|"scalar"); + /** Blob uri. */ + public uri: string; /** - * Creates a new Operand instance using the specified properties. + * Creates a new Blob instance using the specified properties. * @param [properties] Properties to set - * @returns Operand instance + * @returns Blob instance */ - public static create(properties?: flyteidl.core.IOperand): flyteidl.core.Operand; + public static create(properties?: flyteidl.core.IBlob): flyteidl.core.Blob; /** - * Encodes the specified Operand message. Does not implicitly {@link flyteidl.core.Operand.verify|verify} messages. - * @param message Operand message or plain object to encode + * Encodes the specified Blob message. Does not implicitly {@link flyteidl.core.Blob.verify|verify} messages. + * @param message Blob message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IOperand, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IBlob, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Operand message from the specified reader or buffer. + * Decodes a Blob message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Operand + * @returns Blob * @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.Operand; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Blob; /** - * Verifies an Operand message. + * Verifies a Blob 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 BooleanExpression. */ - interface IBooleanExpression { - - /** BooleanExpression conjunction */ - conjunction?: (flyteidl.core.IConjunctionExpression|null); + /** Properties of a BlobMetadata. */ + interface IBlobMetadata { - /** BooleanExpression comparison */ - comparison?: (flyteidl.core.IComparisonExpression|null); + /** BlobMetadata type */ + type?: (flyteidl.core.IBlobType|null); } - /** Represents a BooleanExpression. */ - class BooleanExpression implements IBooleanExpression { + /** Represents a BlobMetadata. */ + class BlobMetadata implements IBlobMetadata { /** - * Constructs a new BooleanExpression. + * Constructs a new BlobMetadata. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBooleanExpression); - - /** BooleanExpression conjunction. */ - public conjunction?: (flyteidl.core.IConjunctionExpression|null); - - /** BooleanExpression comparison. */ - public comparison?: (flyteidl.core.IComparisonExpression|null); + constructor(properties?: flyteidl.core.IBlobMetadata); - /** BooleanExpression expr. */ - public expr?: ("conjunction"|"comparison"); + /** BlobMetadata type. */ + public type?: (flyteidl.core.IBlobType|null); /** - * Creates a new BooleanExpression instance using the specified properties. + * Creates a new BlobMetadata instance using the specified properties. * @param [properties] Properties to set - * @returns BooleanExpression instance + * @returns BlobMetadata instance */ - public static create(properties?: flyteidl.core.IBooleanExpression): flyteidl.core.BooleanExpression; + public static create(properties?: flyteidl.core.IBlobMetadata): flyteidl.core.BlobMetadata; /** - * Encodes the specified BooleanExpression message. Does not implicitly {@link flyteidl.core.BooleanExpression.verify|verify} messages. - * @param message BooleanExpression message or plain object to encode + * Encodes the specified BlobMetadata message. Does not implicitly {@link flyteidl.core.BlobMetadata.verify|verify} messages. + * @param message BlobMetadata message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBooleanExpression, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IBlobMetadata, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BooleanExpression message from the specified reader or buffer. + * Decodes a BlobMetadata message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BooleanExpression + * @returns BlobMetadata * @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.BooleanExpression; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.BlobMetadata; /** - * Verifies a BooleanExpression message. + * Verifies a BlobMetadata 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 ConjunctionExpression. */ - interface IConjunctionExpression { - - /** ConjunctionExpression operator */ - operator?: (flyteidl.core.ConjunctionExpression.LogicalOperator|null); + /** Properties of a Binary. */ + interface IBinary { - /** ConjunctionExpression leftExpression */ - leftExpression?: (flyteidl.core.IBooleanExpression|null); + /** Binary value */ + value?: (Uint8Array|null); - /** ConjunctionExpression rightExpression */ - rightExpression?: (flyteidl.core.IBooleanExpression|null); + /** Binary tag */ + tag?: (string|null); } - /** Represents a ConjunctionExpression. */ - class ConjunctionExpression implements IConjunctionExpression { + /** Represents a Binary. */ + class Binary implements IBinary { /** - * Constructs a new ConjunctionExpression. + * Constructs a new Binary. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IConjunctionExpression); - - /** ConjunctionExpression operator. */ - public operator: flyteidl.core.ConjunctionExpression.LogicalOperator; + constructor(properties?: flyteidl.core.IBinary); - /** ConjunctionExpression leftExpression. */ - public leftExpression?: (flyteidl.core.IBooleanExpression|null); + /** Binary value. */ + public value: Uint8Array; - /** ConjunctionExpression rightExpression. */ - public rightExpression?: (flyteidl.core.IBooleanExpression|null); + /** Binary tag. */ + public tag: string; /** - * Creates a new ConjunctionExpression instance using the specified properties. + * Creates a new Binary instance using the specified properties. * @param [properties] Properties to set - * @returns ConjunctionExpression instance + * @returns Binary instance */ - public static create(properties?: flyteidl.core.IConjunctionExpression): flyteidl.core.ConjunctionExpression; + public static create(properties?: flyteidl.core.IBinary): flyteidl.core.Binary; /** - * Encodes the specified ConjunctionExpression message. Does not implicitly {@link flyteidl.core.ConjunctionExpression.verify|verify} messages. - * @param message ConjunctionExpression message or plain object to encode + * Encodes the specified Binary message. Does not implicitly {@link flyteidl.core.Binary.verify|verify} messages. + * @param message Binary message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IConjunctionExpression, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IBinary, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ConjunctionExpression message from the specified reader or buffer. + * Decodes a Binary message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ConjunctionExpression + * @returns Binary * @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.ConjunctionExpression; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Binary; /** - * Verifies a ConjunctionExpression message. + * Verifies a Binary 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); } - namespace ConjunctionExpression { - - /** LogicalOperator enum. */ - enum LogicalOperator { - AND = 0, - OR = 1 - } - } - - /** Properties of a Primitive. */ - interface IPrimitive { - - /** Primitive integer */ - integer?: (Long|null); - - /** Primitive floatValue */ - floatValue?: (number|null); - - /** Primitive stringValue */ - stringValue?: (string|null); - - /** Primitive boolean */ - boolean?: (boolean|null); + /** Properties of a Schema. */ + interface ISchema { - /** Primitive datetime */ - datetime?: (google.protobuf.ITimestamp|null); + /** Schema uri */ + uri?: (string|null); - /** Primitive duration */ - duration?: (google.protobuf.IDuration|null); + /** Schema type */ + type?: (flyteidl.core.ISchemaType|null); } - /** Represents a Primitive. */ - class Primitive implements IPrimitive { + /** Represents a Schema. */ + class Schema implements ISchema { /** - * Constructs a new Primitive. + * Constructs a new Schema. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IPrimitive); - - /** Primitive integer. */ - public integer: Long; - - /** Primitive floatValue. */ - public floatValue: number; - - /** Primitive stringValue. */ - public stringValue: string; - - /** Primitive boolean. */ - public boolean: boolean; - - /** Primitive datetime. */ - public datetime?: (google.protobuf.ITimestamp|null); + constructor(properties?: flyteidl.core.ISchema); - /** Primitive duration. */ - public duration?: (google.protobuf.IDuration|null); + /** Schema uri. */ + public uri: string; - /** Primitive value. */ - public value?: ("integer"|"floatValue"|"stringValue"|"boolean"|"datetime"|"duration"); + /** Schema type. */ + public type?: (flyteidl.core.ISchemaType|null); /** - * Creates a new Primitive instance using the specified properties. + * Creates a new Schema instance using the specified properties. * @param [properties] Properties to set - * @returns Primitive instance + * @returns Schema instance */ - public static create(properties?: flyteidl.core.IPrimitive): flyteidl.core.Primitive; + public static create(properties?: flyteidl.core.ISchema): flyteidl.core.Schema; /** - * Encodes the specified Primitive message. Does not implicitly {@link flyteidl.core.Primitive.verify|verify} messages. - * @param message Primitive message or plain object to encode + * Encodes the specified Schema message. Does not implicitly {@link flyteidl.core.Schema.verify|verify} messages. + * @param message Schema message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IPrimitive, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ISchema, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Primitive message from the specified reader or buffer. + * Decodes a Schema message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Primitive + * @returns Schema * @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.Primitive; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Schema; /** - * Verifies a Primitive message. + * Verifies a Schema 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 Void. */ - interface IVoid { + /** Properties of an Union. */ + interface IUnion { + + /** Union value */ + value?: (flyteidl.core.ILiteral|null); + + /** Union type */ + type?: (flyteidl.core.ILiteralType|null); } - /** Represents a Void. */ - class Void implements IVoid { + /** Represents an Union. */ + class Union implements IUnion { /** - * Constructs a new Void. + * Constructs a new Union. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IVoid); + constructor(properties?: flyteidl.core.IUnion); + + /** Union value. */ + public value?: (flyteidl.core.ILiteral|null); + + /** Union type. */ + public type?: (flyteidl.core.ILiteralType|null); /** - * Creates a new Void instance using the specified properties. + * Creates a new Union instance using the specified properties. * @param [properties] Properties to set - * @returns Void instance + * @returns Union instance */ - public static create(properties?: flyteidl.core.IVoid): flyteidl.core.Void; + public static create(properties?: flyteidl.core.IUnion): flyteidl.core.Union; /** - * Encodes the specified Void message. Does not implicitly {@link flyteidl.core.Void.verify|verify} messages. - * @param message Void message or plain object to encode + * Encodes the specified Union message. Does not implicitly {@link flyteidl.core.Union.verify|verify} messages. + * @param message Union message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IVoid, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IUnion, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Void message from the specified reader or buffer. + * Decodes an Union message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Void + * @returns Union * @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.Void; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Union; /** - * Verifies a Void message. + * Verifies an Union 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 Blob. */ - interface IBlob { - - /** Blob metadata */ - metadata?: (flyteidl.core.IBlobMetadata|null); + /** Properties of a StructuredDatasetMetadata. */ + interface IStructuredDatasetMetadata { - /** Blob uri */ - uri?: (string|null); + /** StructuredDatasetMetadata structuredDatasetType */ + structuredDatasetType?: (flyteidl.core.IStructuredDatasetType|null); } - /** Represents a Blob. */ - class Blob implements IBlob { + /** Represents a StructuredDatasetMetadata. */ + class StructuredDatasetMetadata implements IStructuredDatasetMetadata { /** - * Constructs a new Blob. + * Constructs a new StructuredDatasetMetadata. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBlob); - - /** Blob metadata. */ - public metadata?: (flyteidl.core.IBlobMetadata|null); + constructor(properties?: flyteidl.core.IStructuredDatasetMetadata); - /** Blob uri. */ - public uri: string; + /** StructuredDatasetMetadata structuredDatasetType. */ + public structuredDatasetType?: (flyteidl.core.IStructuredDatasetType|null); /** - * Creates a new Blob instance using the specified properties. + * Creates a new StructuredDatasetMetadata instance using the specified properties. * @param [properties] Properties to set - * @returns Blob instance + * @returns StructuredDatasetMetadata instance */ - public static create(properties?: flyteidl.core.IBlob): flyteidl.core.Blob; + public static create(properties?: flyteidl.core.IStructuredDatasetMetadata): flyteidl.core.StructuredDatasetMetadata; /** - * Encodes the specified Blob message. Does not implicitly {@link flyteidl.core.Blob.verify|verify} messages. - * @param message Blob message or plain object to encode + * Encodes the specified StructuredDatasetMetadata message. Does not implicitly {@link flyteidl.core.StructuredDatasetMetadata.verify|verify} messages. + * @param message StructuredDatasetMetadata message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBlob, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IStructuredDatasetMetadata, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Blob message from the specified reader or buffer. + * Decodes a StructuredDatasetMetadata message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Blob + * @returns StructuredDatasetMetadata * @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.Blob; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.StructuredDatasetMetadata; /** - * Verifies a Blob message. + * Verifies a StructuredDatasetMetadata 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 BlobMetadata. */ - interface IBlobMetadata { + /** Properties of a StructuredDataset. */ + interface IStructuredDataset { - /** BlobMetadata type */ - type?: (flyteidl.core.IBlobType|null); + /** StructuredDataset uri */ + uri?: (string|null); + + /** StructuredDataset metadata */ + metadata?: (flyteidl.core.IStructuredDatasetMetadata|null); } - /** Represents a BlobMetadata. */ - class BlobMetadata implements IBlobMetadata { + /** Represents a StructuredDataset. */ + class StructuredDataset implements IStructuredDataset { /** - * Constructs a new BlobMetadata. + * Constructs a new StructuredDataset. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBlobMetadata); + constructor(properties?: flyteidl.core.IStructuredDataset); - /** BlobMetadata type. */ - public type?: (flyteidl.core.IBlobType|null); + /** StructuredDataset uri. */ + public uri: string; + + /** StructuredDataset metadata. */ + public metadata?: (flyteidl.core.IStructuredDatasetMetadata|null); /** - * Creates a new BlobMetadata instance using the specified properties. + * Creates a new StructuredDataset instance using the specified properties. * @param [properties] Properties to set - * @returns BlobMetadata instance + * @returns StructuredDataset instance */ - public static create(properties?: flyteidl.core.IBlobMetadata): flyteidl.core.BlobMetadata; + public static create(properties?: flyteidl.core.IStructuredDataset): flyteidl.core.StructuredDataset; /** - * Encodes the specified BlobMetadata message. Does not implicitly {@link flyteidl.core.BlobMetadata.verify|verify} messages. - * @param message BlobMetadata message or plain object to encode + * Encodes the specified StructuredDataset message. Does not implicitly {@link flyteidl.core.StructuredDataset.verify|verify} messages. + * @param message StructuredDataset message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBlobMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IStructuredDataset, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BlobMetadata message from the specified reader or buffer. + * Decodes a StructuredDataset message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BlobMetadata + * @returns StructuredDataset * @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.BlobMetadata; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.StructuredDataset; /** - * Verifies a BlobMetadata message. + * Verifies a StructuredDataset 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 Binary. */ - interface IBinary { + /** Properties of a Scalar. */ + interface IScalar { - /** Binary value */ - value?: (Uint8Array|null); + /** Scalar primitive */ + primitive?: (flyteidl.core.IPrimitive|null); - /** Binary tag */ - tag?: (string|null); + /** Scalar blob */ + blob?: (flyteidl.core.IBlob|null); + + /** Scalar binary */ + binary?: (flyteidl.core.IBinary|null); + + /** Scalar schema */ + schema?: (flyteidl.core.ISchema|null); + + /** Scalar noneType */ + noneType?: (flyteidl.core.IVoid|null); + + /** Scalar error */ + error?: (flyteidl.core.IError|null); + + /** Scalar generic */ + generic?: (google.protobuf.IStruct|null); + + /** Scalar structuredDataset */ + structuredDataset?: (flyteidl.core.IStructuredDataset|null); + + /** Scalar union */ + union?: (flyteidl.core.IUnion|null); } - /** Represents a Binary. */ - class Binary implements IBinary { + /** Represents a Scalar. */ + class Scalar implements IScalar { /** - * Constructs a new Binary. + * Constructs a new Scalar. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBinary); + constructor(properties?: flyteidl.core.IScalar); - /** Binary value. */ - public value: Uint8Array; + /** Scalar primitive. */ + public primitive?: (flyteidl.core.IPrimitive|null); - /** Binary tag. */ - public tag: string; + /** Scalar blob. */ + public blob?: (flyteidl.core.IBlob|null); + + /** Scalar binary. */ + public binary?: (flyteidl.core.IBinary|null); + + /** Scalar schema. */ + public schema?: (flyteidl.core.ISchema|null); + + /** Scalar noneType. */ + public noneType?: (flyteidl.core.IVoid|null); + + /** Scalar error. */ + public error?: (flyteidl.core.IError|null); + + /** Scalar generic. */ + public generic?: (google.protobuf.IStruct|null); + + /** Scalar structuredDataset. */ + public structuredDataset?: (flyteidl.core.IStructuredDataset|null); + + /** Scalar union. */ + public union?: (flyteidl.core.IUnion|null); + + /** Scalar value. */ + public value?: ("primitive"|"blob"|"binary"|"schema"|"noneType"|"error"|"generic"|"structuredDataset"|"union"); /** - * Creates a new Binary instance using the specified properties. + * Creates a new Scalar instance using the specified properties. * @param [properties] Properties to set - * @returns Binary instance + * @returns Scalar instance */ - public static create(properties?: flyteidl.core.IBinary): flyteidl.core.Binary; + public static create(properties?: flyteidl.core.IScalar): flyteidl.core.Scalar; /** - * Encodes the specified Binary message. Does not implicitly {@link flyteidl.core.Binary.verify|verify} messages. - * @param message Binary message or plain object to encode + * Encodes the specified Scalar message. Does not implicitly {@link flyteidl.core.Scalar.verify|verify} messages. + * @param message Scalar message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBinary, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IScalar, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Binary message from the specified reader or buffer. + * Decodes a Scalar message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Binary + * @returns Scalar * @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.Binary; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Scalar; /** - * Verifies a Binary message. + * Verifies a Scalar 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 Schema. */ - interface ISchema { + /** Properties of a Literal. */ + interface ILiteral { - /** Schema uri */ - uri?: (string|null); + /** Literal scalar */ + scalar?: (flyteidl.core.IScalar|null); - /** Schema type */ - type?: (flyteidl.core.ISchemaType|null); - } + /** Literal collection */ + collection?: (flyteidl.core.ILiteralCollection|null); - /** Represents a Schema. */ - class Schema implements ISchema { + /** Literal map */ + map?: (flyteidl.core.ILiteralMap|null); - /** - * Constructs a new Schema. - * @param [properties] Properties to set - */ - constructor(properties?: flyteidl.core.ISchema); + /** Literal hash */ + hash?: (string|null); - /** Schema uri. */ - public uri: string; + /** Literal metadata */ + metadata?: ({ [k: string]: string }|null); + } - /** Schema type. */ - public type?: (flyteidl.core.ISchemaType|null); + /** Represents a Literal. */ + class Literal implements ILiteral { /** - * Creates a new Schema instance using the specified properties. + * Constructs a new Literal. * @param [properties] Properties to set - * @returns Schema instance */ - public static create(properties?: flyteidl.core.ISchema): flyteidl.core.Schema; + constructor(properties?: flyteidl.core.ILiteral); + + /** Literal scalar. */ + public scalar?: (flyteidl.core.IScalar|null); + + /** Literal collection. */ + public collection?: (flyteidl.core.ILiteralCollection|null); + + /** Literal map. */ + public map?: (flyteidl.core.ILiteralMap|null); + + /** Literal hash. */ + public hash: string; + + /** Literal metadata. */ + public metadata: { [k: string]: string }; + + /** Literal value. */ + public value?: ("scalar"|"collection"|"map"); /** - * Encodes the specified Schema message. Does not implicitly {@link flyteidl.core.Schema.verify|verify} messages. - * @param message Schema message or plain object to encode + * Creates a new Literal instance using the specified properties. + * @param [properties] Properties to set + * @returns Literal instance + */ + public static create(properties?: flyteidl.core.ILiteral): flyteidl.core.Literal; + + /** + * Encodes the specified Literal message. Does not implicitly {@link flyteidl.core.Literal.verify|verify} messages. + * @param message Literal message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ISchema, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ILiteral, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Schema message from the specified reader or buffer. + * Decodes a Literal message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Schema + * @returns Literal * @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.Schema; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Literal; /** - * Verifies a Schema message. + * Verifies a Literal 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 Union. */ - interface IUnion { - - /** Union value */ - value?: (flyteidl.core.ILiteral|null); + /** Properties of a LiteralCollection. */ + interface ILiteralCollection { - /** Union type */ - type?: (flyteidl.core.ILiteralType|null); + /** LiteralCollection literals */ + literals?: (flyteidl.core.ILiteral[]|null); } - /** Represents an Union. */ - class Union implements IUnion { + /** Represents a LiteralCollection. */ + class LiteralCollection implements ILiteralCollection { /** - * Constructs a new Union. + * Constructs a new LiteralCollection. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IUnion); - - /** Union value. */ - public value?: (flyteidl.core.ILiteral|null); + constructor(properties?: flyteidl.core.ILiteralCollection); - /** Union type. */ - public type?: (flyteidl.core.ILiteralType|null); + /** LiteralCollection literals. */ + public literals: flyteidl.core.ILiteral[]; /** - * Creates a new Union instance using the specified properties. + * Creates a new LiteralCollection instance using the specified properties. * @param [properties] Properties to set - * @returns Union instance + * @returns LiteralCollection instance */ - public static create(properties?: flyteidl.core.IUnion): flyteidl.core.Union; + public static create(properties?: flyteidl.core.ILiteralCollection): flyteidl.core.LiteralCollection; /** - * Encodes the specified Union message. Does not implicitly {@link flyteidl.core.Union.verify|verify} messages. - * @param message Union message or plain object to encode + * Encodes the specified LiteralCollection message. Does not implicitly {@link flyteidl.core.LiteralCollection.verify|verify} messages. + * @param message LiteralCollection message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IUnion, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ILiteralCollection, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Union message from the specified reader or buffer. + * Decodes a LiteralCollection message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Union + * @returns LiteralCollection * @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.Union; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.LiteralCollection; /** - * Verifies an Union message. + * Verifies a LiteralCollection 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 StructuredDatasetMetadata. */ - interface IStructuredDatasetMetadata { + /** Properties of a LiteralMap. */ + interface ILiteralMap { - /** StructuredDatasetMetadata structuredDatasetType */ - structuredDatasetType?: (flyteidl.core.IStructuredDatasetType|null); + /** LiteralMap literals */ + literals?: ({ [k: string]: flyteidl.core.ILiteral }|null); } - /** Represents a StructuredDatasetMetadata. */ - class StructuredDatasetMetadata implements IStructuredDatasetMetadata { + /** Represents a LiteralMap. */ + class LiteralMap implements ILiteralMap { /** - * Constructs a new StructuredDatasetMetadata. + * Constructs a new LiteralMap. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IStructuredDatasetMetadata); + constructor(properties?: flyteidl.core.ILiteralMap); - /** StructuredDatasetMetadata structuredDatasetType. */ - public structuredDatasetType?: (flyteidl.core.IStructuredDatasetType|null); + /** LiteralMap literals. */ + public literals: { [k: string]: flyteidl.core.ILiteral }; /** - * Creates a new StructuredDatasetMetadata instance using the specified properties. + * Creates a new LiteralMap instance using the specified properties. * @param [properties] Properties to set - * @returns StructuredDatasetMetadata instance + * @returns LiteralMap instance */ - public static create(properties?: flyteidl.core.IStructuredDatasetMetadata): flyteidl.core.StructuredDatasetMetadata; + public static create(properties?: flyteidl.core.ILiteralMap): flyteidl.core.LiteralMap; /** - * Encodes the specified StructuredDatasetMetadata message. Does not implicitly {@link flyteidl.core.StructuredDatasetMetadata.verify|verify} messages. - * @param message StructuredDatasetMetadata message or plain object to encode + * Encodes the specified LiteralMap message. Does not implicitly {@link flyteidl.core.LiteralMap.verify|verify} messages. + * @param message LiteralMap message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IStructuredDatasetMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ILiteralMap, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a StructuredDatasetMetadata message from the specified reader or buffer. + * Decodes a LiteralMap message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns StructuredDatasetMetadata + * @returns LiteralMap * @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.StructuredDatasetMetadata; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.LiteralMap; /** - * Verifies a StructuredDatasetMetadata message. + * Verifies a LiteralMap 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 StructuredDataset. */ - interface IStructuredDataset { - - /** StructuredDataset uri */ - uri?: (string|null); + /** Properties of a BindingDataCollection. */ + interface IBindingDataCollection { - /** StructuredDataset metadata */ - metadata?: (flyteidl.core.IStructuredDatasetMetadata|null); + /** BindingDataCollection bindings */ + bindings?: (flyteidl.core.IBindingData[]|null); } - /** Represents a StructuredDataset. */ - class StructuredDataset implements IStructuredDataset { + /** Represents a BindingDataCollection. */ + class BindingDataCollection implements IBindingDataCollection { /** - * Constructs a new StructuredDataset. + * Constructs a new BindingDataCollection. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IStructuredDataset); - - /** StructuredDataset uri. */ - public uri: string; + constructor(properties?: flyteidl.core.IBindingDataCollection); - /** StructuredDataset metadata. */ - public metadata?: (flyteidl.core.IStructuredDatasetMetadata|null); + /** BindingDataCollection bindings. */ + public bindings: flyteidl.core.IBindingData[]; /** - * Creates a new StructuredDataset instance using the specified properties. + * Creates a new BindingDataCollection instance using the specified properties. * @param [properties] Properties to set - * @returns StructuredDataset instance + * @returns BindingDataCollection instance */ - public static create(properties?: flyteidl.core.IStructuredDataset): flyteidl.core.StructuredDataset; + public static create(properties?: flyteidl.core.IBindingDataCollection): flyteidl.core.BindingDataCollection; /** - * Encodes the specified StructuredDataset message. Does not implicitly {@link flyteidl.core.StructuredDataset.verify|verify} messages. - * @param message StructuredDataset message or plain object to encode + * Encodes the specified BindingDataCollection message. Does not implicitly {@link flyteidl.core.BindingDataCollection.verify|verify} messages. + * @param message BindingDataCollection message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IStructuredDataset, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IBindingDataCollection, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a StructuredDataset message from the specified reader or buffer. + * Decodes a BindingDataCollection message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns StructuredDataset + * @returns BindingDataCollection * @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.StructuredDataset; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.BindingDataCollection; /** - * Verifies a StructuredDataset message. + * Verifies a BindingDataCollection 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 Scalar. */ - interface IScalar { - - /** Scalar primitive */ - primitive?: (flyteidl.core.IPrimitive|null); - - /** Scalar blob */ - blob?: (flyteidl.core.IBlob|null); - - /** Scalar binary */ - binary?: (flyteidl.core.IBinary|null); - - /** Scalar schema */ - schema?: (flyteidl.core.ISchema|null); - - /** Scalar noneType */ - noneType?: (flyteidl.core.IVoid|null); - - /** Scalar error */ - error?: (flyteidl.core.IError|null); - - /** Scalar generic */ - generic?: (google.protobuf.IStruct|null); - - /** Scalar structuredDataset */ - structuredDataset?: (flyteidl.core.IStructuredDataset|null); + /** Properties of a BindingDataMap. */ + interface IBindingDataMap { - /** Scalar union */ - union?: (flyteidl.core.IUnion|null); + /** BindingDataMap bindings */ + bindings?: ({ [k: string]: flyteidl.core.IBindingData }|null); } - /** Represents a Scalar. */ - class Scalar implements IScalar { + /** Represents a BindingDataMap. */ + class BindingDataMap implements IBindingDataMap { /** - * Constructs a new Scalar. + * Constructs a new BindingDataMap. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IScalar); - - /** Scalar primitive. */ - public primitive?: (flyteidl.core.IPrimitive|null); - - /** Scalar blob. */ - public blob?: (flyteidl.core.IBlob|null); + constructor(properties?: flyteidl.core.IBindingDataMap); - /** Scalar binary. */ - public binary?: (flyteidl.core.IBinary|null); + /** BindingDataMap bindings. */ + public bindings: { [k: string]: flyteidl.core.IBindingData }; - /** Scalar schema. */ - public schema?: (flyteidl.core.ISchema|null); + /** + * Creates a new BindingDataMap instance using the specified properties. + * @param [properties] Properties to set + * @returns BindingDataMap instance + */ + public static create(properties?: flyteidl.core.IBindingDataMap): flyteidl.core.BindingDataMap; - /** Scalar noneType. */ - public noneType?: (flyteidl.core.IVoid|null); + /** + * Encodes the specified BindingDataMap message. Does not implicitly {@link flyteidl.core.BindingDataMap.verify|verify} messages. + * @param message BindingDataMap message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.IBindingDataMap, writer?: $protobuf.Writer): $protobuf.Writer; - /** Scalar error. */ - public error?: (flyteidl.core.IError|null); + /** + * Decodes a BindingDataMap message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BindingDataMap + * @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.BindingDataMap; - /** Scalar generic. */ - public generic?: (google.protobuf.IStruct|null); + /** + * Verifies a BindingDataMap 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); + } - /** Scalar structuredDataset. */ - public structuredDataset?: (flyteidl.core.IStructuredDataset|null); + /** Properties of an UnionInfo. */ + interface IUnionInfo { - /** Scalar union. */ - public union?: (flyteidl.core.IUnion|null); + /** UnionInfo targetType */ + targetType?: (flyteidl.core.ILiteralType|null); + } - /** Scalar value. */ - public value?: ("primitive"|"blob"|"binary"|"schema"|"noneType"|"error"|"generic"|"structuredDataset"|"union"); + /** Represents an UnionInfo. */ + class UnionInfo implements IUnionInfo { /** - * Creates a new Scalar instance using the specified properties. + * Constructs a new UnionInfo. * @param [properties] Properties to set - * @returns Scalar instance */ - public static create(properties?: flyteidl.core.IScalar): flyteidl.core.Scalar; + constructor(properties?: flyteidl.core.IUnionInfo); + + /** UnionInfo targetType. */ + public targetType?: (flyteidl.core.ILiteralType|null); /** - * Encodes the specified Scalar message. Does not implicitly {@link flyteidl.core.Scalar.verify|verify} messages. - * @param message Scalar message or plain object to encode + * Creates a new UnionInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns UnionInfo instance + */ + public static create(properties?: flyteidl.core.IUnionInfo): flyteidl.core.UnionInfo; + + /** + * Encodes the specified UnionInfo message. Does not implicitly {@link flyteidl.core.UnionInfo.verify|verify} messages. + * @param message UnionInfo message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IScalar, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IUnionInfo, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Scalar message from the specified reader or buffer. + * Decodes an UnionInfo message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Scalar + * @returns UnionInfo * @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.Scalar; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.UnionInfo; /** - * Verifies a Scalar message. + * Verifies an UnionInfo 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 Literal. */ - interface ILiteral { + /** Properties of a BindingData. */ + interface IBindingData { - /** Literal scalar */ + /** BindingData scalar */ scalar?: (flyteidl.core.IScalar|null); - /** Literal collection */ - collection?: (flyteidl.core.ILiteralCollection|null); + /** BindingData collection */ + collection?: (flyteidl.core.IBindingDataCollection|null); - /** Literal map */ - map?: (flyteidl.core.ILiteralMap|null); + /** BindingData promise */ + promise?: (flyteidl.core.IOutputReference|null); - /** Literal hash */ - hash?: (string|null); + /** BindingData map */ + map?: (flyteidl.core.IBindingDataMap|null); - /** Literal metadata */ - metadata?: ({ [k: string]: string }|null); + /** BindingData union */ + union?: (flyteidl.core.IUnionInfo|null); } - /** Represents a Literal. */ - class Literal implements ILiteral { + /** Represents a BindingData. */ + class BindingData implements IBindingData { /** - * Constructs a new Literal. + * Constructs a new BindingData. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ILiteral); + constructor(properties?: flyteidl.core.IBindingData); - /** Literal scalar. */ + /** BindingData scalar. */ public scalar?: (flyteidl.core.IScalar|null); - /** Literal collection. */ - public collection?: (flyteidl.core.ILiteralCollection|null); + /** BindingData collection. */ + public collection?: (flyteidl.core.IBindingDataCollection|null); - /** Literal map. */ - public map?: (flyteidl.core.ILiteralMap|null); + /** BindingData promise. */ + public promise?: (flyteidl.core.IOutputReference|null); - /** Literal hash. */ - public hash: string; + /** BindingData map. */ + public map?: (flyteidl.core.IBindingDataMap|null); - /** Literal metadata. */ - public metadata: { [k: string]: string }; + /** BindingData union. */ + public union?: (flyteidl.core.IUnionInfo|null); - /** Literal value. */ - public value?: ("scalar"|"collection"|"map"); + /** BindingData value. */ + public value?: ("scalar"|"collection"|"promise"|"map"); /** - * Creates a new Literal instance using the specified properties. + * Creates a new BindingData instance using the specified properties. * @param [properties] Properties to set - * @returns Literal instance + * @returns BindingData instance */ - public static create(properties?: flyteidl.core.ILiteral): flyteidl.core.Literal; + public static create(properties?: flyteidl.core.IBindingData): flyteidl.core.BindingData; /** - * Encodes the specified Literal message. Does not implicitly {@link flyteidl.core.Literal.verify|verify} messages. - * @param message Literal message or plain object to encode + * Encodes the specified BindingData message. Does not implicitly {@link flyteidl.core.BindingData.verify|verify} messages. + * @param message BindingData message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ILiteral, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IBindingData, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Literal message from the specified reader or buffer. + * Decodes a BindingData message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Literal + * @returns BindingData * @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.Literal; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.BindingData; /** - * Verifies a Literal message. + * Verifies a BindingData 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 LiteralCollection. */ - interface ILiteralCollection { + /** Properties of a Binding. */ + interface IBinding { - /** LiteralCollection literals */ - literals?: (flyteidl.core.ILiteral[]|null); + /** Binding var */ + "var"?: (string|null); + + /** Binding binding */ + binding?: (flyteidl.core.IBindingData|null); } - /** Represents a LiteralCollection. */ - class LiteralCollection implements ILiteralCollection { + /** Represents a Binding. */ + class Binding implements IBinding { /** - * Constructs a new LiteralCollection. + * Constructs a new Binding. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ILiteralCollection); + constructor(properties?: flyteidl.core.IBinding); - /** LiteralCollection literals. */ - public literals: flyteidl.core.ILiteral[]; + /** Binding var. */ + public var: string; + + /** Binding binding. */ + public binding?: (flyteidl.core.IBindingData|null); /** - * Creates a new LiteralCollection instance using the specified properties. + * Creates a new Binding instance using the specified properties. * @param [properties] Properties to set - * @returns LiteralCollection instance + * @returns Binding instance */ - public static create(properties?: flyteidl.core.ILiteralCollection): flyteidl.core.LiteralCollection; + public static create(properties?: flyteidl.core.IBinding): flyteidl.core.Binding; /** - * Encodes the specified LiteralCollection message. Does not implicitly {@link flyteidl.core.LiteralCollection.verify|verify} messages. - * @param message LiteralCollection message or plain object to encode + * Encodes the specified Binding message. Does not implicitly {@link flyteidl.core.Binding.verify|verify} messages. + * @param message Binding message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ILiteralCollection, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IBinding, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LiteralCollection message from the specified reader or buffer. + * Decodes a Binding message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LiteralCollection + * @returns Binding * @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.LiteralCollection; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Binding; /** - * Verifies a LiteralCollection message. + * Verifies a Binding 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 LiteralMap. */ - interface ILiteralMap { + /** Properties of a KeyValuePair. */ + interface IKeyValuePair { - /** LiteralMap literals */ - literals?: ({ [k: string]: flyteidl.core.ILiteral }|null); + /** KeyValuePair key */ + key?: (string|null); + + /** KeyValuePair value */ + value?: (string|null); } - /** Represents a LiteralMap. */ - class LiteralMap implements ILiteralMap { + /** Represents a KeyValuePair. */ + class KeyValuePair implements IKeyValuePair { /** - * Constructs a new LiteralMap. + * Constructs a new KeyValuePair. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ILiteralMap); + constructor(properties?: flyteidl.core.IKeyValuePair); - /** LiteralMap literals. */ - public literals: { [k: string]: flyteidl.core.ILiteral }; + /** KeyValuePair key. */ + public key: string; + + /** KeyValuePair value. */ + public value: string; /** - * Creates a new LiteralMap instance using the specified properties. + * Creates a new KeyValuePair instance using the specified properties. * @param [properties] Properties to set - * @returns LiteralMap instance + * @returns KeyValuePair instance */ - public static create(properties?: flyteidl.core.ILiteralMap): flyteidl.core.LiteralMap; + public static create(properties?: flyteidl.core.IKeyValuePair): flyteidl.core.KeyValuePair; /** - * Encodes the specified LiteralMap message. Does not implicitly {@link flyteidl.core.LiteralMap.verify|verify} messages. - * @param message LiteralMap message or plain object to encode + * Encodes the specified KeyValuePair message. Does not implicitly {@link flyteidl.core.KeyValuePair.verify|verify} messages. + * @param message KeyValuePair message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ILiteralMap, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IKeyValuePair, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LiteralMap message from the specified reader or buffer. + * Decodes a KeyValuePair message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LiteralMap + * @returns KeyValuePair * @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.LiteralMap; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.KeyValuePair; /** - * Verifies a LiteralMap message. + * Verifies a KeyValuePair 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 { + /** Properties of a RetryStrategy. */ + interface IRetryStrategy { - /** BindingDataCollection bindings */ - bindings?: (flyteidl.core.IBindingData[]|null); + /** RetryStrategy retries */ + retries?: (number|null); } - /** Represents a BindingDataCollection. */ - class BindingDataCollection implements IBindingDataCollection { + /** Represents a RetryStrategy. */ + class RetryStrategy implements IRetryStrategy { /** - * Constructs a new BindingDataCollection. + * Constructs a new RetryStrategy. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBindingDataCollection); + constructor(properties?: flyteidl.core.IRetryStrategy); - /** BindingDataCollection bindings. */ - public bindings: flyteidl.core.IBindingData[]; + /** RetryStrategy retries. */ + public retries: number; /** - * Creates a new BindingDataCollection instance using the specified properties. + * Creates a new RetryStrategy instance using the specified properties. * @param [properties] Properties to set - * @returns BindingDataCollection instance + * @returns RetryStrategy instance */ - public static create(properties?: flyteidl.core.IBindingDataCollection): flyteidl.core.BindingDataCollection; + public static create(properties?: flyteidl.core.IRetryStrategy): flyteidl.core.RetryStrategy; /** - * Encodes the specified BindingDataCollection message. Does not implicitly {@link flyteidl.core.BindingDataCollection.verify|verify} messages. - * @param message BindingDataCollection message or plain object to encode + * Encodes the specified RetryStrategy message. Does not implicitly {@link flyteidl.core.RetryStrategy.verify|verify} messages. + * @param message RetryStrategy message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBindingDataCollection, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IRetryStrategy, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BindingDataCollection message from the specified reader or buffer. + * Decodes a RetryStrategy message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BindingDataCollection + * @returns RetryStrategy * @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.BindingDataCollection; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.RetryStrategy; /** - * Verifies a BindingDataCollection message. + * Verifies a RetryStrategy 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 BindingDataMap. */ - interface IBindingDataMap { + /** Properties of an IfBlock. */ + interface IIfBlock { - /** BindingDataMap bindings */ - bindings?: ({ [k: string]: flyteidl.core.IBindingData }|null); + /** IfBlock condition */ + condition?: (flyteidl.core.IBooleanExpression|null); + + /** IfBlock thenNode */ + thenNode?: (flyteidl.core.INode|null); } - /** Represents a BindingDataMap. */ - class BindingDataMap implements IBindingDataMap { + /** Represents an IfBlock. */ + class IfBlock implements IIfBlock { /** - * Constructs a new BindingDataMap. + * Constructs a new IfBlock. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBindingDataMap); + constructor(properties?: flyteidl.core.IIfBlock); - /** BindingDataMap bindings. */ - public bindings: { [k: string]: flyteidl.core.IBindingData }; + /** IfBlock condition. */ + public condition?: (flyteidl.core.IBooleanExpression|null); + + /** IfBlock thenNode. */ + public thenNode?: (flyteidl.core.INode|null); /** - * Creates a new BindingDataMap instance using the specified properties. + * Creates a new IfBlock instance using the specified properties. * @param [properties] Properties to set - * @returns BindingDataMap instance + * @returns IfBlock instance */ - public static create(properties?: flyteidl.core.IBindingDataMap): flyteidl.core.BindingDataMap; + public static create(properties?: flyteidl.core.IIfBlock): flyteidl.core.IfBlock; /** - * Encodes the specified BindingDataMap message. Does not implicitly {@link flyteidl.core.BindingDataMap.verify|verify} messages. - * @param message BindingDataMap message or plain object to encode + * Encodes the specified IfBlock message. Does not implicitly {@link flyteidl.core.IfBlock.verify|verify} messages. + * @param message IfBlock message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBindingDataMap, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IIfBlock, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BindingDataMap message from the specified reader or buffer. + * Decodes an IfBlock message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BindingDataMap + * @returns IfBlock * @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.BindingDataMap; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.IfBlock; /** - * Verifies a BindingDataMap message. + * Verifies an IfBlock 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 UnionInfo. */ - interface IUnionInfo { + /** Properties of an IfElseBlock. */ + interface IIfElseBlock { - /** UnionInfo targetType */ - targetType?: (flyteidl.core.ILiteralType|null); + /** IfElseBlock case */ + "case"?: (flyteidl.core.IIfBlock|null); + + /** IfElseBlock other */ + other?: (flyteidl.core.IIfBlock[]|null); + + /** IfElseBlock elseNode */ + elseNode?: (flyteidl.core.INode|null); + + /** IfElseBlock error */ + error?: (flyteidl.core.IError|null); } - /** Represents an UnionInfo. */ - class UnionInfo implements IUnionInfo { + /** Represents an IfElseBlock. */ + class IfElseBlock implements IIfElseBlock { /** - * Constructs a new UnionInfo. + * Constructs a new IfElseBlock. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IUnionInfo); + constructor(properties?: flyteidl.core.IIfElseBlock); - /** UnionInfo targetType. */ - public targetType?: (flyteidl.core.ILiteralType|null); + /** IfElseBlock case. */ + public case?: (flyteidl.core.IIfBlock|null); + + /** IfElseBlock other. */ + public other: flyteidl.core.IIfBlock[]; + + /** IfElseBlock elseNode. */ + public elseNode?: (flyteidl.core.INode|null); + + /** IfElseBlock error. */ + public error?: (flyteidl.core.IError|null); + + /** IfElseBlock default. */ + public default_?: ("elseNode"|"error"); /** - * Creates a new UnionInfo instance using the specified properties. + * Creates a new IfElseBlock instance using the specified properties. * @param [properties] Properties to set - * @returns UnionInfo instance + * @returns IfElseBlock instance */ - public static create(properties?: flyteidl.core.IUnionInfo): flyteidl.core.UnionInfo; + public static create(properties?: flyteidl.core.IIfElseBlock): flyteidl.core.IfElseBlock; /** - * Encodes the specified UnionInfo message. Does not implicitly {@link flyteidl.core.UnionInfo.verify|verify} messages. - * @param message UnionInfo message or plain object to encode + * Encodes the specified IfElseBlock message. Does not implicitly {@link flyteidl.core.IfElseBlock.verify|verify} messages. + * @param message IfElseBlock message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IUnionInfo, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IIfElseBlock, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an UnionInfo message from the specified reader or buffer. + * Decodes an IfElseBlock message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns UnionInfo + * @returns IfElseBlock * @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.UnionInfo; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.IfElseBlock; /** - * Verifies an UnionInfo message. + * Verifies an IfElseBlock 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 BindingData. */ - interface IBindingData { - - /** BindingData scalar */ - scalar?: (flyteidl.core.IScalar|null); - - /** BindingData collection */ - collection?: (flyteidl.core.IBindingDataCollection|null); - - /** BindingData promise */ - promise?: (flyteidl.core.IOutputReference|null); - - /** BindingData map */ - map?: (flyteidl.core.IBindingDataMap|null); + /** Properties of a BranchNode. */ + interface IBranchNode { - /** BindingData union */ - union?: (flyteidl.core.IUnionInfo|null); + /** BranchNode ifElse */ + ifElse?: (flyteidl.core.IIfElseBlock|null); } - /** Represents a BindingData. */ - class BindingData implements IBindingData { + /** Represents a BranchNode. */ + class BranchNode implements IBranchNode { /** - * Constructs a new BindingData. + * Constructs a new BranchNode. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBindingData); - - /** BindingData scalar. */ - public scalar?: (flyteidl.core.IScalar|null); - - /** BindingData collection. */ - public collection?: (flyteidl.core.IBindingDataCollection|null); - - /** BindingData promise. */ - public promise?: (flyteidl.core.IOutputReference|null); - - /** BindingData map. */ - public map?: (flyteidl.core.IBindingDataMap|null); - - /** BindingData union. */ - public union?: (flyteidl.core.IUnionInfo|null); + constructor(properties?: flyteidl.core.IBranchNode); - /** BindingData value. */ - public value?: ("scalar"|"collection"|"promise"|"map"); + /** BranchNode ifElse. */ + public ifElse?: (flyteidl.core.IIfElseBlock|null); /** - * Creates a new BindingData instance using the specified properties. + * Creates a new BranchNode instance using the specified properties. * @param [properties] Properties to set - * @returns BindingData instance + * @returns BranchNode instance */ - public static create(properties?: flyteidl.core.IBindingData): flyteidl.core.BindingData; + public static create(properties?: flyteidl.core.IBranchNode): flyteidl.core.BranchNode; /** - * Encodes the specified BindingData message. Does not implicitly {@link flyteidl.core.BindingData.verify|verify} messages. - * @param message BindingData message or plain object to encode + * Encodes the specified BranchNode message. Does not implicitly {@link flyteidl.core.BranchNode.verify|verify} messages. + * @param message BranchNode message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBindingData, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IBranchNode, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BindingData message from the specified reader or buffer. + * Decodes a BranchNode message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BindingData + * @returns BranchNode * @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.BindingData; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.BranchNode; /** - * Verifies a BindingData message. + * Verifies a BranchNode 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 Binding. */ - interface IBinding { + /** Properties of a TaskNode. */ + interface ITaskNode { - /** Binding var */ - "var"?: (string|null); + /** TaskNode referenceId */ + referenceId?: (flyteidl.core.IIdentifier|null); - /** Binding binding */ - binding?: (flyteidl.core.IBindingData|null); + /** TaskNode overrides */ + overrides?: (flyteidl.core.ITaskNodeOverrides|null); } - /** Represents a Binding. */ - class Binding implements IBinding { + /** Represents a TaskNode. */ + class TaskNode implements ITaskNode { /** - * Constructs a new Binding. + * Constructs a new TaskNode. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBinding); + constructor(properties?: flyteidl.core.ITaskNode); - /** Binding var. */ - public var: string; + /** TaskNode referenceId. */ + public referenceId?: (flyteidl.core.IIdentifier|null); - /** Binding binding. */ - public binding?: (flyteidl.core.IBindingData|null); + /** TaskNode overrides. */ + public overrides?: (flyteidl.core.ITaskNodeOverrides|null); + + /** TaskNode reference. */ + public reference?: "referenceId"; /** - * Creates a new Binding instance using the specified properties. + * Creates a new TaskNode instance using the specified properties. * @param [properties] Properties to set - * @returns Binding instance + * @returns TaskNode instance */ - public static create(properties?: flyteidl.core.IBinding): flyteidl.core.Binding; + public static create(properties?: flyteidl.core.ITaskNode): flyteidl.core.TaskNode; /** - * Encodes the specified Binding message. Does not implicitly {@link flyteidl.core.Binding.verify|verify} messages. - * @param message Binding message or plain object to encode + * Encodes the specified TaskNode message. Does not implicitly {@link flyteidl.core.TaskNode.verify|verify} messages. + * @param message TaskNode message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBinding, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ITaskNode, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Binding message from the specified reader or buffer. + * Decodes a TaskNode message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Binding + * @returns TaskNode * @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.Binding; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.TaskNode; /** - * Verifies a Binding message. + * Verifies a TaskNode 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 KeyValuePair. */ - interface IKeyValuePair { + /** Properties of a WorkflowNode. */ + interface IWorkflowNode { - /** KeyValuePair key */ - key?: (string|null); + /** WorkflowNode launchplanRef */ + launchplanRef?: (flyteidl.core.IIdentifier|null); - /** KeyValuePair value */ - value?: (string|null); + /** WorkflowNode subWorkflowRef */ + subWorkflowRef?: (flyteidl.core.IIdentifier|null); } - /** Represents a KeyValuePair. */ - class KeyValuePair implements IKeyValuePair { + /** Represents a WorkflowNode. */ + class WorkflowNode implements IWorkflowNode { /** - * Constructs a new KeyValuePair. + * Constructs a new WorkflowNode. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IKeyValuePair); - - /** KeyValuePair key. */ - public key: string; + constructor(properties?: flyteidl.core.IWorkflowNode); - /** KeyValuePair value. */ - public value: string; + /** WorkflowNode launchplanRef. */ + public launchplanRef?: (flyteidl.core.IIdentifier|null); + + /** WorkflowNode subWorkflowRef. */ + public subWorkflowRef?: (flyteidl.core.IIdentifier|null); + + /** WorkflowNode reference. */ + public reference?: ("launchplanRef"|"subWorkflowRef"); /** - * Creates a new KeyValuePair instance using the specified properties. + * Creates a new WorkflowNode instance using the specified properties. * @param [properties] Properties to set - * @returns KeyValuePair instance + * @returns WorkflowNode instance */ - public static create(properties?: flyteidl.core.IKeyValuePair): flyteidl.core.KeyValuePair; + public static create(properties?: flyteidl.core.IWorkflowNode): flyteidl.core.WorkflowNode; /** - * Encodes the specified KeyValuePair message. Does not implicitly {@link flyteidl.core.KeyValuePair.verify|verify} messages. - * @param message KeyValuePair message or plain object to encode + * Encodes the specified WorkflowNode message. Does not implicitly {@link flyteidl.core.WorkflowNode.verify|verify} messages. + * @param message WorkflowNode message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IKeyValuePair, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IWorkflowNode, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a KeyValuePair message from the specified reader or buffer. + * Decodes a WorkflowNode message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns KeyValuePair + * @returns WorkflowNode * @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.KeyValuePair; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.WorkflowNode; /** - * Verifies a KeyValuePair message. + * Verifies a WorkflowNode 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 RetryStrategy. */ - interface IRetryStrategy { + /** Properties of an ApproveCondition. */ + interface IApproveCondition { - /** RetryStrategy retries */ - retries?: (number|null); + /** ApproveCondition signalId */ + signalId?: (string|null); } - /** Represents a RetryStrategy. */ - class RetryStrategy implements IRetryStrategy { + /** Represents an ApproveCondition. */ + class ApproveCondition implements IApproveCondition { /** - * Constructs a new RetryStrategy. + * Constructs a new ApproveCondition. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IRetryStrategy); + constructor(properties?: flyteidl.core.IApproveCondition); - /** RetryStrategy retries. */ - public retries: number; + /** ApproveCondition signalId. */ + public signalId: string; /** - * Creates a new RetryStrategy instance using the specified properties. + * Creates a new ApproveCondition instance using the specified properties. * @param [properties] Properties to set - * @returns RetryStrategy instance + * @returns ApproveCondition instance */ - public static create(properties?: flyteidl.core.IRetryStrategy): flyteidl.core.RetryStrategy; + public static create(properties?: flyteidl.core.IApproveCondition): flyteidl.core.ApproveCondition; /** - * Encodes the specified RetryStrategy message. Does not implicitly {@link flyteidl.core.RetryStrategy.verify|verify} messages. - * @param message RetryStrategy message or plain object to encode + * Encodes the specified ApproveCondition message. Does not implicitly {@link flyteidl.core.ApproveCondition.verify|verify} messages. + * @param message ApproveCondition message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IRetryStrategy, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IApproveCondition, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a RetryStrategy message from the specified reader or buffer. + * Decodes an ApproveCondition message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns RetryStrategy + * @returns ApproveCondition * @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.RetryStrategy; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.ApproveCondition; /** - * Verifies a RetryStrategy message. + * Verifies an ApproveCondition 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); } - /** SimpleType enum. */ - enum SimpleType { - NONE = 0, - INTEGER = 1, - FLOAT = 2, - STRING = 3, - BOOLEAN = 4, - DATETIME = 5, - DURATION = 6, - BINARY = 7, - ERROR = 8, - STRUCT = 9 - } + /** Properties of a SignalCondition. */ + interface ISignalCondition { - /** Properties of a SchemaType. */ - interface ISchemaType { + /** SignalCondition signalId */ + signalId?: (string|null); - /** SchemaType columns */ - columns?: (flyteidl.core.SchemaType.ISchemaColumn[]|null); + /** SignalCondition type */ + type?: (flyteidl.core.ILiteralType|null); + + /** SignalCondition outputVariableName */ + outputVariableName?: (string|null); } - /** Represents a SchemaType. */ - class SchemaType implements ISchemaType { + /** Represents a SignalCondition. */ + class SignalCondition implements ISignalCondition { /** - * Constructs a new SchemaType. + * Constructs a new SignalCondition. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ISchemaType); + constructor(properties?: flyteidl.core.ISignalCondition); - /** SchemaType columns. */ - public columns: flyteidl.core.SchemaType.ISchemaColumn[]; + /** SignalCondition signalId. */ + public signalId: string; + + /** SignalCondition type. */ + public type?: (flyteidl.core.ILiteralType|null); + + /** SignalCondition outputVariableName. */ + public outputVariableName: string; /** - * Creates a new SchemaType instance using the specified properties. + * Creates a new SignalCondition instance using the specified properties. * @param [properties] Properties to set - * @returns SchemaType instance + * @returns SignalCondition instance */ - public static create(properties?: flyteidl.core.ISchemaType): flyteidl.core.SchemaType; + public static create(properties?: flyteidl.core.ISignalCondition): flyteidl.core.SignalCondition; /** - * Encodes the specified SchemaType message. Does not implicitly {@link flyteidl.core.SchemaType.verify|verify} messages. - * @param message SchemaType message or plain object to encode + * Encodes the specified SignalCondition message. Does not implicitly {@link flyteidl.core.SignalCondition.verify|verify} messages. + * @param message SignalCondition message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ISchemaType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ISignalCondition, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a SchemaType message from the specified reader or buffer. + * Decodes a SignalCondition message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns SchemaType + * @returns SignalCondition * @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.SchemaType; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.SignalCondition; /** - * Verifies a SchemaType message. + * Verifies a SignalCondition 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); } - namespace SchemaType { - - /** Properties of a SchemaColumn. */ - interface ISchemaColumn { - - /** SchemaColumn name */ - name?: (string|null); - - /** SchemaColumn type */ - type?: (flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType|null); - } - - /** Represents a SchemaColumn. */ - class SchemaColumn implements ISchemaColumn { - - /** - * Constructs a new SchemaColumn. - * @param [properties] Properties to set - */ - constructor(properties?: flyteidl.core.SchemaType.ISchemaColumn); - - /** SchemaColumn name. */ - public name: string; - - /** SchemaColumn type. */ - public type: flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType; - - /** - * Creates a new SchemaColumn instance using the specified properties. - * @param [properties] Properties to set - * @returns SchemaColumn instance - */ - public static create(properties?: flyteidl.core.SchemaType.ISchemaColumn): flyteidl.core.SchemaType.SchemaColumn; - - /** - * Encodes the specified SchemaColumn message. Does not implicitly {@link flyteidl.core.SchemaType.SchemaColumn.verify|verify} messages. - * @param message SchemaColumn message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: flyteidl.core.SchemaType.ISchemaColumn, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a SchemaColumn message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns SchemaColumn - * @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.SchemaType.SchemaColumn; - - /** - * Verifies a SchemaColumn 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); - } - - namespace SchemaColumn { - - /** SchemaColumnType enum. */ - enum SchemaColumnType { - INTEGER = 0, - FLOAT = 1, - STRING = 2, - BOOLEAN = 3, - DATETIME = 4, - DURATION = 5 - } - } - } - - /** Properties of a StructuredDatasetType. */ - interface IStructuredDatasetType { - - /** StructuredDatasetType columns */ - columns?: (flyteidl.core.StructuredDatasetType.IDatasetColumn[]|null); - - /** StructuredDatasetType format */ - format?: (string|null); - - /** StructuredDatasetType externalSchemaType */ - externalSchemaType?: (string|null); + /** Properties of a SleepCondition. */ + interface ISleepCondition { - /** StructuredDatasetType externalSchemaBytes */ - externalSchemaBytes?: (Uint8Array|null); + /** SleepCondition duration */ + duration?: (google.protobuf.IDuration|null); } - /** Represents a StructuredDatasetType. */ - class StructuredDatasetType implements IStructuredDatasetType { + /** Represents a SleepCondition. */ + class SleepCondition implements ISleepCondition { /** - * Constructs a new StructuredDatasetType. + * Constructs a new SleepCondition. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IStructuredDatasetType); - - /** StructuredDatasetType columns. */ - public columns: flyteidl.core.StructuredDatasetType.IDatasetColumn[]; - - /** StructuredDatasetType format. */ - public format: string; - - /** StructuredDatasetType externalSchemaType. */ - public externalSchemaType: string; + constructor(properties?: flyteidl.core.ISleepCondition); - /** StructuredDatasetType externalSchemaBytes. */ - public externalSchemaBytes: Uint8Array; + /** SleepCondition duration. */ + public duration?: (google.protobuf.IDuration|null); /** - * Creates a new StructuredDatasetType instance using the specified properties. + * Creates a new SleepCondition instance using the specified properties. * @param [properties] Properties to set - * @returns StructuredDatasetType instance + * @returns SleepCondition instance */ - public static create(properties?: flyteidl.core.IStructuredDatasetType): flyteidl.core.StructuredDatasetType; + public static create(properties?: flyteidl.core.ISleepCondition): flyteidl.core.SleepCondition; /** - * Encodes the specified StructuredDatasetType message. Does not implicitly {@link flyteidl.core.StructuredDatasetType.verify|verify} messages. - * @param message StructuredDatasetType message or plain object to encode + * Encodes the specified SleepCondition message. Does not implicitly {@link flyteidl.core.SleepCondition.verify|verify} messages. + * @param message SleepCondition message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IStructuredDatasetType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ISleepCondition, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a StructuredDatasetType message from the specified reader or buffer. + * Decodes a SleepCondition message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns StructuredDatasetType + * @returns SleepCondition * @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.StructuredDatasetType; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.SleepCondition; /** - * Verifies a StructuredDatasetType message. + * Verifies a SleepCondition 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); } - namespace StructuredDatasetType { - - /** Properties of a DatasetColumn. */ - interface IDatasetColumn { - - /** DatasetColumn name */ - name?: (string|null); - - /** DatasetColumn literalType */ - literalType?: (flyteidl.core.ILiteralType|null); - } - - /** Represents a DatasetColumn. */ - class DatasetColumn implements IDatasetColumn { - - /** - * Constructs a new DatasetColumn. - * @param [properties] Properties to set - */ - constructor(properties?: flyteidl.core.StructuredDatasetType.IDatasetColumn); - - /** DatasetColumn name. */ - public name: string; - - /** DatasetColumn literalType. */ - public literalType?: (flyteidl.core.ILiteralType|null); - - /** - * Creates a new DatasetColumn instance using the specified properties. - * @param [properties] Properties to set - * @returns DatasetColumn instance - */ - public static create(properties?: flyteidl.core.StructuredDatasetType.IDatasetColumn): flyteidl.core.StructuredDatasetType.DatasetColumn; - - /** - * Encodes the specified DatasetColumn message. Does not implicitly {@link flyteidl.core.StructuredDatasetType.DatasetColumn.verify|verify} messages. - * @param message DatasetColumn message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: flyteidl.core.StructuredDatasetType.IDatasetColumn, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a DatasetColumn message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns DatasetColumn - * @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.StructuredDatasetType.DatasetColumn; - - /** - * Verifies a DatasetColumn 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 GateNode. */ + interface IGateNode { - /** Properties of a BlobType. */ - interface IBlobType { + /** GateNode approve */ + approve?: (flyteidl.core.IApproveCondition|null); - /** BlobType format */ - format?: (string|null); + /** GateNode signal */ + signal?: (flyteidl.core.ISignalCondition|null); - /** BlobType dimensionality */ - dimensionality?: (flyteidl.core.BlobType.BlobDimensionality|null); + /** GateNode sleep */ + sleep?: (flyteidl.core.ISleepCondition|null); } - /** Represents a BlobType. */ - class BlobType implements IBlobType { + /** Represents a GateNode. */ + class GateNode implements IGateNode { /** - * Constructs a new BlobType. + * Constructs a new GateNode. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IBlobType); + constructor(properties?: flyteidl.core.IGateNode); - /** BlobType format. */ - public format: string; + /** GateNode approve. */ + public approve?: (flyteidl.core.IApproveCondition|null); - /** BlobType dimensionality. */ - public dimensionality: flyteidl.core.BlobType.BlobDimensionality; + /** GateNode signal. */ + public signal?: (flyteidl.core.ISignalCondition|null); + + /** GateNode sleep. */ + public sleep?: (flyteidl.core.ISleepCondition|null); + + /** GateNode condition. */ + public condition?: ("approve"|"signal"|"sleep"); /** - * Creates a new BlobType instance using the specified properties. + * Creates a new GateNode instance using the specified properties. * @param [properties] Properties to set - * @returns BlobType instance + * @returns GateNode instance */ - public static create(properties?: flyteidl.core.IBlobType): flyteidl.core.BlobType; + public static create(properties?: flyteidl.core.IGateNode): flyteidl.core.GateNode; /** - * Encodes the specified BlobType message. Does not implicitly {@link flyteidl.core.BlobType.verify|verify} messages. - * @param message BlobType message or plain object to encode + * Encodes the specified GateNode message. Does not implicitly {@link flyteidl.core.GateNode.verify|verify} messages. + * @param message GateNode message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IBlobType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IGateNode, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BlobType message from the specified reader or buffer. + * Decodes a GateNode message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BlobType + * @returns GateNode * @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.BlobType; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.GateNode; /** - * Verifies a BlobType message. + * Verifies a GateNode 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); } - namespace BlobType { + /** Properties of an ArrayNode. */ + interface IArrayNode { - /** BlobDimensionality enum. */ - enum BlobDimensionality { - SINGLE = 0, - MULTIPART = 1 - } - } + /** ArrayNode node */ + node?: (flyteidl.core.INode|null); - /** Properties of an EnumType. */ - interface IEnumType { + /** ArrayNode parallelism */ + parallelism?: (number|null); - /** EnumType values */ - values?: (string[]|null); + /** ArrayNode minSuccesses */ + minSuccesses?: (number|null); + + /** ArrayNode minSuccessRatio */ + minSuccessRatio?: (number|null); } - /** Represents an EnumType. */ - class EnumType implements IEnumType { + /** Represents an ArrayNode. */ + class ArrayNode implements IArrayNode { /** - * Constructs a new EnumType. + * Constructs a new ArrayNode. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IEnumType); + constructor(properties?: flyteidl.core.IArrayNode); - /** EnumType values. */ - public values: string[]; + /** ArrayNode node. */ + public node?: (flyteidl.core.INode|null); + + /** ArrayNode parallelism. */ + public parallelism: number; + + /** ArrayNode minSuccesses. */ + public minSuccesses: number; + + /** ArrayNode minSuccessRatio. */ + public minSuccessRatio: number; + + /** ArrayNode successCriteria. */ + public successCriteria?: ("minSuccesses"|"minSuccessRatio"); /** - * Creates a new EnumType instance using the specified properties. + * Creates a new ArrayNode instance using the specified properties. * @param [properties] Properties to set - * @returns EnumType instance + * @returns ArrayNode instance */ - public static create(properties?: flyteidl.core.IEnumType): flyteidl.core.EnumType; + public static create(properties?: flyteidl.core.IArrayNode): flyteidl.core.ArrayNode; /** - * Encodes the specified EnumType message. Does not implicitly {@link flyteidl.core.EnumType.verify|verify} messages. - * @param message EnumType message or plain object to encode + * Encodes the specified ArrayNode message. Does not implicitly {@link flyteidl.core.ArrayNode.verify|verify} messages. + * @param message ArrayNode message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IEnumType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IArrayNode, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an EnumType message from the specified reader or buffer. + * Decodes an ArrayNode message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns EnumType + * @returns ArrayNode * @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.EnumType; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.ArrayNode; /** - * Verifies an EnumType message. + * Verifies an ArrayNode 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 UnionType. */ - interface IUnionType { + /** Properties of a NodeMetadata. */ + interface INodeMetadata { - /** UnionType variants */ - variants?: (flyteidl.core.ILiteralType[]|null); + /** NodeMetadata name */ + name?: (string|null); + + /** NodeMetadata timeout */ + timeout?: (google.protobuf.IDuration|null); + + /** NodeMetadata retries */ + retries?: (flyteidl.core.IRetryStrategy|null); + + /** NodeMetadata interruptible */ + interruptible?: (boolean|null); + + /** NodeMetadata cacheable */ + cacheable?: (boolean|null); + + /** NodeMetadata cacheVersion */ + cacheVersion?: (string|null); + + /** NodeMetadata cacheSerializable */ + cacheSerializable?: (boolean|null); } - /** Represents an UnionType. */ - class UnionType implements IUnionType { + /** Represents a NodeMetadata. */ + class NodeMetadata implements INodeMetadata { /** - * Constructs a new UnionType. + * Constructs a new NodeMetadata. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IUnionType); + constructor(properties?: flyteidl.core.INodeMetadata); - /** UnionType variants. */ - public variants: flyteidl.core.ILiteralType[]; + /** NodeMetadata name. */ + public name: string; + + /** NodeMetadata timeout. */ + public timeout?: (google.protobuf.IDuration|null); + + /** NodeMetadata retries. */ + public retries?: (flyteidl.core.IRetryStrategy|null); + + /** NodeMetadata interruptible. */ + public interruptible: boolean; + + /** NodeMetadata cacheable. */ + public cacheable: boolean; + + /** NodeMetadata cacheVersion. */ + public cacheVersion: string; + + /** NodeMetadata cacheSerializable. */ + public cacheSerializable: boolean; + + /** NodeMetadata interruptibleValue. */ + public interruptibleValue?: "interruptible"; + + /** NodeMetadata cacheableValue. */ + public cacheableValue?: "cacheable"; + + /** NodeMetadata cacheVersionValue. */ + public cacheVersionValue?: "cacheVersion"; + + /** NodeMetadata cacheSerializableValue. */ + public cacheSerializableValue?: "cacheSerializable"; /** - * Creates a new UnionType instance using the specified properties. + * Creates a new NodeMetadata instance using the specified properties. * @param [properties] Properties to set - * @returns UnionType instance + * @returns NodeMetadata instance */ - public static create(properties?: flyteidl.core.IUnionType): flyteidl.core.UnionType; + public static create(properties?: flyteidl.core.INodeMetadata): flyteidl.core.NodeMetadata; /** - * Encodes the specified UnionType message. Does not implicitly {@link flyteidl.core.UnionType.verify|verify} messages. - * @param message UnionType message or plain object to encode + * Encodes the specified NodeMetadata message. Does not implicitly {@link flyteidl.core.NodeMetadata.verify|verify} messages. + * @param message NodeMetadata message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IUnionType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.INodeMetadata, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an UnionType message from the specified reader or buffer. + * Decodes a NodeMetadata message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns UnionType + * @returns NodeMetadata * @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.UnionType; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.NodeMetadata; /** - * Verifies an UnionType message. + * Verifies a NodeMetadata 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 TypeStructure. */ - interface ITypeStructure { + /** Properties of an Alias. */ + interface IAlias { - /** TypeStructure tag */ - tag?: (string|null); + /** Alias var */ + "var"?: (string|null); - /** TypeStructure dataclassType */ - dataclassType?: ({ [k: string]: flyteidl.core.ILiteralType }|null); + /** Alias alias */ + alias?: (string|null); } - /** Represents a TypeStructure. */ - class TypeStructure implements ITypeStructure { + /** Represents an Alias. */ + class Alias implements IAlias { /** - * Constructs a new TypeStructure. + * Constructs a new Alias. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ITypeStructure); + constructor(properties?: flyteidl.core.IAlias); - /** TypeStructure tag. */ - public tag: string; + /** Alias var. */ + public var: string; - /** TypeStructure dataclassType. */ - public dataclassType: { [k: string]: flyteidl.core.ILiteralType }; + /** Alias alias. */ + public alias: string; /** - * Creates a new TypeStructure instance using the specified properties. + * Creates a new Alias instance using the specified properties. * @param [properties] Properties to set - * @returns TypeStructure instance + * @returns Alias instance */ - public static create(properties?: flyteidl.core.ITypeStructure): flyteidl.core.TypeStructure; + public static create(properties?: flyteidl.core.IAlias): flyteidl.core.Alias; /** - * Encodes the specified TypeStructure message. Does not implicitly {@link flyteidl.core.TypeStructure.verify|verify} messages. - * @param message TypeStructure message or plain object to encode + * Encodes the specified Alias message. Does not implicitly {@link flyteidl.core.Alias.verify|verify} messages. + * @param message Alias message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ITypeStructure, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IAlias, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TypeStructure message from the specified reader or buffer. + * Decodes an Alias message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TypeStructure + * @returns Alias * @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.TypeStructure; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Alias; /** - * Verifies a TypeStructure message. + * Verifies an Alias 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 TypeAnnotation. */ - interface ITypeAnnotation { + /** Properties of a Node. */ + interface INode { - /** TypeAnnotation annotations */ - annotations?: (google.protobuf.IStruct|null); + /** Node id */ + id?: (string|null); + + /** Node metadata */ + metadata?: (flyteidl.core.INodeMetadata|null); + + /** Node inputs */ + inputs?: (flyteidl.core.IBinding[]|null); + + /** Node upstreamNodeIds */ + upstreamNodeIds?: (string[]|null); + + /** Node outputAliases */ + outputAliases?: (flyteidl.core.IAlias[]|null); + + /** Node taskNode */ + taskNode?: (flyteidl.core.ITaskNode|null); + + /** Node workflowNode */ + workflowNode?: (flyteidl.core.IWorkflowNode|null); + + /** Node branchNode */ + branchNode?: (flyteidl.core.IBranchNode|null); + + /** Node gateNode */ + gateNode?: (flyteidl.core.IGateNode|null); + + /** Node arrayNode */ + arrayNode?: (flyteidl.core.IArrayNode|null); } - /** Represents a TypeAnnotation. */ - class TypeAnnotation implements ITypeAnnotation { + /** Represents a Node. */ + class Node implements INode { /** - * Constructs a new TypeAnnotation. + * Constructs a new Node. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ITypeAnnotation); + constructor(properties?: flyteidl.core.INode); - /** TypeAnnotation annotations. */ - public annotations?: (google.protobuf.IStruct|null); + /** Node id. */ + public id: string; + + /** Node metadata. */ + public metadata?: (flyteidl.core.INodeMetadata|null); + + /** Node inputs. */ + public inputs: flyteidl.core.IBinding[]; + + /** Node upstreamNodeIds. */ + public upstreamNodeIds: string[]; + + /** Node outputAliases. */ + public outputAliases: flyteidl.core.IAlias[]; + + /** Node taskNode. */ + public taskNode?: (flyteidl.core.ITaskNode|null); + + /** Node workflowNode. */ + public workflowNode?: (flyteidl.core.IWorkflowNode|null); + + /** Node branchNode. */ + public branchNode?: (flyteidl.core.IBranchNode|null); + + /** Node gateNode. */ + public gateNode?: (flyteidl.core.IGateNode|null); + + /** Node arrayNode. */ + public arrayNode?: (flyteidl.core.IArrayNode|null); + + /** Node target. */ + public target?: ("taskNode"|"workflowNode"|"branchNode"|"gateNode"|"arrayNode"); /** - * Creates a new TypeAnnotation instance using the specified properties. + * Creates a new Node instance using the specified properties. * @param [properties] Properties to set - * @returns TypeAnnotation instance + * @returns Node instance */ - public static create(properties?: flyteidl.core.ITypeAnnotation): flyteidl.core.TypeAnnotation; + public static create(properties?: flyteidl.core.INode): flyteidl.core.Node; /** - * Encodes the specified TypeAnnotation message. Does not implicitly {@link flyteidl.core.TypeAnnotation.verify|verify} messages. - * @param message TypeAnnotation message or plain object to encode + * Encodes the specified Node message. Does not implicitly {@link flyteidl.core.Node.verify|verify} messages. + * @param message Node message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ITypeAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.INode, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TypeAnnotation message from the specified reader or buffer. + * Decodes a Node message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TypeAnnotation + * @returns Node * @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.TypeAnnotation; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Node; /** - * Verifies a TypeAnnotation message. + * Verifies a Node 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 LiteralType. */ - interface ILiteralType { - - /** LiteralType simple */ - simple?: (flyteidl.core.SimpleType|null); - - /** LiteralType schema */ - schema?: (flyteidl.core.ISchemaType|null); - - /** LiteralType collectionType */ - collectionType?: (flyteidl.core.ILiteralType|null); - - /** LiteralType mapValueType */ - mapValueType?: (flyteidl.core.ILiteralType|null); - - /** LiteralType blob */ - blob?: (flyteidl.core.IBlobType|null); - - /** LiteralType enumType */ - enumType?: (flyteidl.core.IEnumType|null); - - /** LiteralType structuredDatasetType */ - structuredDatasetType?: (flyteidl.core.IStructuredDatasetType|null); - - /** LiteralType unionType */ - unionType?: (flyteidl.core.IUnionType|null); + /** Properties of a WorkflowMetadata. */ + interface IWorkflowMetadata { - /** LiteralType metadata */ - metadata?: (google.protobuf.IStruct|null); + /** WorkflowMetadata qualityOfService */ + qualityOfService?: (flyteidl.core.IQualityOfService|null); - /** LiteralType annotation */ - annotation?: (flyteidl.core.ITypeAnnotation|null); + /** WorkflowMetadata onFailure */ + onFailure?: (flyteidl.core.WorkflowMetadata.OnFailurePolicy|null); - /** LiteralType structure */ - structure?: (flyteidl.core.ITypeStructure|null); + /** WorkflowMetadata tags */ + tags?: ({ [k: string]: string }|null); } - /** Represents a LiteralType. */ - class LiteralType implements ILiteralType { + /** Represents a WorkflowMetadata. */ + class WorkflowMetadata implements IWorkflowMetadata { /** - * Constructs a new LiteralType. + * Constructs a new WorkflowMetadata. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ILiteralType); - - /** LiteralType simple. */ - public simple: flyteidl.core.SimpleType; - - /** LiteralType schema. */ - public schema?: (flyteidl.core.ISchemaType|null); - - /** LiteralType collectionType. */ - public collectionType?: (flyteidl.core.ILiteralType|null); - - /** LiteralType mapValueType. */ - public mapValueType?: (flyteidl.core.ILiteralType|null); - - /** LiteralType blob. */ - public blob?: (flyteidl.core.IBlobType|null); - - /** LiteralType enumType. */ - public enumType?: (flyteidl.core.IEnumType|null); - - /** LiteralType structuredDatasetType. */ - public structuredDatasetType?: (flyteidl.core.IStructuredDatasetType|null); - - /** LiteralType unionType. */ - public unionType?: (flyteidl.core.IUnionType|null); - - /** LiteralType metadata. */ - public metadata?: (google.protobuf.IStruct|null); + constructor(properties?: flyteidl.core.IWorkflowMetadata); - /** LiteralType annotation. */ - public annotation?: (flyteidl.core.ITypeAnnotation|null); + /** WorkflowMetadata qualityOfService. */ + public qualityOfService?: (flyteidl.core.IQualityOfService|null); - /** LiteralType structure. */ - public structure?: (flyteidl.core.ITypeStructure|null); + /** WorkflowMetadata onFailure. */ + public onFailure: flyteidl.core.WorkflowMetadata.OnFailurePolicy; - /** LiteralType type. */ - public type?: ("simple"|"schema"|"collectionType"|"mapValueType"|"blob"|"enumType"|"structuredDatasetType"|"unionType"); + /** WorkflowMetadata tags. */ + public tags: { [k: string]: string }; /** - * Creates a new LiteralType instance using the specified properties. + * Creates a new WorkflowMetadata instance using the specified properties. * @param [properties] Properties to set - * @returns LiteralType instance + * @returns WorkflowMetadata instance */ - public static create(properties?: flyteidl.core.ILiteralType): flyteidl.core.LiteralType; + public static create(properties?: flyteidl.core.IWorkflowMetadata): flyteidl.core.WorkflowMetadata; /** - * Encodes the specified LiteralType message. Does not implicitly {@link flyteidl.core.LiteralType.verify|verify} messages. - * @param message LiteralType message or plain object to encode + * Encodes the specified WorkflowMetadata message. Does not implicitly {@link flyteidl.core.WorkflowMetadata.verify|verify} messages. + * @param message WorkflowMetadata message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ILiteralType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IWorkflowMetadata, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LiteralType message from the specified reader or buffer. + * Decodes a WorkflowMetadata message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LiteralType + * @returns WorkflowMetadata * @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.LiteralType; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.WorkflowMetadata; /** - * Verifies a LiteralType message. + * Verifies a WorkflowMetadata 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 OutputReference. */ - interface IOutputReference { + namespace WorkflowMetadata { - /** OutputReference nodeId */ - nodeId?: (string|null); + /** OnFailurePolicy enum. */ + enum OnFailurePolicy { + FAIL_IMMEDIATELY = 0, + FAIL_AFTER_EXECUTABLE_NODES_COMPLETE = 1 + } + } - /** OutputReference var */ - "var"?: (string|null); + /** Properties of a WorkflowMetadataDefaults. */ + interface IWorkflowMetadataDefaults { - /** OutputReference attrPath */ - attrPath?: (flyteidl.core.IPromiseAttribute[]|null); + /** WorkflowMetadataDefaults interruptible */ + interruptible?: (boolean|null); } - /** Represents an OutputReference. */ - class OutputReference implements IOutputReference { + /** Represents a WorkflowMetadataDefaults. */ + class WorkflowMetadataDefaults implements IWorkflowMetadataDefaults { /** - * Constructs a new OutputReference. + * Constructs a new WorkflowMetadataDefaults. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IOutputReference); - - /** OutputReference nodeId. */ - public nodeId: string; - - /** OutputReference var. */ - public var: string; + constructor(properties?: flyteidl.core.IWorkflowMetadataDefaults); - /** OutputReference attrPath. */ - public attrPath: flyteidl.core.IPromiseAttribute[]; + /** WorkflowMetadataDefaults interruptible. */ + public interruptible: boolean; /** - * Creates a new OutputReference instance using the specified properties. + * Creates a new WorkflowMetadataDefaults instance using the specified properties. * @param [properties] Properties to set - * @returns OutputReference instance + * @returns WorkflowMetadataDefaults instance */ - public static create(properties?: flyteidl.core.IOutputReference): flyteidl.core.OutputReference; + public static create(properties?: flyteidl.core.IWorkflowMetadataDefaults): flyteidl.core.WorkflowMetadataDefaults; /** - * Encodes the specified OutputReference message. Does not implicitly {@link flyteidl.core.OutputReference.verify|verify} messages. - * @param message OutputReference message or plain object to encode + * Encodes the specified WorkflowMetadataDefaults message. Does not implicitly {@link flyteidl.core.WorkflowMetadataDefaults.verify|verify} messages. + * @param message WorkflowMetadataDefaults message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IOutputReference, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IWorkflowMetadataDefaults, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an OutputReference message from the specified reader or buffer. + * Decodes a WorkflowMetadataDefaults message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns OutputReference + * @returns WorkflowMetadataDefaults * @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.OutputReference; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.WorkflowMetadataDefaults; /** - * Verifies an OutputReference message. + * Verifies a WorkflowMetadataDefaults 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 PromiseAttribute. */ - interface IPromiseAttribute { + /** Properties of a WorkflowTemplate. */ + interface IWorkflowTemplate { - /** PromiseAttribute stringValue */ - stringValue?: (string|null); + /** WorkflowTemplate id */ + id?: (flyteidl.core.IIdentifier|null); - /** PromiseAttribute intValue */ - intValue?: (number|null); + /** WorkflowTemplate metadata */ + metadata?: (flyteidl.core.IWorkflowMetadata|null); + + /** WorkflowTemplate interface */ + "interface"?: (flyteidl.core.ITypedInterface|null); + + /** WorkflowTemplate nodes */ + nodes?: (flyteidl.core.INode[]|null); + + /** WorkflowTemplate outputs */ + outputs?: (flyteidl.core.IBinding[]|null); + + /** WorkflowTemplate failureNode */ + failureNode?: (flyteidl.core.INode|null); + + /** WorkflowTemplate metadataDefaults */ + metadataDefaults?: (flyteidl.core.IWorkflowMetadataDefaults|null); } - /** Represents a PromiseAttribute. */ - class PromiseAttribute implements IPromiseAttribute { + /** Represents a WorkflowTemplate. */ + class WorkflowTemplate implements IWorkflowTemplate { /** - * Constructs a new PromiseAttribute. + * Constructs a new WorkflowTemplate. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IPromiseAttribute); + constructor(properties?: flyteidl.core.IWorkflowTemplate); - /** PromiseAttribute stringValue. */ - public stringValue: string; + /** WorkflowTemplate id. */ + public id?: (flyteidl.core.IIdentifier|null); - /** PromiseAttribute intValue. */ - public intValue: number; + /** WorkflowTemplate metadata. */ + public metadata?: (flyteidl.core.IWorkflowMetadata|null); - /** PromiseAttribute value. */ - public value?: ("stringValue"|"intValue"); + /** WorkflowTemplate interface. */ + public interface?: (flyteidl.core.ITypedInterface|null); + + /** WorkflowTemplate nodes. */ + public nodes: flyteidl.core.INode[]; + + /** WorkflowTemplate outputs. */ + public outputs: flyteidl.core.IBinding[]; + + /** WorkflowTemplate failureNode. */ + public failureNode?: (flyteidl.core.INode|null); + + /** WorkflowTemplate metadataDefaults. */ + public metadataDefaults?: (flyteidl.core.IWorkflowMetadataDefaults|null); /** - * Creates a new PromiseAttribute instance using the specified properties. + * Creates a new WorkflowTemplate instance using the specified properties. * @param [properties] Properties to set - * @returns PromiseAttribute instance + * @returns WorkflowTemplate instance */ - public static create(properties?: flyteidl.core.IPromiseAttribute): flyteidl.core.PromiseAttribute; + public static create(properties?: flyteidl.core.IWorkflowTemplate): flyteidl.core.WorkflowTemplate; /** - * Encodes the specified PromiseAttribute message. Does not implicitly {@link flyteidl.core.PromiseAttribute.verify|verify} messages. - * @param message PromiseAttribute message or plain object to encode + * Encodes the specified WorkflowTemplate message. Does not implicitly {@link flyteidl.core.WorkflowTemplate.verify|verify} messages. + * @param message WorkflowTemplate message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IPromiseAttribute, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IWorkflowTemplate, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PromiseAttribute message from the specified reader or buffer. + * Decodes a WorkflowTemplate message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PromiseAttribute + * @returns WorkflowTemplate * @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.PromiseAttribute; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.WorkflowTemplate; /** - * Verifies a PromiseAttribute message. + * Verifies a WorkflowTemplate 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 Error. */ - interface IError { + /** Properties of a TaskNodeOverrides. */ + interface ITaskNodeOverrides { - /** Error failedNodeId */ - failedNodeId?: (string|null); + /** TaskNodeOverrides resources */ + resources?: (flyteidl.core.IResources|null); - /** Error message */ - message?: (string|null); + /** TaskNodeOverrides extendedResources */ + extendedResources?: (flyteidl.core.IExtendedResources|null); } - /** Represents an Error. */ - class Error implements IError { + /** Represents a TaskNodeOverrides. */ + class TaskNodeOverrides implements ITaskNodeOverrides { /** - * Constructs a new Error. + * Constructs a new TaskNodeOverrides. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IError); + constructor(properties?: flyteidl.core.ITaskNodeOverrides); - /** Error failedNodeId. */ - public failedNodeId: string; + /** TaskNodeOverrides resources. */ + public resources?: (flyteidl.core.IResources|null); - /** Error message. */ - public message: string; + /** TaskNodeOverrides extendedResources. */ + public extendedResources?: (flyteidl.core.IExtendedResources|null); /** - * Creates a new Error instance using the specified properties. + * Creates a new TaskNodeOverrides instance using the specified properties. * @param [properties] Properties to set - * @returns Error instance + * @returns TaskNodeOverrides instance */ - public static create(properties?: flyteidl.core.IError): flyteidl.core.Error; + public static create(properties?: flyteidl.core.ITaskNodeOverrides): flyteidl.core.TaskNodeOverrides; /** - * Encodes the specified Error message. Does not implicitly {@link flyteidl.core.Error.verify|verify} messages. - * @param message Error message or plain object to encode + * Encodes the specified TaskNodeOverrides message. Does not implicitly {@link flyteidl.core.TaskNodeOverrides.verify|verify} messages. + * @param message TaskNodeOverrides message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IError, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ITaskNodeOverrides, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Error message from the specified reader or buffer. + * Decodes a TaskNodeOverrides message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Error + * @returns TaskNodeOverrides * @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.Error; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.TaskNodeOverrides; /** - * Verifies an Error message. + * Verifies a TaskNodeOverrides 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 WorkflowExecution. */ - interface IWorkflowExecution { + /** Properties of a LaunchPlanTemplate. */ + interface ILaunchPlanTemplate { + + /** LaunchPlanTemplate id */ + id?: (flyteidl.core.IIdentifier|null); + + /** LaunchPlanTemplate interface */ + "interface"?: (flyteidl.core.ITypedInterface|null); } - /** Represents a WorkflowExecution. */ - class WorkflowExecution implements IWorkflowExecution { + /** Represents a LaunchPlanTemplate. */ + class LaunchPlanTemplate implements ILaunchPlanTemplate { /** - * Constructs a new WorkflowExecution. + * Constructs a new LaunchPlanTemplate. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IWorkflowExecution); + constructor(properties?: flyteidl.core.ILaunchPlanTemplate); + + /** LaunchPlanTemplate id. */ + public id?: (flyteidl.core.IIdentifier|null); + + /** LaunchPlanTemplate interface. */ + public interface?: (flyteidl.core.ITypedInterface|null); /** - * Creates a new WorkflowExecution instance using the specified properties. + * Creates a new LaunchPlanTemplate instance using the specified properties. * @param [properties] Properties to set - * @returns WorkflowExecution instance + * @returns LaunchPlanTemplate instance */ - public static create(properties?: flyteidl.core.IWorkflowExecution): flyteidl.core.WorkflowExecution; + public static create(properties?: flyteidl.core.ILaunchPlanTemplate): flyteidl.core.LaunchPlanTemplate; /** - * Encodes the specified WorkflowExecution message. Does not implicitly {@link flyteidl.core.WorkflowExecution.verify|verify} messages. - * @param message WorkflowExecution message or plain object to encode + * Encodes the specified LaunchPlanTemplate message. Does not implicitly {@link flyteidl.core.LaunchPlanTemplate.verify|verify} messages. + * @param message LaunchPlanTemplate message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ILaunchPlanTemplate, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a WorkflowExecution message from the specified reader or buffer. + * Decodes a LaunchPlanTemplate message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns WorkflowExecution + * @returns LaunchPlanTemplate * @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.WorkflowExecution; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.LaunchPlanTemplate; /** - * Verifies a WorkflowExecution message. + * Verifies a LaunchPlanTemplate 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); } - namespace WorkflowExecution { + /** Properties of a ComparisonExpression. */ + interface IComparisonExpression { - /** Phase enum. */ - enum Phase { - UNDEFINED = 0, - QUEUED = 1, - RUNNING = 2, - SUCCEEDING = 3, - SUCCEEDED = 4, - FAILING = 5, - FAILED = 6, - ABORTED = 7, - TIMED_OUT = 8, - ABORTING = 9 - } - } + /** ComparisonExpression operator */ + operator?: (flyteidl.core.ComparisonExpression.Operator|null); - /** Properties of a NodeExecution. */ - interface INodeExecution { + /** ComparisonExpression leftValue */ + leftValue?: (flyteidl.core.IOperand|null); + + /** ComparisonExpression rightValue */ + rightValue?: (flyteidl.core.IOperand|null); } - /** Represents a NodeExecution. */ - class NodeExecution implements INodeExecution { + /** Represents a ComparisonExpression. */ + class ComparisonExpression implements IComparisonExpression { /** - * Constructs a new NodeExecution. + * Constructs a new ComparisonExpression. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.INodeExecution); + constructor(properties?: flyteidl.core.IComparisonExpression); + + /** ComparisonExpression operator. */ + public operator: flyteidl.core.ComparisonExpression.Operator; + + /** ComparisonExpression leftValue. */ + public leftValue?: (flyteidl.core.IOperand|null); + + /** ComparisonExpression rightValue. */ + public rightValue?: (flyteidl.core.IOperand|null); /** - * Creates a new NodeExecution instance using the specified properties. + * Creates a new ComparisonExpression instance using the specified properties. * @param [properties] Properties to set - * @returns NodeExecution instance + * @returns ComparisonExpression instance */ - public static create(properties?: flyteidl.core.INodeExecution): flyteidl.core.NodeExecution; + public static create(properties?: flyteidl.core.IComparisonExpression): flyteidl.core.ComparisonExpression; /** - * Encodes the specified NodeExecution message. Does not implicitly {@link flyteidl.core.NodeExecution.verify|verify} messages. - * @param message NodeExecution message or plain object to encode + * Encodes the specified ComparisonExpression message. Does not implicitly {@link flyteidl.core.ComparisonExpression.verify|verify} messages. + * @param message ComparisonExpression message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.INodeExecution, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IComparisonExpression, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a NodeExecution message from the specified reader or buffer. + * Decodes a ComparisonExpression message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns NodeExecution + * @returns ComparisonExpression * @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.NodeExecution; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.ComparisonExpression; /** - * Verifies a NodeExecution message. + * Verifies a ComparisonExpression 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); } - namespace NodeExecution { + namespace ComparisonExpression { - /** Phase enum. */ - enum Phase { - UNDEFINED = 0, - QUEUED = 1, - RUNNING = 2, - SUCCEEDED = 3, - FAILING = 4, - FAILED = 5, - ABORTED = 6, - SKIPPED = 7, - TIMED_OUT = 8, - DYNAMIC_RUNNING = 9, - RECOVERED = 10 + /** Operator enum. */ + enum Operator { + EQ = 0, + NEQ = 1, + GT = 2, + GTE = 3, + LT = 4, + LTE = 5 } } - /** Properties of a TaskExecution. */ - interface ITaskExecution { + /** Properties of an Operand. */ + interface IOperand { + + /** Operand primitive */ + primitive?: (flyteidl.core.IPrimitive|null); + + /** Operand var */ + "var"?: (string|null); + + /** Operand scalar */ + scalar?: (flyteidl.core.IScalar|null); } - /** Represents a TaskExecution. */ - class TaskExecution implements ITaskExecution { + /** Represents an Operand. */ + class Operand implements IOperand { /** - * Constructs a new TaskExecution. + * Constructs a new Operand. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ITaskExecution); + constructor(properties?: flyteidl.core.IOperand); + + /** Operand primitive. */ + public primitive?: (flyteidl.core.IPrimitive|null); + + /** Operand var. */ + public var: string; + + /** Operand scalar. */ + public scalar?: (flyteidl.core.IScalar|null); + + /** Operand val. */ + public val?: ("primitive"|"var"|"scalar"); /** - * Creates a new TaskExecution instance using the specified properties. + * Creates a new Operand instance using the specified properties. * @param [properties] Properties to set - * @returns TaskExecution instance + * @returns Operand instance */ - public static create(properties?: flyteidl.core.ITaskExecution): flyteidl.core.TaskExecution; + public static create(properties?: flyteidl.core.IOperand): flyteidl.core.Operand; /** - * Encodes the specified TaskExecution message. Does not implicitly {@link flyteidl.core.TaskExecution.verify|verify} messages. - * @param message TaskExecution message or plain object to encode + * Encodes the specified Operand message. Does not implicitly {@link flyteidl.core.Operand.verify|verify} messages. + * @param message Operand message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ITaskExecution, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IOperand, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TaskExecution message from the specified reader or buffer. + * Decodes an Operand message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TaskExecution + * @returns Operand * @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.TaskExecution; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Operand; /** - * Verifies a TaskExecution message. + * Verifies an Operand 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); } - namespace TaskExecution { - - /** Phase enum. */ - enum Phase { - UNDEFINED = 0, - QUEUED = 1, - RUNNING = 2, - SUCCEEDED = 3, - ABORTED = 4, - FAILED = 5, - INITIALIZING = 6, - WAITING_FOR_RESOURCES = 7 - } - } - - /** Properties of an ExecutionError. */ - interface IExecutionError { - - /** ExecutionError code */ - code?: (string|null); - - /** ExecutionError message */ - message?: (string|null); + /** Properties of a BooleanExpression. */ + interface IBooleanExpression { - /** ExecutionError errorUri */ - errorUri?: (string|null); + /** BooleanExpression conjunction */ + conjunction?: (flyteidl.core.IConjunctionExpression|null); - /** ExecutionError kind */ - kind?: (flyteidl.core.ExecutionError.ErrorKind|null); + /** BooleanExpression comparison */ + comparison?: (flyteidl.core.IComparisonExpression|null); } - /** Represents an ExecutionError. */ - class ExecutionError implements IExecutionError { + /** Represents a BooleanExpression. */ + class BooleanExpression implements IBooleanExpression { /** - * Constructs a new ExecutionError. + * Constructs a new BooleanExpression. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IExecutionError); - - /** ExecutionError code. */ - public code: string; + constructor(properties?: flyteidl.core.IBooleanExpression); - /** ExecutionError message. */ - public message: string; + /** BooleanExpression conjunction. */ + public conjunction?: (flyteidl.core.IConjunctionExpression|null); - /** ExecutionError errorUri. */ - public errorUri: string; + /** BooleanExpression comparison. */ + public comparison?: (flyteidl.core.IComparisonExpression|null); - /** ExecutionError kind. */ - public kind: flyteidl.core.ExecutionError.ErrorKind; + /** BooleanExpression expr. */ + public expr?: ("conjunction"|"comparison"); /** - * Creates a new ExecutionError instance using the specified properties. + * Creates a new BooleanExpression instance using the specified properties. * @param [properties] Properties to set - * @returns ExecutionError instance + * @returns BooleanExpression instance */ - public static create(properties?: flyteidl.core.IExecutionError): flyteidl.core.ExecutionError; + public static create(properties?: flyteidl.core.IBooleanExpression): flyteidl.core.BooleanExpression; /** - * Encodes the specified ExecutionError message. Does not implicitly {@link flyteidl.core.ExecutionError.verify|verify} messages. - * @param message ExecutionError message or plain object to encode + * Encodes the specified BooleanExpression message. Does not implicitly {@link flyteidl.core.BooleanExpression.verify|verify} messages. + * @param message BooleanExpression message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IExecutionError, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IBooleanExpression, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ExecutionError message from the specified reader or buffer. + * Decodes a BooleanExpression message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ExecutionError + * @returns BooleanExpression * @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.ExecutionError; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.BooleanExpression; /** - * Verifies an ExecutionError message. + * Verifies a BooleanExpression 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); } - namespace ExecutionError { - - /** ErrorKind enum. */ - enum ErrorKind { - UNKNOWN = 0, - USER = 1, - SYSTEM = 2 - } - } - - /** Properties of a TaskLog. */ - interface ITaskLog { - - /** TaskLog uri */ - uri?: (string|null); + /** Properties of a ConjunctionExpression. */ + interface IConjunctionExpression { - /** TaskLog name */ - name?: (string|null); + /** ConjunctionExpression operator */ + operator?: (flyteidl.core.ConjunctionExpression.LogicalOperator|null); - /** TaskLog messageFormat */ - messageFormat?: (flyteidl.core.TaskLog.MessageFormat|null); + /** ConjunctionExpression leftExpression */ + leftExpression?: (flyteidl.core.IBooleanExpression|null); - /** TaskLog ttl */ - ttl?: (google.protobuf.IDuration|null); + /** ConjunctionExpression rightExpression */ + rightExpression?: (flyteidl.core.IBooleanExpression|null); } - /** Represents a TaskLog. */ - class TaskLog implements ITaskLog { + /** Represents a ConjunctionExpression. */ + class ConjunctionExpression implements IConjunctionExpression { /** - * Constructs a new TaskLog. + * Constructs a new ConjunctionExpression. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ITaskLog); - - /** TaskLog uri. */ - public uri: string; + constructor(properties?: flyteidl.core.IConjunctionExpression); - /** TaskLog name. */ - public name: string; + /** ConjunctionExpression operator. */ + public operator: flyteidl.core.ConjunctionExpression.LogicalOperator; - /** TaskLog messageFormat. */ - public messageFormat: flyteidl.core.TaskLog.MessageFormat; + /** ConjunctionExpression leftExpression. */ + public leftExpression?: (flyteidl.core.IBooleanExpression|null); - /** TaskLog ttl. */ - public ttl?: (google.protobuf.IDuration|null); + /** ConjunctionExpression rightExpression. */ + public rightExpression?: (flyteidl.core.IBooleanExpression|null); /** - * Creates a new TaskLog instance using the specified properties. + * Creates a new ConjunctionExpression instance using the specified properties. * @param [properties] Properties to set - * @returns TaskLog instance + * @returns ConjunctionExpression instance */ - public static create(properties?: flyteidl.core.ITaskLog): flyteidl.core.TaskLog; + public static create(properties?: flyteidl.core.IConjunctionExpression): flyteidl.core.ConjunctionExpression; /** - * Encodes the specified TaskLog message. Does not implicitly {@link flyteidl.core.TaskLog.verify|verify} messages. - * @param message TaskLog message or plain object to encode + * Encodes the specified ConjunctionExpression message. Does not implicitly {@link flyteidl.core.ConjunctionExpression.verify|verify} messages. + * @param message ConjunctionExpression message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ITaskLog, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IConjunctionExpression, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TaskLog message from the specified reader or buffer. + * Decodes a ConjunctionExpression message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TaskLog + * @returns ConjunctionExpression * @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.TaskLog; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.ConjunctionExpression; /** - * Verifies a TaskLog message. + * Verifies a ConjunctionExpression 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); } - namespace TaskLog { + namespace ConjunctionExpression { - /** MessageFormat enum. */ - enum MessageFormat { - UNKNOWN = 0, - CSV = 1, - JSON = 2 + /** LogicalOperator enum. */ + enum LogicalOperator { + AND = 0, + OR = 1 } } - /** Properties of a QualityOfServiceSpec. */ - interface IQualityOfServiceSpec { - - /** QualityOfServiceSpec queueingBudget */ - queueingBudget?: (google.protobuf.IDuration|null); + /** Properties of a WorkflowExecution. */ + interface IWorkflowExecution { } - /** Represents a QualityOfServiceSpec. */ - class QualityOfServiceSpec implements IQualityOfServiceSpec { + /** Represents a WorkflowExecution. */ + class WorkflowExecution implements IWorkflowExecution { /** - * Constructs a new QualityOfServiceSpec. + * Constructs a new WorkflowExecution. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IQualityOfServiceSpec); - - /** QualityOfServiceSpec queueingBudget. */ - public queueingBudget?: (google.protobuf.IDuration|null); + constructor(properties?: flyteidl.core.IWorkflowExecution); /** - * Creates a new QualityOfServiceSpec instance using the specified properties. + * Creates a new WorkflowExecution instance using the specified properties. * @param [properties] Properties to set - * @returns QualityOfServiceSpec instance + * @returns WorkflowExecution instance */ - public static create(properties?: flyteidl.core.IQualityOfServiceSpec): flyteidl.core.QualityOfServiceSpec; + public static create(properties?: flyteidl.core.IWorkflowExecution): flyteidl.core.WorkflowExecution; /** - * Encodes the specified QualityOfServiceSpec message. Does not implicitly {@link flyteidl.core.QualityOfServiceSpec.verify|verify} messages. - * @param message QualityOfServiceSpec message or plain object to encode + * Encodes the specified WorkflowExecution message. Does not implicitly {@link flyteidl.core.WorkflowExecution.verify|verify} messages. + * @param message WorkflowExecution message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IQualityOfServiceSpec, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a QualityOfServiceSpec message from the specified reader or buffer. + * Decodes a WorkflowExecution message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns QualityOfServiceSpec + * @returns WorkflowExecution * @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.QualityOfServiceSpec; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.WorkflowExecution; /** - * Verifies a QualityOfServiceSpec message. + * Verifies a WorkflowExecution 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 QualityOfService. */ - interface IQualityOfService { + namespace WorkflowExecution { - /** QualityOfService tier */ - tier?: (flyteidl.core.QualityOfService.Tier|null); + /** Phase enum. */ + enum Phase { + UNDEFINED = 0, + QUEUED = 1, + RUNNING = 2, + SUCCEEDING = 3, + SUCCEEDED = 4, + FAILING = 5, + FAILED = 6, + ABORTED = 7, + TIMED_OUT = 8, + ABORTING = 9 + } + } - /** QualityOfService spec */ - spec?: (flyteidl.core.IQualityOfServiceSpec|null); + /** Properties of a NodeExecution. */ + interface INodeExecution { } - /** Represents a QualityOfService. */ - class QualityOfService implements IQualityOfService { + /** Represents a NodeExecution. */ + class NodeExecution implements INodeExecution { /** - * Constructs a new QualityOfService. + * Constructs a new NodeExecution. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IQualityOfService); - - /** QualityOfService tier. */ - public tier: flyteidl.core.QualityOfService.Tier; - - /** QualityOfService spec. */ - public spec?: (flyteidl.core.IQualityOfServiceSpec|null); - - /** QualityOfService designation. */ - public designation?: ("tier"|"spec"); + constructor(properties?: flyteidl.core.INodeExecution); /** - * Creates a new QualityOfService instance using the specified properties. + * Creates a new NodeExecution instance using the specified properties. * @param [properties] Properties to set - * @returns QualityOfService instance + * @returns NodeExecution instance */ - public static create(properties?: flyteidl.core.IQualityOfService): flyteidl.core.QualityOfService; + public static create(properties?: flyteidl.core.INodeExecution): flyteidl.core.NodeExecution; /** - * Encodes the specified QualityOfService message. Does not implicitly {@link flyteidl.core.QualityOfService.verify|verify} messages. - * @param message QualityOfService message or plain object to encode + * Encodes the specified NodeExecution message. Does not implicitly {@link flyteidl.core.NodeExecution.verify|verify} messages. + * @param message NodeExecution message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IQualityOfService, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.INodeExecution, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a QualityOfService message from the specified reader or buffer. + * Decodes a NodeExecution message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns QualityOfService + * @returns NodeExecution * @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.QualityOfService; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.NodeExecution; /** - * Verifies a QualityOfService message. + * Verifies a NodeExecution 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); } - namespace QualityOfService { + namespace NodeExecution { - /** Tier enum. */ - enum Tier { + /** Phase enum. */ + enum Phase { UNDEFINED = 0, - HIGH = 1, - MEDIUM = 2, - LOW = 3 + QUEUED = 1, + RUNNING = 2, + SUCCEEDED = 3, + FAILING = 4, + FAILED = 5, + ABORTED = 6, + SKIPPED = 7, + TIMED_OUT = 8, + DYNAMIC_RUNNING = 9, + RECOVERED = 10 } } - /** Properties of a Variable. */ - interface IVariable { - - /** Variable type */ - type?: (flyteidl.core.ILiteralType|null); - - /** Variable description */ - description?: (string|null); - - /** Variable artifactPartialId */ - artifactPartialId?: (flyteidl.core.IArtifactID|null); - - /** Variable artifactTag */ - artifactTag?: (flyteidl.core.IArtifactTag|null); + /** Properties of a TaskExecution. */ + interface ITaskExecution { } - /** Represents a Variable. */ - class Variable implements IVariable { + /** Represents a TaskExecution. */ + class TaskExecution implements ITaskExecution { /** - * Constructs a new Variable. + * Constructs a new TaskExecution. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IVariable); - - /** Variable type. */ - public type?: (flyteidl.core.ILiteralType|null); - - /** Variable description. */ - public description: string; - - /** Variable artifactPartialId. */ - public artifactPartialId?: (flyteidl.core.IArtifactID|null); - - /** Variable artifactTag. */ - public artifactTag?: (flyteidl.core.IArtifactTag|null); + constructor(properties?: flyteidl.core.ITaskExecution); /** - * Creates a new Variable instance using the specified properties. + * Creates a new TaskExecution instance using the specified properties. * @param [properties] Properties to set - * @returns Variable instance + * @returns TaskExecution instance */ - public static create(properties?: flyteidl.core.IVariable): flyteidl.core.Variable; + public static create(properties?: flyteidl.core.ITaskExecution): flyteidl.core.TaskExecution; /** - * Encodes the specified Variable message. Does not implicitly {@link flyteidl.core.Variable.verify|verify} messages. - * @param message Variable message or plain object to encode + * Encodes the specified TaskExecution message. Does not implicitly {@link flyteidl.core.TaskExecution.verify|verify} messages. + * @param message TaskExecution message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IVariable, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ITaskExecution, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Variable message from the specified reader or buffer. + * Decodes a TaskExecution message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Variable + * @returns TaskExecution * @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.Variable; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.TaskExecution; /** - * Verifies a Variable message. + * Verifies a TaskExecution 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 VariableMap. */ - interface IVariableMap { + namespace TaskExecution { - /** VariableMap variables */ - variables?: ({ [k: string]: flyteidl.core.IVariable }|null); + /** Phase enum. */ + enum Phase { + UNDEFINED = 0, + QUEUED = 1, + RUNNING = 2, + SUCCEEDED = 3, + ABORTED = 4, + FAILED = 5, + INITIALIZING = 6, + WAITING_FOR_RESOURCES = 7 + } } - /** Represents a VariableMap. */ - class VariableMap implements IVariableMap { + /** Properties of an ExecutionError. */ + interface IExecutionError { + + /** ExecutionError code */ + code?: (string|null); + + /** ExecutionError message */ + message?: (string|null); + + /** ExecutionError errorUri */ + errorUri?: (string|null); + + /** ExecutionError kind */ + kind?: (flyteidl.core.ExecutionError.ErrorKind|null); + } + + /** Represents an ExecutionError. */ + class ExecutionError implements IExecutionError { /** - * Constructs a new VariableMap. + * Constructs a new ExecutionError. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IVariableMap); + constructor(properties?: flyteidl.core.IExecutionError); - /** VariableMap variables. */ - public variables: { [k: string]: flyteidl.core.IVariable }; + /** ExecutionError code. */ + public code: string; + + /** ExecutionError message. */ + public message: string; + + /** ExecutionError errorUri. */ + public errorUri: string; + + /** ExecutionError kind. */ + public kind: flyteidl.core.ExecutionError.ErrorKind; /** - * Creates a new VariableMap instance using the specified properties. + * Creates a new ExecutionError instance using the specified properties. * @param [properties] Properties to set - * @returns VariableMap instance + * @returns ExecutionError instance */ - public static create(properties?: flyteidl.core.IVariableMap): flyteidl.core.VariableMap; + public static create(properties?: flyteidl.core.IExecutionError): flyteidl.core.ExecutionError; /** - * Encodes the specified VariableMap message. Does not implicitly {@link flyteidl.core.VariableMap.verify|verify} messages. - * @param message VariableMap message or plain object to encode + * Encodes the specified ExecutionError message. Does not implicitly {@link flyteidl.core.ExecutionError.verify|verify} messages. + * @param message ExecutionError message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IVariableMap, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IExecutionError, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a VariableMap message from the specified reader or buffer. + * Decodes an ExecutionError message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns VariableMap + * @returns ExecutionError * @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.VariableMap; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.ExecutionError; /** - * Verifies a VariableMap message. + * Verifies an ExecutionError 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 TypedInterface. */ - interface ITypedInterface { + namespace ExecutionError { - /** TypedInterface inputs */ - inputs?: (flyteidl.core.IVariableMap|null); + /** ErrorKind enum. */ + enum ErrorKind { + UNKNOWN = 0, + USER = 1, + SYSTEM = 2 + } + } - /** TypedInterface outputs */ - outputs?: (flyteidl.core.IVariableMap|null); + /** Properties of a TaskLog. */ + interface ITaskLog { + + /** TaskLog uri */ + uri?: (string|null); + + /** TaskLog name */ + name?: (string|null); + + /** TaskLog messageFormat */ + messageFormat?: (flyteidl.core.TaskLog.MessageFormat|null); + + /** TaskLog ttl */ + ttl?: (google.protobuf.IDuration|null); } - /** Represents a TypedInterface. */ - class TypedInterface implements ITypedInterface { + /** Represents a TaskLog. */ + class TaskLog implements ITaskLog { /** - * Constructs a new TypedInterface. + * Constructs a new TaskLog. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.ITypedInterface); + constructor(properties?: flyteidl.core.ITaskLog); - /** TypedInterface inputs. */ - public inputs?: (flyteidl.core.IVariableMap|null); + /** TaskLog uri. */ + public uri: string; - /** TypedInterface outputs. */ - public outputs?: (flyteidl.core.IVariableMap|null); + /** TaskLog name. */ + public name: string; + + /** TaskLog messageFormat. */ + public messageFormat: flyteidl.core.TaskLog.MessageFormat; + + /** TaskLog ttl. */ + public ttl?: (google.protobuf.IDuration|null); /** - * Creates a new TypedInterface instance using the specified properties. + * Creates a new TaskLog instance using the specified properties. * @param [properties] Properties to set - * @returns TypedInterface instance + * @returns TaskLog instance */ - public static create(properties?: flyteidl.core.ITypedInterface): flyteidl.core.TypedInterface; + public static create(properties?: flyteidl.core.ITaskLog): flyteidl.core.TaskLog; /** - * Encodes the specified TypedInterface message. Does not implicitly {@link flyteidl.core.TypedInterface.verify|verify} messages. - * @param message TypedInterface message or plain object to encode + * Encodes the specified TaskLog message. Does not implicitly {@link flyteidl.core.TaskLog.verify|verify} messages. + * @param message TaskLog message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.ITypedInterface, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.ITaskLog, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TypedInterface message from the specified reader or buffer. + * Decodes a TaskLog message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TypedInterface + * @returns TaskLog * @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.TypedInterface; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.TaskLog; /** - * Verifies a TypedInterface message. + * Verifies a TaskLog 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 Parameter. */ - interface IParameter { - - /** Parameter var */ - "var"?: (flyteidl.core.IVariable|null); - - /** Parameter default */ - "default"?: (flyteidl.core.ILiteral|null); + namespace TaskLog { - /** Parameter required */ - required?: (boolean|null); + /** MessageFormat enum. */ + enum MessageFormat { + UNKNOWN = 0, + CSV = 1, + JSON = 2 + } + } - /** Parameter artifactQuery */ - artifactQuery?: (flyteidl.core.IArtifactQuery|null); + /** Properties of a QualityOfServiceSpec. */ + interface IQualityOfServiceSpec { - /** Parameter artifactId */ - artifactId?: (flyteidl.core.IArtifactID|null); + /** QualityOfServiceSpec queueingBudget */ + queueingBudget?: (google.protobuf.IDuration|null); } - /** Represents a Parameter. */ - class Parameter implements IParameter { + /** Represents a QualityOfServiceSpec. */ + class QualityOfServiceSpec implements IQualityOfServiceSpec { /** - * Constructs a new Parameter. + * Constructs a new QualityOfServiceSpec. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IParameter); - - /** Parameter var. */ - public var?: (flyteidl.core.IVariable|null); - - /** Parameter default. */ - public default?: (flyteidl.core.ILiteral|null); - - /** Parameter required. */ - public required: boolean; - - /** Parameter artifactQuery. */ - public artifactQuery?: (flyteidl.core.IArtifactQuery|null); - - /** Parameter artifactId. */ - public artifactId?: (flyteidl.core.IArtifactID|null); + constructor(properties?: flyteidl.core.IQualityOfServiceSpec); - /** Parameter behavior. */ - public behavior?: ("default"|"required"|"artifactQuery"|"artifactId"); + /** QualityOfServiceSpec queueingBudget. */ + public queueingBudget?: (google.protobuf.IDuration|null); /** - * Creates a new Parameter instance using the specified properties. + * Creates a new QualityOfServiceSpec instance using the specified properties. * @param [properties] Properties to set - * @returns Parameter instance + * @returns QualityOfServiceSpec instance */ - public static create(properties?: flyteidl.core.IParameter): flyteidl.core.Parameter; + public static create(properties?: flyteidl.core.IQualityOfServiceSpec): flyteidl.core.QualityOfServiceSpec; /** - * Encodes the specified Parameter message. Does not implicitly {@link flyteidl.core.Parameter.verify|verify} messages. - * @param message Parameter message or plain object to encode + * Encodes the specified QualityOfServiceSpec message. Does not implicitly {@link flyteidl.core.QualityOfServiceSpec.verify|verify} messages. + * @param message QualityOfServiceSpec message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IParameter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IQualityOfServiceSpec, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Parameter message from the specified reader or buffer. + * Decodes a QualityOfServiceSpec message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Parameter + * @returns QualityOfServiceSpec * @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.Parameter; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.QualityOfServiceSpec; /** - * Verifies a Parameter message. + * Verifies a QualityOfServiceSpec 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 ParameterMap. */ - interface IParameterMap { + /** Properties of a QualityOfService. */ + interface IQualityOfService { - /** ParameterMap parameters */ - parameters?: ({ [k: string]: flyteidl.core.IParameter }|null); + /** QualityOfService tier */ + tier?: (flyteidl.core.QualityOfService.Tier|null); + + /** QualityOfService spec */ + spec?: (flyteidl.core.IQualityOfServiceSpec|null); } - /** Represents a ParameterMap. */ - class ParameterMap implements IParameterMap { + /** Represents a QualityOfService. */ + class QualityOfService implements IQualityOfService { /** - * Constructs a new ParameterMap. + * Constructs a new QualityOfService. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.core.IParameterMap); + constructor(properties?: flyteidl.core.IQualityOfService); - /** ParameterMap parameters. */ - public parameters: { [k: string]: flyteidl.core.IParameter }; + /** QualityOfService tier. */ + public tier: flyteidl.core.QualityOfService.Tier; + + /** QualityOfService spec. */ + public spec?: (flyteidl.core.IQualityOfServiceSpec|null); + + /** QualityOfService designation. */ + public designation?: ("tier"|"spec"); /** - * Creates a new ParameterMap instance using the specified properties. + * Creates a new QualityOfService instance using the specified properties. * @param [properties] Properties to set - * @returns ParameterMap instance + * @returns QualityOfService instance */ - public static create(properties?: flyteidl.core.IParameterMap): flyteidl.core.ParameterMap; + public static create(properties?: flyteidl.core.IQualityOfService): flyteidl.core.QualityOfService; /** - * Encodes the specified ParameterMap message. Does not implicitly {@link flyteidl.core.ParameterMap.verify|verify} messages. - * @param message ParameterMap message or plain object to encode + * Encodes the specified QualityOfService message. Does not implicitly {@link flyteidl.core.QualityOfService.verify|verify} messages. + * @param message QualityOfService message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.core.IParameterMap, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.core.IQualityOfService, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ParameterMap message from the specified reader or buffer. + * Decodes a QualityOfService message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ParameterMap + * @returns QualityOfService * @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.ParameterMap; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.QualityOfService; /** - * Verifies a ParameterMap message. + * Verifies a QualityOfService 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); } + namespace QualityOfService { + + /** Tier enum. */ + enum Tier { + UNDEFINED = 0, + HIGH = 1, + MEDIUM = 2, + LOW = 3 + } + } + /** Properties of a Resources. */ interface IResources { @@ -23398,64 +23541,6 @@ export namespace google { public static verify(message: { [k: string]: any }): (string|null); } - /** Properties of a Duration. */ - interface IDuration { - - /** Duration seconds */ - seconds?: (Long|null); - - /** Duration nanos */ - nanos?: (number|null); - } - - /** Represents a Duration. */ - class Duration implements IDuration { - - /** - * Constructs a new Duration. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IDuration); - - /** Duration seconds. */ - public seconds: Long; - - /** Duration nanos. */ - public nanos: number; - - /** - * Creates a new Duration instance using the specified properties. - * @param [properties] Properties to set - * @returns Duration instance - */ - public static create(properties?: google.protobuf.IDuration): google.protobuf.Duration; - - /** - * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. - * @param message Duration message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Duration message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Duration - * @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): google.protobuf.Duration; - - /** - * Verifies a Duration 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 Struct. */ interface IStruct { @@ -23650,6 +23735,64 @@ export namespace google { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a Duration. */ + interface IDuration { + + /** Duration seconds */ + seconds?: (Long|null); + + /** Duration nanos */ + nanos?: (number|null); + } + + /** Represents a Duration. */ + class Duration implements IDuration { + + /** + * Constructs a new Duration. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDuration); + + /** Duration seconds. */ + public seconds: Long; + + /** Duration nanos. */ + public nanos: number; + + /** + * Creates a new Duration instance using the specified properties. + * @param [properties] Properties to set + * @returns Duration instance + */ + public static create(properties?: google.protobuf.IDuration): google.protobuf.Duration; + + /** + * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @param message Duration message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Duration message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Duration + * @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): google.protobuf.Duration; + + /** + * Verifies a Duration 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 DoubleValue. */ interface IDoubleValue { diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 7a5c6683474..9af0d61e141 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -3036,6 +3036,118 @@ return CompiledWorkflow; })(); + core.CompiledLaunchPlan = (function() { + + /** + * Properties of a CompiledLaunchPlan. + * @memberof flyteidl.core + * @interface ICompiledLaunchPlan + * @property {flyteidl.core.ILaunchPlanTemplate|null} [template] CompiledLaunchPlan template + */ + + /** + * Constructs a new CompiledLaunchPlan. + * @memberof flyteidl.core + * @classdesc Represents a CompiledLaunchPlan. + * @implements ICompiledLaunchPlan + * @constructor + * @param {flyteidl.core.ICompiledLaunchPlan=} [properties] Properties to set + */ + function CompiledLaunchPlan(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]]; + } + + /** + * CompiledLaunchPlan template. + * @member {flyteidl.core.ILaunchPlanTemplate|null|undefined} template + * @memberof flyteidl.core.CompiledLaunchPlan + * @instance + */ + CompiledLaunchPlan.prototype.template = null; + + /** + * Creates a new CompiledLaunchPlan instance using the specified properties. + * @function create + * @memberof flyteidl.core.CompiledLaunchPlan + * @static + * @param {flyteidl.core.ICompiledLaunchPlan=} [properties] Properties to set + * @returns {flyteidl.core.CompiledLaunchPlan} CompiledLaunchPlan instance + */ + CompiledLaunchPlan.create = function create(properties) { + return new CompiledLaunchPlan(properties); + }; + + /** + * Encodes the specified CompiledLaunchPlan message. Does not implicitly {@link flyteidl.core.CompiledLaunchPlan.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.CompiledLaunchPlan + * @static + * @param {flyteidl.core.ICompiledLaunchPlan} message CompiledLaunchPlan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CompiledLaunchPlan.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.template != null && message.hasOwnProperty("template")) + $root.flyteidl.core.LaunchPlanTemplate.encode(message.template, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a CompiledLaunchPlan message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.CompiledLaunchPlan + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.CompiledLaunchPlan} CompiledLaunchPlan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CompiledLaunchPlan.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.CompiledLaunchPlan(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.template = $root.flyteidl.core.LaunchPlanTemplate.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a CompiledLaunchPlan message. + * @function verify + * @memberof flyteidl.core.CompiledLaunchPlan + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CompiledLaunchPlan.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.template != null && message.hasOwnProperty("template")) { + var error = $root.flyteidl.core.LaunchPlanTemplate.verify(message.template); + if (error) + return "template." + error; + } + return null; + }; + + return CompiledLaunchPlan; + })(); + core.CompiledTask = (function() { /** @@ -3157,6 +3269,7 @@ * @property {flyteidl.core.ICompiledWorkflow|null} [primary] CompiledWorkflowClosure primary * @property {Array.|null} [subWorkflows] CompiledWorkflowClosure subWorkflows * @property {Array.|null} [tasks] CompiledWorkflowClosure tasks + * @property {Array.|null} [launchPlans] CompiledWorkflowClosure launchPlans */ /** @@ -3170,6 +3283,7 @@ function CompiledWorkflowClosure(properties) { this.subWorkflows = []; this.tasks = []; + this.launchPlans = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3200,6 +3314,14 @@ */ CompiledWorkflowClosure.prototype.tasks = $util.emptyArray; + /** + * CompiledWorkflowClosure launchPlans. + * @member {Array.} launchPlans + * @memberof flyteidl.core.CompiledWorkflowClosure + * @instance + */ + CompiledWorkflowClosure.prototype.launchPlans = $util.emptyArray; + /** * Creates a new CompiledWorkflowClosure instance using the specified properties. * @function create @@ -3232,6 +3354,9 @@ if (message.tasks != null && message.tasks.length) for (var i = 0; i < message.tasks.length; ++i) $root.flyteidl.core.CompiledTask.encode(message.tasks[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.launchPlans != null && message.launchPlans.length) + for (var i = 0; i < message.launchPlans.length; ++i) + $root.flyteidl.core.CompiledLaunchPlan.encode(message.launchPlans[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; @@ -3266,6 +3391,11 @@ message.tasks = []; message.tasks.push($root.flyteidl.core.CompiledTask.decode(reader, reader.uint32())); break; + case 4: + if (!(message.launchPlans && message.launchPlans.length)) + message.launchPlans = []; + message.launchPlans.push($root.flyteidl.core.CompiledLaunchPlan.decode(reader, reader.uint32())); + break; default: reader.skipType(tag & 7); break; @@ -3308,31 +3438,42 @@ return "tasks." + error; } } + if (message.launchPlans != null && message.hasOwnProperty("launchPlans")) { + if (!Array.isArray(message.launchPlans)) + return "launchPlans: array expected"; + for (var i = 0; i < message.launchPlans.length; ++i) { + var error = $root.flyteidl.core.CompiledLaunchPlan.verify(message.launchPlans[i]); + if (error) + return "launchPlans." + error; + } + } return null; }; return CompiledWorkflowClosure; })(); - core.IfBlock = (function() { + core.Variable = (function() { /** - * Properties of an IfBlock. + * Properties of a Variable. * @memberof flyteidl.core - * @interface IIfBlock - * @property {flyteidl.core.IBooleanExpression|null} [condition] IfBlock condition - * @property {flyteidl.core.INode|null} [thenNode] IfBlock thenNode + * @interface IVariable + * @property {flyteidl.core.ILiteralType|null} [type] Variable type + * @property {string|null} [description] Variable description + * @property {flyteidl.core.IArtifactID|null} [artifactPartialId] Variable artifactPartialId + * @property {flyteidl.core.IArtifactTag|null} [artifactTag] Variable artifactTag */ /** - * Constructs a new IfBlock. + * Constructs a new Variable. * @memberof flyteidl.core - * @classdesc Represents an IfBlock. - * @implements IIfBlock + * @classdesc Represents a Variable. + * @implements IVariable * @constructor - * @param {flyteidl.core.IIfBlock=} [properties] Properties to set + * @param {flyteidl.core.IVariable=} [properties] Properties to set */ - function IfBlock(properties) { + function Variable(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3340,75 +3481,101 @@ } /** - * IfBlock condition. - * @member {flyteidl.core.IBooleanExpression|null|undefined} condition - * @memberof flyteidl.core.IfBlock + * Variable type. + * @member {flyteidl.core.ILiteralType|null|undefined} type + * @memberof flyteidl.core.Variable * @instance */ - IfBlock.prototype.condition = null; + Variable.prototype.type = null; /** - * IfBlock thenNode. - * @member {flyteidl.core.INode|null|undefined} thenNode - * @memberof flyteidl.core.IfBlock + * Variable description. + * @member {string} description + * @memberof flyteidl.core.Variable * @instance */ - IfBlock.prototype.thenNode = null; + Variable.prototype.description = ""; /** - * Creates a new IfBlock instance using the specified properties. + * Variable artifactPartialId. + * @member {flyteidl.core.IArtifactID|null|undefined} artifactPartialId + * @memberof flyteidl.core.Variable + * @instance + */ + Variable.prototype.artifactPartialId = null; + + /** + * Variable artifactTag. + * @member {flyteidl.core.IArtifactTag|null|undefined} artifactTag + * @memberof flyteidl.core.Variable + * @instance + */ + Variable.prototype.artifactTag = null; + + /** + * Creates a new Variable instance using the specified properties. * @function create - * @memberof flyteidl.core.IfBlock + * @memberof flyteidl.core.Variable * @static - * @param {flyteidl.core.IIfBlock=} [properties] Properties to set - * @returns {flyteidl.core.IfBlock} IfBlock instance + * @param {flyteidl.core.IVariable=} [properties] Properties to set + * @returns {flyteidl.core.Variable} Variable instance */ - IfBlock.create = function create(properties) { - return new IfBlock(properties); + Variable.create = function create(properties) { + return new Variable(properties); }; /** - * Encodes the specified IfBlock message. Does not implicitly {@link flyteidl.core.IfBlock.verify|verify} messages. + * Encodes the specified Variable message. Does not implicitly {@link flyteidl.core.Variable.verify|verify} messages. * @function encode - * @memberof flyteidl.core.IfBlock + * @memberof flyteidl.core.Variable * @static - * @param {flyteidl.core.IIfBlock} message IfBlock message or plain object to encode + * @param {flyteidl.core.IVariable} message Variable message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - IfBlock.encode = function encode(message, writer) { + Variable.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.condition != null && message.hasOwnProperty("condition")) - $root.flyteidl.core.BooleanExpression.encode(message.condition, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.thenNode != null && message.hasOwnProperty("thenNode")) - $root.flyteidl.core.Node.encode(message.thenNode, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.type != null && message.hasOwnProperty("type")) + $root.flyteidl.core.LiteralType.encode(message.type, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.description != null && message.hasOwnProperty("description")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.description); + if (message.artifactPartialId != null && message.hasOwnProperty("artifactPartialId")) + $root.flyteidl.core.ArtifactID.encode(message.artifactPartialId, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.artifactTag != null && message.hasOwnProperty("artifactTag")) + $root.flyteidl.core.ArtifactTag.encode(message.artifactTag, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; /** - * Decodes an IfBlock message from the specified reader or buffer. + * Decodes a Variable message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.IfBlock + * @memberof flyteidl.core.Variable * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.IfBlock} IfBlock + * @returns {flyteidl.core.Variable} Variable * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - IfBlock.decode = function decode(reader, length) { + Variable.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.IfBlock(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Variable(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.condition = $root.flyteidl.core.BooleanExpression.decode(reader, reader.uint32()); + message.type = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); break; case 2: - message.thenNode = $root.flyteidl.core.Node.decode(reader, reader.uint32()); + message.description = reader.string(); + break; + case 3: + message.artifactPartialId = $root.flyteidl.core.ArtifactID.decode(reader, reader.uint32()); + break; + case 4: + message.artifactTag = $root.flyteidl.core.ArtifactTag.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -3419,54 +3586,59 @@ }; /** - * Verifies an IfBlock message. + * Verifies a Variable message. * @function verify - * @memberof flyteidl.core.IfBlock + * @memberof flyteidl.core.Variable * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - IfBlock.verify = function verify(message) { + Variable.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.condition != null && message.hasOwnProperty("condition")) { - var error = $root.flyteidl.core.BooleanExpression.verify(message.condition); + if (message.type != null && message.hasOwnProperty("type")) { + var error = $root.flyteidl.core.LiteralType.verify(message.type); if (error) - return "condition." + error; + return "type." + error; } - if (message.thenNode != null && message.hasOwnProperty("thenNode")) { - var error = $root.flyteidl.core.Node.verify(message.thenNode); + if (message.description != null && message.hasOwnProperty("description")) + if (!$util.isString(message.description)) + return "description: string expected"; + if (message.artifactPartialId != null && message.hasOwnProperty("artifactPartialId")) { + var error = $root.flyteidl.core.ArtifactID.verify(message.artifactPartialId); if (error) - return "thenNode." + error; + return "artifactPartialId." + error; + } + if (message.artifactTag != null && message.hasOwnProperty("artifactTag")) { + var error = $root.flyteidl.core.ArtifactTag.verify(message.artifactTag); + if (error) + return "artifactTag." + error; } return null; }; - return IfBlock; + return Variable; })(); - core.IfElseBlock = (function() { + core.VariableMap = (function() { /** - * Properties of an IfElseBlock. + * Properties of a VariableMap. * @memberof flyteidl.core - * @interface IIfElseBlock - * @property {flyteidl.core.IIfBlock|null} ["case"] IfElseBlock case - * @property {Array.|null} [other] IfElseBlock other - * @property {flyteidl.core.INode|null} [elseNode] IfElseBlock elseNode - * @property {flyteidl.core.IError|null} [error] IfElseBlock error + * @interface IVariableMap + * @property {Object.|null} [variables] VariableMap variables */ /** - * Constructs a new IfElseBlock. + * Constructs a new VariableMap. * @memberof flyteidl.core - * @classdesc Represents an IfElseBlock. - * @implements IIfElseBlock + * @classdesc Represents a VariableMap. + * @implements IVariableMap * @constructor - * @param {flyteidl.core.IIfElseBlock=} [properties] Properties to set + * @param {flyteidl.core.IVariableMap=} [properties] Properties to set */ - function IfElseBlock(properties) { - this.other = []; + function VariableMap(properties) { + this.variables = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3474,118 +3646,70 @@ } /** - * IfElseBlock case. - * @member {flyteidl.core.IIfBlock|null|undefined} case - * @memberof flyteidl.core.IfElseBlock - * @instance - */ - IfElseBlock.prototype["case"] = null; - - /** - * IfElseBlock other. - * @member {Array.} other - * @memberof flyteidl.core.IfElseBlock - * @instance - */ - IfElseBlock.prototype.other = $util.emptyArray; - - /** - * IfElseBlock elseNode. - * @member {flyteidl.core.INode|null|undefined} elseNode - * @memberof flyteidl.core.IfElseBlock - * @instance - */ - IfElseBlock.prototype.elseNode = null; - - /** - * IfElseBlock error. - * @member {flyteidl.core.IError|null|undefined} error - * @memberof flyteidl.core.IfElseBlock - * @instance - */ - IfElseBlock.prototype.error = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * IfElseBlock default. - * @member {"elseNode"|"error"|undefined} default_ - * @memberof flyteidl.core.IfElseBlock + * VariableMap variables. + * @member {Object.} variables + * @memberof flyteidl.core.VariableMap * @instance */ - Object.defineProperty(IfElseBlock.prototype, "default", { - get: $util.oneOfGetter($oneOfFields = ["elseNode", "error"]), - set: $util.oneOfSetter($oneOfFields) - }); + VariableMap.prototype.variables = $util.emptyObject; /** - * Creates a new IfElseBlock instance using the specified properties. + * Creates a new VariableMap instance using the specified properties. * @function create - * @memberof flyteidl.core.IfElseBlock + * @memberof flyteidl.core.VariableMap * @static - * @param {flyteidl.core.IIfElseBlock=} [properties] Properties to set - * @returns {flyteidl.core.IfElseBlock} IfElseBlock instance + * @param {flyteidl.core.IVariableMap=} [properties] Properties to set + * @returns {flyteidl.core.VariableMap} VariableMap instance */ - IfElseBlock.create = function create(properties) { - return new IfElseBlock(properties); + VariableMap.create = function create(properties) { + return new VariableMap(properties); }; /** - * Encodes the specified IfElseBlock message. Does not implicitly {@link flyteidl.core.IfElseBlock.verify|verify} messages. + * Encodes the specified VariableMap message. Does not implicitly {@link flyteidl.core.VariableMap.verify|verify} messages. * @function encode - * @memberof flyteidl.core.IfElseBlock + * @memberof flyteidl.core.VariableMap * @static - * @param {flyteidl.core.IIfElseBlock} message IfElseBlock message or plain object to encode + * @param {flyteidl.core.IVariableMap} message VariableMap message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - IfElseBlock.encode = function encode(message, writer) { + VariableMap.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message["case"] != null && message.hasOwnProperty("case")) - $root.flyteidl.core.IfBlock.encode(message["case"], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.other != null && message.other.length) - for (var i = 0; i < message.other.length; ++i) - $root.flyteidl.core.IfBlock.encode(message.other[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.elseNode != null && message.hasOwnProperty("elseNode")) - $root.flyteidl.core.Node.encode(message.elseNode, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.error != null && message.hasOwnProperty("error")) - $root.flyteidl.core.Error.encode(message.error, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.variables != null && message.hasOwnProperty("variables")) + for (var keys = Object.keys(message.variables), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.flyteidl.core.Variable.encode(message.variables[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } return writer; }; /** - * Decodes an IfElseBlock message from the specified reader or buffer. + * Decodes a VariableMap message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.IfElseBlock + * @memberof flyteidl.core.VariableMap * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.IfElseBlock} IfElseBlock + * @returns {flyteidl.core.VariableMap} VariableMap * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - IfElseBlock.decode = function decode(reader, length) { + VariableMap.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.IfElseBlock(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.VariableMap(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message["case"] = $root.flyteidl.core.IfBlock.decode(reader, reader.uint32()); - break; - case 2: - if (!(message.other && message.other.length)) - message.other = []; - message.other.push($root.flyteidl.core.IfBlock.decode(reader, reader.uint32())); - break; - case 3: - message.elseNode = $root.flyteidl.core.Node.decode(reader, reader.uint32()); - break; - case 4: - message.error = $root.flyteidl.core.Error.decode(reader, reader.uint32()); + reader.skip().pos++; + if (message.variables === $util.emptyObject) + message.variables = {}; + key = reader.string(); + reader.pos++; + message.variables[key] = $root.flyteidl.core.Variable.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -3596,73 +3720,51 @@ }; /** - * Verifies an IfElseBlock message. + * Verifies a VariableMap message. * @function verify - * @memberof flyteidl.core.IfElseBlock + * @memberof flyteidl.core.VariableMap * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - IfElseBlock.verify = function verify(message) { + VariableMap.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message["case"] != null && message.hasOwnProperty("case")) { - var error = $root.flyteidl.core.IfBlock.verify(message["case"]); - if (error) - return "case." + error; - } - if (message.other != null && message.hasOwnProperty("other")) { - if (!Array.isArray(message.other)) - return "other: array expected"; - for (var i = 0; i < message.other.length; ++i) { - var error = $root.flyteidl.core.IfBlock.verify(message.other[i]); - if (error) - return "other." + error; - } - } - if (message.elseNode != null && message.hasOwnProperty("elseNode")) { - properties["default"] = 1; - { - var error = $root.flyteidl.core.Node.verify(message.elseNode); - if (error) - return "elseNode." + error; - } - } - if (message.error != null && message.hasOwnProperty("error")) { - if (properties["default"] === 1) - return "default: multiple values"; - properties["default"] = 1; - { - var error = $root.flyteidl.core.Error.verify(message.error); + if (message.variables != null && message.hasOwnProperty("variables")) { + if (!$util.isObject(message.variables)) + return "variables: object expected"; + var key = Object.keys(message.variables); + for (var i = 0; i < key.length; ++i) { + var error = $root.flyteidl.core.Variable.verify(message.variables[key[i]]); if (error) - return "error." + error; + return "variables." + error; } } return null; }; - return IfElseBlock; + return VariableMap; })(); - core.BranchNode = (function() { + core.TypedInterface = (function() { /** - * Properties of a BranchNode. + * Properties of a TypedInterface. * @memberof flyteidl.core - * @interface IBranchNode - * @property {flyteidl.core.IIfElseBlock|null} [ifElse] BranchNode ifElse + * @interface ITypedInterface + * @property {flyteidl.core.IVariableMap|null} [inputs] TypedInterface inputs + * @property {flyteidl.core.IVariableMap|null} [outputs] TypedInterface outputs */ /** - * Constructs a new BranchNode. + * Constructs a new TypedInterface. * @memberof flyteidl.core - * @classdesc Represents a BranchNode. - * @implements IBranchNode + * @classdesc Represents a TypedInterface. + * @implements ITypedInterface * @constructor - * @param {flyteidl.core.IBranchNode=} [properties] Properties to set + * @param {flyteidl.core.ITypedInterface=} [properties] Properties to set */ - function BranchNode(properties) { + function TypedInterface(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3670,62 +3772,75 @@ } /** - * BranchNode ifElse. - * @member {flyteidl.core.IIfElseBlock|null|undefined} ifElse - * @memberof flyteidl.core.BranchNode + * TypedInterface inputs. + * @member {flyteidl.core.IVariableMap|null|undefined} inputs + * @memberof flyteidl.core.TypedInterface * @instance */ - BranchNode.prototype.ifElse = null; + TypedInterface.prototype.inputs = null; /** - * Creates a new BranchNode instance using the specified properties. + * TypedInterface outputs. + * @member {flyteidl.core.IVariableMap|null|undefined} outputs + * @memberof flyteidl.core.TypedInterface + * @instance + */ + TypedInterface.prototype.outputs = null; + + /** + * Creates a new TypedInterface instance using the specified properties. * @function create - * @memberof flyteidl.core.BranchNode + * @memberof flyteidl.core.TypedInterface * @static - * @param {flyteidl.core.IBranchNode=} [properties] Properties to set - * @returns {flyteidl.core.BranchNode} BranchNode instance + * @param {flyteidl.core.ITypedInterface=} [properties] Properties to set + * @returns {flyteidl.core.TypedInterface} TypedInterface instance */ - BranchNode.create = function create(properties) { - return new BranchNode(properties); + TypedInterface.create = function create(properties) { + return new TypedInterface(properties); }; /** - * Encodes the specified BranchNode message. Does not implicitly {@link flyteidl.core.BranchNode.verify|verify} messages. + * Encodes the specified TypedInterface message. Does not implicitly {@link flyteidl.core.TypedInterface.verify|verify} messages. * @function encode - * @memberof flyteidl.core.BranchNode + * @memberof flyteidl.core.TypedInterface * @static - * @param {flyteidl.core.IBranchNode} message BranchNode message or plain object to encode + * @param {flyteidl.core.ITypedInterface} message TypedInterface message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BranchNode.encode = function encode(message, writer) { + TypedInterface.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.ifElse != null && message.hasOwnProperty("ifElse")) - $root.flyteidl.core.IfElseBlock.encode(message.ifElse, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.inputs != null && message.hasOwnProperty("inputs")) + $root.flyteidl.core.VariableMap.encode(message.inputs, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.outputs != null && message.hasOwnProperty("outputs")) + $root.flyteidl.core.VariableMap.encode(message.outputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a BranchNode message from the specified reader or buffer. + * Decodes a TypedInterface message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.BranchNode + * @memberof flyteidl.core.TypedInterface * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.BranchNode} BranchNode + * @returns {flyteidl.core.TypedInterface} TypedInterface * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BranchNode.decode = function decode(reader, length) { + TypedInterface.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.BranchNode(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.TypedInterface(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.ifElse = $root.flyteidl.core.IfElseBlock.decode(reader, reader.uint32()); + message.inputs = $root.flyteidl.core.VariableMap.decode(reader, reader.uint32()); + break; + case 2: + message.outputs = $root.flyteidl.core.VariableMap.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -3736,46 +3851,54 @@ }; /** - * Verifies a BranchNode message. + * Verifies a TypedInterface message. * @function verify - * @memberof flyteidl.core.BranchNode + * @memberof flyteidl.core.TypedInterface * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BranchNode.verify = function verify(message) { + TypedInterface.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.ifElse != null && message.hasOwnProperty("ifElse")) { - var error = $root.flyteidl.core.IfElseBlock.verify(message.ifElse); + if (message.inputs != null && message.hasOwnProperty("inputs")) { + var error = $root.flyteidl.core.VariableMap.verify(message.inputs); if (error) - return "ifElse." + error; + return "inputs." + error; + } + if (message.outputs != null && message.hasOwnProperty("outputs")) { + var error = $root.flyteidl.core.VariableMap.verify(message.outputs); + if (error) + return "outputs." + error; } return null; }; - return BranchNode; + return TypedInterface; })(); - core.TaskNode = (function() { + core.Parameter = (function() { /** - * Properties of a TaskNode. + * Properties of a Parameter. * @memberof flyteidl.core - * @interface ITaskNode - * @property {flyteidl.core.IIdentifier|null} [referenceId] TaskNode referenceId - * @property {flyteidl.core.ITaskNodeOverrides|null} [overrides] TaskNode overrides - */ - - /** - * Constructs a new TaskNode. + * @interface IParameter + * @property {flyteidl.core.IVariable|null} ["var"] Parameter var + * @property {flyteidl.core.ILiteral|null} ["default"] Parameter default + * @property {boolean|null} [required] Parameter required + * @property {flyteidl.core.IArtifactQuery|null} [artifactQuery] Parameter artifactQuery + * @property {flyteidl.core.IArtifactID|null} [artifactId] Parameter artifactId + */ + + /** + * Constructs a new Parameter. * @memberof flyteidl.core - * @classdesc Represents a TaskNode. - * @implements ITaskNode + * @classdesc Represents a Parameter. + * @implements IParameter * @constructor - * @param {flyteidl.core.ITaskNode=} [properties] Properties to set + * @param {flyteidl.core.IParameter=} [properties] Properties to set */ - function TaskNode(properties) { + function Parameter(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3783,89 +3906,128 @@ } /** - * TaskNode referenceId. - * @member {flyteidl.core.IIdentifier|null|undefined} referenceId - * @memberof flyteidl.core.TaskNode + * Parameter var. + * @member {flyteidl.core.IVariable|null|undefined} var + * @memberof flyteidl.core.Parameter * @instance */ - TaskNode.prototype.referenceId = null; + Parameter.prototype["var"] = null; /** - * TaskNode overrides. - * @member {flyteidl.core.ITaskNodeOverrides|null|undefined} overrides - * @memberof flyteidl.core.TaskNode + * Parameter default. + * @member {flyteidl.core.ILiteral|null|undefined} default + * @memberof flyteidl.core.Parameter * @instance */ - TaskNode.prototype.overrides = null; + Parameter.prototype["default"] = null; + + /** + * Parameter required. + * @member {boolean} required + * @memberof flyteidl.core.Parameter + * @instance + */ + Parameter.prototype.required = false; + + /** + * Parameter artifactQuery. + * @member {flyteidl.core.IArtifactQuery|null|undefined} artifactQuery + * @memberof flyteidl.core.Parameter + * @instance + */ + Parameter.prototype.artifactQuery = null; + + /** + * Parameter artifactId. + * @member {flyteidl.core.IArtifactID|null|undefined} artifactId + * @memberof flyteidl.core.Parameter + * @instance + */ + Parameter.prototype.artifactId = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; /** - * TaskNode reference. - * @member {"referenceId"|undefined} reference - * @memberof flyteidl.core.TaskNode + * Parameter behavior. + * @member {"default"|"required"|"artifactQuery"|"artifactId"|undefined} behavior + * @memberof flyteidl.core.Parameter * @instance */ - Object.defineProperty(TaskNode.prototype, "reference", { - get: $util.oneOfGetter($oneOfFields = ["referenceId"]), + Object.defineProperty(Parameter.prototype, "behavior", { + get: $util.oneOfGetter($oneOfFields = ["default", "required", "artifactQuery", "artifactId"]), set: $util.oneOfSetter($oneOfFields) }); /** - * Creates a new TaskNode instance using the specified properties. + * Creates a new Parameter instance using the specified properties. * @function create - * @memberof flyteidl.core.TaskNode + * @memberof flyteidl.core.Parameter * @static - * @param {flyteidl.core.ITaskNode=} [properties] Properties to set - * @returns {flyteidl.core.TaskNode} TaskNode instance + * @param {flyteidl.core.IParameter=} [properties] Properties to set + * @returns {flyteidl.core.Parameter} Parameter instance */ - TaskNode.create = function create(properties) { - return new TaskNode(properties); + Parameter.create = function create(properties) { + return new Parameter(properties); }; /** - * Encodes the specified TaskNode message. Does not implicitly {@link flyteidl.core.TaskNode.verify|verify} messages. + * Encodes the specified Parameter message. Does not implicitly {@link flyteidl.core.Parameter.verify|verify} messages. * @function encode - * @memberof flyteidl.core.TaskNode + * @memberof flyteidl.core.Parameter * @static - * @param {flyteidl.core.ITaskNode} message TaskNode message or plain object to encode + * @param {flyteidl.core.IParameter} message Parameter message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TaskNode.encode = function encode(message, writer) { + Parameter.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.referenceId != null && message.hasOwnProperty("referenceId")) - $root.flyteidl.core.Identifier.encode(message.referenceId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.overrides != null && message.hasOwnProperty("overrides")) - $root.flyteidl.core.TaskNodeOverrides.encode(message.overrides, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message["var"] != null && message.hasOwnProperty("var")) + $root.flyteidl.core.Variable.encode(message["var"], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message["default"] != null && message.hasOwnProperty("default")) + $root.flyteidl.core.Literal.encode(message["default"], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.required != null && message.hasOwnProperty("required")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.required); + if (message.artifactQuery != null && message.hasOwnProperty("artifactQuery")) + $root.flyteidl.core.ArtifactQuery.encode(message.artifactQuery, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.artifactId != null && message.hasOwnProperty("artifactId")) + $root.flyteidl.core.ArtifactID.encode(message.artifactId, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; /** - * Decodes a TaskNode message from the specified reader or buffer. + * Decodes a Parameter message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.TaskNode + * @memberof flyteidl.core.Parameter * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.TaskNode} TaskNode + * @returns {flyteidl.core.Parameter} Parameter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TaskNode.decode = function decode(reader, length) { + Parameter.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.TaskNode(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Parameter(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.referenceId = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); + message["var"] = $root.flyteidl.core.Variable.decode(reader, reader.uint32()); break; case 2: - message.overrides = $root.flyteidl.core.TaskNodeOverrides.decode(reader, reader.uint32()); + message["default"] = $root.flyteidl.core.Literal.decode(reader, reader.uint32()); + break; + case 3: + message.required = reader.bool(); + break; + case 4: + message.artifactQuery = $root.flyteidl.core.ArtifactQuery.decode(reader, reader.uint32()); + break; + case 5: + message.artifactId = $root.flyteidl.core.ArtifactID.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -3876,55 +4038,82 @@ }; /** - * Verifies a TaskNode message. + * Verifies a Parameter message. * @function verify - * @memberof flyteidl.core.TaskNode + * @memberof flyteidl.core.Parameter * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TaskNode.verify = function verify(message) { + Parameter.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.referenceId != null && message.hasOwnProperty("referenceId")) { - properties.reference = 1; + if (message["var"] != null && message.hasOwnProperty("var")) { + var error = $root.flyteidl.core.Variable.verify(message["var"]); + if (error) + return "var." + error; + } + if (message["default"] != null && message.hasOwnProperty("default")) { + properties.behavior = 1; { - var error = $root.flyteidl.core.Identifier.verify(message.referenceId); + var error = $root.flyteidl.core.Literal.verify(message["default"]); if (error) - return "referenceId." + error; + return "default." + error; } } - if (message.overrides != null && message.hasOwnProperty("overrides")) { - var error = $root.flyteidl.core.TaskNodeOverrides.verify(message.overrides); - if (error) - return "overrides." + error; + if (message.required != null && message.hasOwnProperty("required")) { + if (properties.behavior === 1) + return "behavior: multiple values"; + properties.behavior = 1; + if (typeof message.required !== "boolean") + return "required: boolean expected"; + } + if (message.artifactQuery != null && message.hasOwnProperty("artifactQuery")) { + if (properties.behavior === 1) + return "behavior: multiple values"; + properties.behavior = 1; + { + var error = $root.flyteidl.core.ArtifactQuery.verify(message.artifactQuery); + if (error) + return "artifactQuery." + error; + } + } + if (message.artifactId != null && message.hasOwnProperty("artifactId")) { + if (properties.behavior === 1) + return "behavior: multiple values"; + properties.behavior = 1; + { + var error = $root.flyteidl.core.ArtifactID.verify(message.artifactId); + if (error) + return "artifactId." + error; + } } return null; }; - return TaskNode; + return Parameter; })(); - core.WorkflowNode = (function() { + core.ParameterMap = (function() { /** - * Properties of a WorkflowNode. + * Properties of a ParameterMap. * @memberof flyteidl.core - * @interface IWorkflowNode - * @property {flyteidl.core.IIdentifier|null} [launchplanRef] WorkflowNode launchplanRef - * @property {flyteidl.core.IIdentifier|null} [subWorkflowRef] WorkflowNode subWorkflowRef + * @interface IParameterMap + * @property {Object.|null} [parameters] ParameterMap parameters */ /** - * Constructs a new WorkflowNode. + * Constructs a new ParameterMap. * @memberof flyteidl.core - * @classdesc Represents a WorkflowNode. - * @implements IWorkflowNode + * @classdesc Represents a ParameterMap. + * @implements IParameterMap * @constructor - * @param {flyteidl.core.IWorkflowNode=} [properties] Properties to set + * @param {flyteidl.core.IParameterMap=} [properties] Properties to set */ - function WorkflowNode(properties) { + function ParameterMap(properties) { + this.parameters = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3932,89 +4121,70 @@ } /** - * WorkflowNode launchplanRef. - * @member {flyteidl.core.IIdentifier|null|undefined} launchplanRef - * @memberof flyteidl.core.WorkflowNode - * @instance - */ - WorkflowNode.prototype.launchplanRef = null; - - /** - * WorkflowNode subWorkflowRef. - * @member {flyteidl.core.IIdentifier|null|undefined} subWorkflowRef - * @memberof flyteidl.core.WorkflowNode - * @instance - */ - WorkflowNode.prototype.subWorkflowRef = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * WorkflowNode reference. - * @member {"launchplanRef"|"subWorkflowRef"|undefined} reference - * @memberof flyteidl.core.WorkflowNode + * ParameterMap parameters. + * @member {Object.} parameters + * @memberof flyteidl.core.ParameterMap * @instance */ - Object.defineProperty(WorkflowNode.prototype, "reference", { - get: $util.oneOfGetter($oneOfFields = ["launchplanRef", "subWorkflowRef"]), - set: $util.oneOfSetter($oneOfFields) - }); + ParameterMap.prototype.parameters = $util.emptyObject; /** - * Creates a new WorkflowNode instance using the specified properties. + * Creates a new ParameterMap instance using the specified properties. * @function create - * @memberof flyteidl.core.WorkflowNode + * @memberof flyteidl.core.ParameterMap * @static - * @param {flyteidl.core.IWorkflowNode=} [properties] Properties to set - * @returns {flyteidl.core.WorkflowNode} WorkflowNode instance + * @param {flyteidl.core.IParameterMap=} [properties] Properties to set + * @returns {flyteidl.core.ParameterMap} ParameterMap instance */ - WorkflowNode.create = function create(properties) { - return new WorkflowNode(properties); + ParameterMap.create = function create(properties) { + return new ParameterMap(properties); }; /** - * Encodes the specified WorkflowNode message. Does not implicitly {@link flyteidl.core.WorkflowNode.verify|verify} messages. + * Encodes the specified ParameterMap message. Does not implicitly {@link flyteidl.core.ParameterMap.verify|verify} messages. * @function encode - * @memberof flyteidl.core.WorkflowNode + * @memberof flyteidl.core.ParameterMap * @static - * @param {flyteidl.core.IWorkflowNode} message WorkflowNode message or plain object to encode + * @param {flyteidl.core.IParameterMap} message ParameterMap message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - WorkflowNode.encode = function encode(message, writer) { + ParameterMap.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.launchplanRef != null && message.hasOwnProperty("launchplanRef")) - $root.flyteidl.core.Identifier.encode(message.launchplanRef, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.subWorkflowRef != null && message.hasOwnProperty("subWorkflowRef")) - $root.flyteidl.core.Identifier.encode(message.subWorkflowRef, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.parameters != null && message.hasOwnProperty("parameters")) + for (var keys = Object.keys(message.parameters), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.flyteidl.core.Parameter.encode(message.parameters[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } return writer; }; /** - * Decodes a WorkflowNode message from the specified reader or buffer. + * Decodes a ParameterMap message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.WorkflowNode + * @memberof flyteidl.core.ParameterMap * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.WorkflowNode} WorkflowNode + * @returns {flyteidl.core.ParameterMap} ParameterMap * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - WorkflowNode.decode = function decode(reader, length) { + ParameterMap.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.WorkflowNode(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.ParameterMap(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.launchplanRef = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); - break; - case 2: - message.subWorkflowRef = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); + reader.skip().pos++; + if (message.parameters === $util.emptyObject) + message.parameters = {}; + key = reader.string(); + reader.pos++; + message.parameters[key] = $root.flyteidl.core.Parameter.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -4025,59 +4195,81 @@ }; /** - * Verifies a WorkflowNode message. + * Verifies a ParameterMap message. * @function verify - * @memberof flyteidl.core.WorkflowNode + * @memberof flyteidl.core.ParameterMap * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - WorkflowNode.verify = function verify(message) { + ParameterMap.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.launchplanRef != null && message.hasOwnProperty("launchplanRef")) { - properties.reference = 1; - { - var error = $root.flyteidl.core.Identifier.verify(message.launchplanRef); - if (error) - return "launchplanRef." + error; - } - } - if (message.subWorkflowRef != null && message.hasOwnProperty("subWorkflowRef")) { - if (properties.reference === 1) - return "reference: multiple values"; - properties.reference = 1; - { - var error = $root.flyteidl.core.Identifier.verify(message.subWorkflowRef); + if (message.parameters != null && message.hasOwnProperty("parameters")) { + if (!$util.isObject(message.parameters)) + return "parameters: object expected"; + var key = Object.keys(message.parameters); + for (var i = 0; i < key.length; ++i) { + var error = $root.flyteidl.core.Parameter.verify(message.parameters[key[i]]); if (error) - return "subWorkflowRef." + error; + return "parameters." + error; } } return null; }; - return WorkflowNode; + return ParameterMap; })(); - core.ApproveCondition = (function() { + /** + * SimpleType enum. + * @name flyteidl.core.SimpleType + * @enum {string} + * @property {number} NONE=0 NONE value + * @property {number} INTEGER=1 INTEGER value + * @property {number} FLOAT=2 FLOAT value + * @property {number} STRING=3 STRING value + * @property {number} BOOLEAN=4 BOOLEAN value + * @property {number} DATETIME=5 DATETIME value + * @property {number} DURATION=6 DURATION value + * @property {number} BINARY=7 BINARY value + * @property {number} ERROR=8 ERROR value + * @property {number} STRUCT=9 STRUCT value + */ + core.SimpleType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "NONE"] = 0; + values[valuesById[1] = "INTEGER"] = 1; + values[valuesById[2] = "FLOAT"] = 2; + values[valuesById[3] = "STRING"] = 3; + values[valuesById[4] = "BOOLEAN"] = 4; + values[valuesById[5] = "DATETIME"] = 5; + values[valuesById[6] = "DURATION"] = 6; + values[valuesById[7] = "BINARY"] = 7; + values[valuesById[8] = "ERROR"] = 8; + values[valuesById[9] = "STRUCT"] = 9; + return values; + })(); + + core.SchemaType = (function() { /** - * Properties of an ApproveCondition. + * Properties of a SchemaType. * @memberof flyteidl.core - * @interface IApproveCondition - * @property {string|null} [signalId] ApproveCondition signalId + * @interface ISchemaType + * @property {Array.|null} [columns] SchemaType columns */ /** - * Constructs a new ApproveCondition. + * Constructs a new SchemaType. * @memberof flyteidl.core - * @classdesc Represents an ApproveCondition. - * @implements IApproveCondition + * @classdesc Represents a SchemaType. + * @implements ISchemaType * @constructor - * @param {flyteidl.core.IApproveCondition=} [properties] Properties to set + * @param {flyteidl.core.ISchemaType=} [properties] Properties to set */ - function ApproveCondition(properties) { + function SchemaType(properties) { + this.columns = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4085,62 +4277,65 @@ } /** - * ApproveCondition signalId. - * @member {string} signalId - * @memberof flyteidl.core.ApproveCondition + * SchemaType columns. + * @member {Array.} columns + * @memberof flyteidl.core.SchemaType * @instance */ - ApproveCondition.prototype.signalId = ""; + SchemaType.prototype.columns = $util.emptyArray; /** - * Creates a new ApproveCondition instance using the specified properties. + * Creates a new SchemaType instance using the specified properties. * @function create - * @memberof flyteidl.core.ApproveCondition + * @memberof flyteidl.core.SchemaType * @static - * @param {flyteidl.core.IApproveCondition=} [properties] Properties to set - * @returns {flyteidl.core.ApproveCondition} ApproveCondition instance + * @param {flyteidl.core.ISchemaType=} [properties] Properties to set + * @returns {flyteidl.core.SchemaType} SchemaType instance */ - ApproveCondition.create = function create(properties) { - return new ApproveCondition(properties); + SchemaType.create = function create(properties) { + return new SchemaType(properties); }; /** - * Encodes the specified ApproveCondition message. Does not implicitly {@link flyteidl.core.ApproveCondition.verify|verify} messages. + * Encodes the specified SchemaType message. Does not implicitly {@link flyteidl.core.SchemaType.verify|verify} messages. * @function encode - * @memberof flyteidl.core.ApproveCondition + * @memberof flyteidl.core.SchemaType * @static - * @param {flyteidl.core.IApproveCondition} message ApproveCondition message or plain object to encode + * @param {flyteidl.core.ISchemaType} message SchemaType message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ApproveCondition.encode = function encode(message, writer) { + SchemaType.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.signalId != null && message.hasOwnProperty("signalId")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.signalId); + if (message.columns != null && message.columns.length) + for (var i = 0; i < message.columns.length; ++i) + $root.flyteidl.core.SchemaType.SchemaColumn.encode(message.columns[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Decodes an ApproveCondition message from the specified reader or buffer. + * Decodes a SchemaType message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.ApproveCondition + * @memberof flyteidl.core.SchemaType * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.ApproveCondition} ApproveCondition + * @returns {flyteidl.core.SchemaType} SchemaType * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ApproveCondition.decode = function decode(reader, length) { + SchemaType.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.ApproveCondition(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.SchemaType(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.signalId = reader.string(); + case 3: + if (!(message.columns && message.columns.length)) + message.columns = []; + message.columns.push($root.flyteidl.core.SchemaType.SchemaColumn.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -4151,134 +4346,316 @@ }; /** - * Verifies an ApproveCondition message. + * Verifies a SchemaType message. * @function verify - * @memberof flyteidl.core.ApproveCondition + * @memberof flyteidl.core.SchemaType * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ApproveCondition.verify = function verify(message) { + SchemaType.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.signalId != null && message.hasOwnProperty("signalId")) - if (!$util.isString(message.signalId)) - return "signalId: string expected"; + if (message.columns != null && message.hasOwnProperty("columns")) { + if (!Array.isArray(message.columns)) + return "columns: array expected"; + for (var i = 0; i < message.columns.length; ++i) { + var error = $root.flyteidl.core.SchemaType.SchemaColumn.verify(message.columns[i]); + if (error) + return "columns." + error; + } + } return null; }; - return ApproveCondition; - })(); + SchemaType.SchemaColumn = (function() { - core.SignalCondition = (function() { + /** + * Properties of a SchemaColumn. + * @memberof flyteidl.core.SchemaType + * @interface ISchemaColumn + * @property {string|null} [name] SchemaColumn name + * @property {flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType|null} [type] SchemaColumn type + */ - /** - * Properties of a SignalCondition. - * @memberof flyteidl.core - * @interface ISignalCondition - * @property {string|null} [signalId] SignalCondition signalId - * @property {flyteidl.core.ILiteralType|null} [type] SignalCondition type - * @property {string|null} [outputVariableName] SignalCondition outputVariableName - */ + /** + * Constructs a new SchemaColumn. + * @memberof flyteidl.core.SchemaType + * @classdesc Represents a SchemaColumn. + * @implements ISchemaColumn + * @constructor + * @param {flyteidl.core.SchemaType.ISchemaColumn=} [properties] Properties to set + */ + function SchemaColumn(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]]; + } - /** - * Constructs a new SignalCondition. - * @memberof flyteidl.core - * @classdesc Represents a SignalCondition. - * @implements ISignalCondition - * @constructor - * @param {flyteidl.core.ISignalCondition=} [properties] Properties to set - */ - function SignalCondition(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]]; - } + /** + * SchemaColumn name. + * @member {string} name + * @memberof flyteidl.core.SchemaType.SchemaColumn + * @instance + */ + SchemaColumn.prototype.name = ""; - /** - * SignalCondition signalId. - * @member {string} signalId - * @memberof flyteidl.core.SignalCondition - * @instance - */ - SignalCondition.prototype.signalId = ""; + /** + * SchemaColumn type. + * @member {flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType} type + * @memberof flyteidl.core.SchemaType.SchemaColumn + * @instance + */ + SchemaColumn.prototype.type = 0; - /** - * SignalCondition type. - * @member {flyteidl.core.ILiteralType|null|undefined} type - * @memberof flyteidl.core.SignalCondition - * @instance - */ - SignalCondition.prototype.type = null; + /** + * Creates a new SchemaColumn instance using the specified properties. + * @function create + * @memberof flyteidl.core.SchemaType.SchemaColumn + * @static + * @param {flyteidl.core.SchemaType.ISchemaColumn=} [properties] Properties to set + * @returns {flyteidl.core.SchemaType.SchemaColumn} SchemaColumn instance + */ + SchemaColumn.create = function create(properties) { + return new SchemaColumn(properties); + }; - /** - * SignalCondition outputVariableName. - * @member {string} outputVariableName - * @memberof flyteidl.core.SignalCondition + /** + * Encodes the specified SchemaColumn message. Does not implicitly {@link flyteidl.core.SchemaType.SchemaColumn.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.SchemaType.SchemaColumn + * @static + * @param {flyteidl.core.SchemaType.ISchemaColumn} message SchemaColumn message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SchemaColumn.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.type != null && message.hasOwnProperty("type")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.type); + return writer; + }; + + /** + * Decodes a SchemaColumn message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.SchemaType.SchemaColumn + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.SchemaType.SchemaColumn} SchemaColumn + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SchemaColumn.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.SchemaType.SchemaColumn(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.type = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a SchemaColumn message. + * @function verify + * @memberof flyteidl.core.SchemaType.SchemaColumn + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SchemaColumn.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + break; + } + return null; + }; + + /** + * SchemaColumnType enum. + * @name flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType + * @enum {string} + * @property {number} INTEGER=0 INTEGER value + * @property {number} FLOAT=1 FLOAT value + * @property {number} STRING=2 STRING value + * @property {number} BOOLEAN=3 BOOLEAN value + * @property {number} DATETIME=4 DATETIME value + * @property {number} DURATION=5 DURATION value + */ + SchemaColumn.SchemaColumnType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "INTEGER"] = 0; + values[valuesById[1] = "FLOAT"] = 1; + values[valuesById[2] = "STRING"] = 2; + values[valuesById[3] = "BOOLEAN"] = 3; + values[valuesById[4] = "DATETIME"] = 4; + values[valuesById[5] = "DURATION"] = 5; + return values; + })(); + + return SchemaColumn; + })(); + + return SchemaType; + })(); + + core.StructuredDatasetType = (function() { + + /** + * Properties of a StructuredDatasetType. + * @memberof flyteidl.core + * @interface IStructuredDatasetType + * @property {Array.|null} [columns] StructuredDatasetType columns + * @property {string|null} [format] StructuredDatasetType format + * @property {string|null} [externalSchemaType] StructuredDatasetType externalSchemaType + * @property {Uint8Array|null} [externalSchemaBytes] StructuredDatasetType externalSchemaBytes + */ + + /** + * Constructs a new StructuredDatasetType. + * @memberof flyteidl.core + * @classdesc Represents a StructuredDatasetType. + * @implements IStructuredDatasetType + * @constructor + * @param {flyteidl.core.IStructuredDatasetType=} [properties] Properties to set + */ + function StructuredDatasetType(properties) { + this.columns = []; + 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]]; + } + + /** + * StructuredDatasetType columns. + * @member {Array.} columns + * @memberof flyteidl.core.StructuredDatasetType * @instance */ - SignalCondition.prototype.outputVariableName = ""; + StructuredDatasetType.prototype.columns = $util.emptyArray; /** - * Creates a new SignalCondition instance using the specified properties. + * StructuredDatasetType format. + * @member {string} format + * @memberof flyteidl.core.StructuredDatasetType + * @instance + */ + StructuredDatasetType.prototype.format = ""; + + /** + * StructuredDatasetType externalSchemaType. + * @member {string} externalSchemaType + * @memberof flyteidl.core.StructuredDatasetType + * @instance + */ + StructuredDatasetType.prototype.externalSchemaType = ""; + + /** + * StructuredDatasetType externalSchemaBytes. + * @member {Uint8Array} externalSchemaBytes + * @memberof flyteidl.core.StructuredDatasetType + * @instance + */ + StructuredDatasetType.prototype.externalSchemaBytes = $util.newBuffer([]); + + /** + * Creates a new StructuredDatasetType instance using the specified properties. * @function create - * @memberof flyteidl.core.SignalCondition + * @memberof flyteidl.core.StructuredDatasetType * @static - * @param {flyteidl.core.ISignalCondition=} [properties] Properties to set - * @returns {flyteidl.core.SignalCondition} SignalCondition instance + * @param {flyteidl.core.IStructuredDatasetType=} [properties] Properties to set + * @returns {flyteidl.core.StructuredDatasetType} StructuredDatasetType instance */ - SignalCondition.create = function create(properties) { - return new SignalCondition(properties); + StructuredDatasetType.create = function create(properties) { + return new StructuredDatasetType(properties); }; /** - * Encodes the specified SignalCondition message. Does not implicitly {@link flyteidl.core.SignalCondition.verify|verify} messages. + * Encodes the specified StructuredDatasetType message. Does not implicitly {@link flyteidl.core.StructuredDatasetType.verify|verify} messages. * @function encode - * @memberof flyteidl.core.SignalCondition + * @memberof flyteidl.core.StructuredDatasetType * @static - * @param {flyteidl.core.ISignalCondition} message SignalCondition message or plain object to encode + * @param {flyteidl.core.IStructuredDatasetType} message StructuredDatasetType message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SignalCondition.encode = function encode(message, writer) { + StructuredDatasetType.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.signalId != null && message.hasOwnProperty("signalId")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.signalId); - if (message.type != null && message.hasOwnProperty("type")) - $root.flyteidl.core.LiteralType.encode(message.type, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.outputVariableName != null && message.hasOwnProperty("outputVariableName")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputVariableName); + if (message.columns != null && message.columns.length) + for (var i = 0; i < message.columns.length; ++i) + $root.flyteidl.core.StructuredDatasetType.DatasetColumn.encode(message.columns[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.format != null && message.hasOwnProperty("format")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.format); + if (message.externalSchemaType != null && message.hasOwnProperty("externalSchemaType")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.externalSchemaType); + if (message.externalSchemaBytes != null && message.hasOwnProperty("externalSchemaBytes")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.externalSchemaBytes); return writer; }; /** - * Decodes a SignalCondition message from the specified reader or buffer. + * Decodes a StructuredDatasetType message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.SignalCondition + * @memberof flyteidl.core.StructuredDatasetType * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.SignalCondition} SignalCondition + * @returns {flyteidl.core.StructuredDatasetType} StructuredDatasetType * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SignalCondition.decode = function decode(reader, length) { + StructuredDatasetType.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.SignalCondition(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.StructuredDatasetType(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.signalId = reader.string(); + if (!(message.columns && message.columns.length)) + message.columns = []; + message.columns.push($root.flyteidl.core.StructuredDatasetType.DatasetColumn.decode(reader, reader.uint32())); break; case 2: - message.type = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + message.format = reader.string(); break; case 3: - message.outputVariableName = reader.string(); + message.externalSchemaType = reader.string(); + break; + case 4: + message.externalSchemaBytes = reader.bytes(); break; default: reader.skipType(tag & 7); @@ -4289,51 +4666,188 @@ }; /** - * Verifies a SignalCondition message. + * Verifies a StructuredDatasetType message. * @function verify - * @memberof flyteidl.core.SignalCondition + * @memberof flyteidl.core.StructuredDatasetType * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SignalCondition.verify = function verify(message) { + StructuredDatasetType.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.signalId != null && message.hasOwnProperty("signalId")) - if (!$util.isString(message.signalId)) - return "signalId: string expected"; - if (message.type != null && message.hasOwnProperty("type")) { - var error = $root.flyteidl.core.LiteralType.verify(message.type); - if (error) - return "type." + error; + if (message.columns != null && message.hasOwnProperty("columns")) { + if (!Array.isArray(message.columns)) + return "columns: array expected"; + for (var i = 0; i < message.columns.length; ++i) { + var error = $root.flyteidl.core.StructuredDatasetType.DatasetColumn.verify(message.columns[i]); + if (error) + return "columns." + error; + } } - if (message.outputVariableName != null && message.hasOwnProperty("outputVariableName")) - if (!$util.isString(message.outputVariableName)) - return "outputVariableName: string expected"; + if (message.format != null && message.hasOwnProperty("format")) + if (!$util.isString(message.format)) + return "format: string expected"; + if (message.externalSchemaType != null && message.hasOwnProperty("externalSchemaType")) + if (!$util.isString(message.externalSchemaType)) + return "externalSchemaType: string expected"; + if (message.externalSchemaBytes != null && message.hasOwnProperty("externalSchemaBytes")) + if (!(message.externalSchemaBytes && typeof message.externalSchemaBytes.length === "number" || $util.isString(message.externalSchemaBytes))) + return "externalSchemaBytes: buffer expected"; return null; }; - return SignalCondition; + StructuredDatasetType.DatasetColumn = (function() { + + /** + * Properties of a DatasetColumn. + * @memberof flyteidl.core.StructuredDatasetType + * @interface IDatasetColumn + * @property {string|null} [name] DatasetColumn name + * @property {flyteidl.core.ILiteralType|null} [literalType] DatasetColumn literalType + */ + + /** + * Constructs a new DatasetColumn. + * @memberof flyteidl.core.StructuredDatasetType + * @classdesc Represents a DatasetColumn. + * @implements IDatasetColumn + * @constructor + * @param {flyteidl.core.StructuredDatasetType.IDatasetColumn=} [properties] Properties to set + */ + function DatasetColumn(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]]; + } + + /** + * DatasetColumn name. + * @member {string} name + * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn + * @instance + */ + DatasetColumn.prototype.name = ""; + + /** + * DatasetColumn literalType. + * @member {flyteidl.core.ILiteralType|null|undefined} literalType + * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn + * @instance + */ + DatasetColumn.prototype.literalType = null; + + /** + * Creates a new DatasetColumn instance using the specified properties. + * @function create + * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn + * @static + * @param {flyteidl.core.StructuredDatasetType.IDatasetColumn=} [properties] Properties to set + * @returns {flyteidl.core.StructuredDatasetType.DatasetColumn} DatasetColumn instance + */ + DatasetColumn.create = function create(properties) { + return new DatasetColumn(properties); + }; + + /** + * Encodes the specified DatasetColumn message. Does not implicitly {@link flyteidl.core.StructuredDatasetType.DatasetColumn.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn + * @static + * @param {flyteidl.core.StructuredDatasetType.IDatasetColumn} message DatasetColumn message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DatasetColumn.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.literalType != null && message.hasOwnProperty("literalType")) + $root.flyteidl.core.LiteralType.encode(message.literalType, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a DatasetColumn message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.StructuredDatasetType.DatasetColumn} DatasetColumn + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DatasetColumn.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.StructuredDatasetType.DatasetColumn(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.literalType = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a DatasetColumn message. + * @function verify + * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DatasetColumn.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.literalType != null && message.hasOwnProperty("literalType")) { + var error = $root.flyteidl.core.LiteralType.verify(message.literalType); + if (error) + return "literalType." + error; + } + return null; + }; + + return DatasetColumn; + })(); + + return StructuredDatasetType; })(); - core.SleepCondition = (function() { + core.BlobType = (function() { /** - * Properties of a SleepCondition. + * Properties of a BlobType. * @memberof flyteidl.core - * @interface ISleepCondition - * @property {google.protobuf.IDuration|null} [duration] SleepCondition duration + * @interface IBlobType + * @property {string|null} [format] BlobType format + * @property {flyteidl.core.BlobType.BlobDimensionality|null} [dimensionality] BlobType dimensionality */ /** - * Constructs a new SleepCondition. + * Constructs a new BlobType. * @memberof flyteidl.core - * @classdesc Represents a SleepCondition. - * @implements ISleepCondition + * @classdesc Represents a BlobType. + * @implements IBlobType * @constructor - * @param {flyteidl.core.ISleepCondition=} [properties] Properties to set + * @param {flyteidl.core.IBlobType=} [properties] Properties to set */ - function SleepCondition(properties) { + function BlobType(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4341,62 +4855,75 @@ } /** - * SleepCondition duration. - * @member {google.protobuf.IDuration|null|undefined} duration - * @memberof flyteidl.core.SleepCondition + * BlobType format. + * @member {string} format + * @memberof flyteidl.core.BlobType * @instance */ - SleepCondition.prototype.duration = null; + BlobType.prototype.format = ""; /** - * Creates a new SleepCondition instance using the specified properties. + * BlobType dimensionality. + * @member {flyteidl.core.BlobType.BlobDimensionality} dimensionality + * @memberof flyteidl.core.BlobType + * @instance + */ + BlobType.prototype.dimensionality = 0; + + /** + * Creates a new BlobType instance using the specified properties. * @function create - * @memberof flyteidl.core.SleepCondition + * @memberof flyteidl.core.BlobType * @static - * @param {flyteidl.core.ISleepCondition=} [properties] Properties to set - * @returns {flyteidl.core.SleepCondition} SleepCondition instance + * @param {flyteidl.core.IBlobType=} [properties] Properties to set + * @returns {flyteidl.core.BlobType} BlobType instance */ - SleepCondition.create = function create(properties) { - return new SleepCondition(properties); + BlobType.create = function create(properties) { + return new BlobType(properties); }; /** - * Encodes the specified SleepCondition message. Does not implicitly {@link flyteidl.core.SleepCondition.verify|verify} messages. + * Encodes the specified BlobType message. Does not implicitly {@link flyteidl.core.BlobType.verify|verify} messages. * @function encode - * @memberof flyteidl.core.SleepCondition + * @memberof flyteidl.core.BlobType * @static - * @param {flyteidl.core.ISleepCondition} message SleepCondition message or plain object to encode + * @param {flyteidl.core.IBlobType} message BlobType message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SleepCondition.encode = function encode(message, writer) { + BlobType.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.duration != null && message.hasOwnProperty("duration")) - $root.google.protobuf.Duration.encode(message.duration, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.format != null && message.hasOwnProperty("format")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.format); + if (message.dimensionality != null && message.hasOwnProperty("dimensionality")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.dimensionality); return writer; }; /** - * Decodes a SleepCondition message from the specified reader or buffer. + * Decodes a BlobType message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.SleepCondition + * @memberof flyteidl.core.BlobType * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.SleepCondition} SleepCondition + * @returns {flyteidl.core.BlobType} BlobType * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SleepCondition.decode = function decode(reader, length) { + BlobType.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.SleepCondition(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.BlobType(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.format = reader.string(); + break; + case 2: + message.dimensionality = reader.int32(); break; default: reader.skipType(tag & 7); @@ -4407,47 +4934,66 @@ }; /** - * Verifies a SleepCondition message. + * Verifies a BlobType message. * @function verify - * @memberof flyteidl.core.SleepCondition + * @memberof flyteidl.core.BlobType * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SleepCondition.verify = function verify(message) { + BlobType.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.duration != null && message.hasOwnProperty("duration")) { - var error = $root.google.protobuf.Duration.verify(message.duration); - if (error) - return "duration." + error; - } + if (message.format != null && message.hasOwnProperty("format")) + if (!$util.isString(message.format)) + return "format: string expected"; + if (message.dimensionality != null && message.hasOwnProperty("dimensionality")) + switch (message.dimensionality) { + default: + return "dimensionality: enum value expected"; + case 0: + case 1: + break; + } return null; }; - return SleepCondition; + /** + * BlobDimensionality enum. + * @name flyteidl.core.BlobType.BlobDimensionality + * @enum {string} + * @property {number} SINGLE=0 SINGLE value + * @property {number} MULTIPART=1 MULTIPART value + */ + BlobType.BlobDimensionality = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "SINGLE"] = 0; + values[valuesById[1] = "MULTIPART"] = 1; + return values; + })(); + + return BlobType; })(); - core.GateNode = (function() { + core.EnumType = (function() { /** - * Properties of a GateNode. + * Properties of an EnumType. * @memberof flyteidl.core - * @interface IGateNode - * @property {flyteidl.core.IApproveCondition|null} [approve] GateNode approve - * @property {flyteidl.core.ISignalCondition|null} [signal] GateNode signal - * @property {flyteidl.core.ISleepCondition|null} [sleep] GateNode sleep + * @interface IEnumType + * @property {Array.|null} [values] EnumType values */ /** - * Constructs a new GateNode. + * Constructs a new EnumType. * @memberof flyteidl.core - * @classdesc Represents a GateNode. - * @implements IGateNode + * @classdesc Represents an EnumType. + * @implements IEnumType * @constructor - * @param {flyteidl.core.IGateNode=} [properties] Properties to set + * @param {flyteidl.core.IEnumType=} [properties] Properties to set */ - function GateNode(properties) { + function EnumType(properties) { + this.values = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4455,102 +5001,65 @@ } /** - * GateNode approve. - * @member {flyteidl.core.IApproveCondition|null|undefined} approve - * @memberof flyteidl.core.GateNode - * @instance - */ - GateNode.prototype.approve = null; - - /** - * GateNode signal. - * @member {flyteidl.core.ISignalCondition|null|undefined} signal - * @memberof flyteidl.core.GateNode - * @instance - */ - GateNode.prototype.signal = null; - - /** - * GateNode sleep. - * @member {flyteidl.core.ISleepCondition|null|undefined} sleep - * @memberof flyteidl.core.GateNode - * @instance - */ - GateNode.prototype.sleep = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * GateNode condition. - * @member {"approve"|"signal"|"sleep"|undefined} condition - * @memberof flyteidl.core.GateNode + * EnumType values. + * @member {Array.} values + * @memberof flyteidl.core.EnumType * @instance */ - Object.defineProperty(GateNode.prototype, "condition", { - get: $util.oneOfGetter($oneOfFields = ["approve", "signal", "sleep"]), - set: $util.oneOfSetter($oneOfFields) - }); + EnumType.prototype.values = $util.emptyArray; /** - * Creates a new GateNode instance using the specified properties. + * Creates a new EnumType instance using the specified properties. * @function create - * @memberof flyteidl.core.GateNode + * @memberof flyteidl.core.EnumType * @static - * @param {flyteidl.core.IGateNode=} [properties] Properties to set - * @returns {flyteidl.core.GateNode} GateNode instance + * @param {flyteidl.core.IEnumType=} [properties] Properties to set + * @returns {flyteidl.core.EnumType} EnumType instance */ - GateNode.create = function create(properties) { - return new GateNode(properties); + EnumType.create = function create(properties) { + return new EnumType(properties); }; /** - * Encodes the specified GateNode message. Does not implicitly {@link flyteidl.core.GateNode.verify|verify} messages. + * Encodes the specified EnumType message. Does not implicitly {@link flyteidl.core.EnumType.verify|verify} messages. * @function encode - * @memberof flyteidl.core.GateNode + * @memberof flyteidl.core.EnumType * @static - * @param {flyteidl.core.IGateNode} message GateNode message or plain object to encode + * @param {flyteidl.core.IEnumType} message EnumType message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GateNode.encode = function encode(message, writer) { + EnumType.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.approve != null && message.hasOwnProperty("approve")) - $root.flyteidl.core.ApproveCondition.encode(message.approve, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.signal != null && message.hasOwnProperty("signal")) - $root.flyteidl.core.SignalCondition.encode(message.signal, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.sleep != null && message.hasOwnProperty("sleep")) - $root.flyteidl.core.SleepCondition.encode(message.sleep, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.values != null && message.values.length) + for (var i = 0; i < message.values.length; ++i) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.values[i]); return writer; }; /** - * Decodes a GateNode message from the specified reader or buffer. + * Decodes an EnumType message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.GateNode + * @memberof flyteidl.core.EnumType * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.GateNode} GateNode + * @returns {flyteidl.core.EnumType} EnumType * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GateNode.decode = function decode(reader, length) { + EnumType.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.GateNode(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.EnumType(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.approve = $root.flyteidl.core.ApproveCondition.decode(reader, reader.uint32()); - break; - case 2: - message.signal = $root.flyteidl.core.SignalCondition.decode(reader, reader.uint32()); - break; - case 3: - message.sleep = $root.flyteidl.core.SleepCondition.decode(reader, reader.uint32()); + if (!(message.values && message.values.length)) + message.values = []; + message.values.push(reader.string()); break; default: reader.skipType(tag & 7); @@ -4561,72 +5070,48 @@ }; /** - * Verifies a GateNode message. + * Verifies an EnumType message. * @function verify - * @memberof flyteidl.core.GateNode + * @memberof flyteidl.core.EnumType * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GateNode.verify = function verify(message) { + EnumType.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.approve != null && message.hasOwnProperty("approve")) { - properties.condition = 1; - { - var error = $root.flyteidl.core.ApproveCondition.verify(message.approve); - if (error) - return "approve." + error; - } - } - if (message.signal != null && message.hasOwnProperty("signal")) { - if (properties.condition === 1) - return "condition: multiple values"; - properties.condition = 1; - { - var error = $root.flyteidl.core.SignalCondition.verify(message.signal); - if (error) - return "signal." + error; - } - } - if (message.sleep != null && message.hasOwnProperty("sleep")) { - if (properties.condition === 1) - return "condition: multiple values"; - properties.condition = 1; - { - var error = $root.flyteidl.core.SleepCondition.verify(message.sleep); - if (error) - return "sleep." + error; - } + if (message.values != null && message.hasOwnProperty("values")) { + if (!Array.isArray(message.values)) + return "values: array expected"; + for (var i = 0; i < message.values.length; ++i) + if (!$util.isString(message.values[i])) + return "values: string[] expected"; } return null; }; - return GateNode; + return EnumType; })(); - core.ArrayNode = (function() { + core.UnionType = (function() { /** - * Properties of an ArrayNode. + * Properties of an UnionType. * @memberof flyteidl.core - * @interface IArrayNode - * @property {flyteidl.core.INode|null} [node] ArrayNode node - * @property {number|null} [parallelism] ArrayNode parallelism - * @property {number|null} [minSuccesses] ArrayNode minSuccesses - * @property {number|null} [minSuccessRatio] ArrayNode minSuccessRatio + * @interface IUnionType + * @property {Array.|null} [variants] UnionType variants */ /** - * Constructs a new ArrayNode. + * Constructs a new UnionType. * @memberof flyteidl.core - * @classdesc Represents an ArrayNode. - * @implements IArrayNode + * @classdesc Represents an UnionType. + * @implements IUnionType * @constructor - * @param {flyteidl.core.IArrayNode=} [properties] Properties to set + * @param {flyteidl.core.IUnionType=} [properties] Properties to set */ - function ArrayNode(properties) { + function UnionType(properties) { + this.variants = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4634,115 +5119,65 @@ } /** - * ArrayNode node. - * @member {flyteidl.core.INode|null|undefined} node - * @memberof flyteidl.core.ArrayNode - * @instance - */ - ArrayNode.prototype.node = null; - - /** - * ArrayNode parallelism. - * @member {number} parallelism - * @memberof flyteidl.core.ArrayNode - * @instance - */ - ArrayNode.prototype.parallelism = 0; - - /** - * ArrayNode minSuccesses. - * @member {number} minSuccesses - * @memberof flyteidl.core.ArrayNode - * @instance - */ - ArrayNode.prototype.minSuccesses = 0; - - /** - * ArrayNode minSuccessRatio. - * @member {number} minSuccessRatio - * @memberof flyteidl.core.ArrayNode - * @instance - */ - ArrayNode.prototype.minSuccessRatio = 0; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * ArrayNode successCriteria. - * @member {"minSuccesses"|"minSuccessRatio"|undefined} successCriteria - * @memberof flyteidl.core.ArrayNode + * UnionType variants. + * @member {Array.} variants + * @memberof flyteidl.core.UnionType * @instance */ - Object.defineProperty(ArrayNode.prototype, "successCriteria", { - get: $util.oneOfGetter($oneOfFields = ["minSuccesses", "minSuccessRatio"]), - set: $util.oneOfSetter($oneOfFields) - }); + UnionType.prototype.variants = $util.emptyArray; /** - * Creates a new ArrayNode instance using the specified properties. + * Creates a new UnionType instance using the specified properties. * @function create - * @memberof flyteidl.core.ArrayNode + * @memberof flyteidl.core.UnionType * @static - * @param {flyteidl.core.IArrayNode=} [properties] Properties to set - * @returns {flyteidl.core.ArrayNode} ArrayNode instance + * @param {flyteidl.core.IUnionType=} [properties] Properties to set + * @returns {flyteidl.core.UnionType} UnionType instance */ - ArrayNode.create = function create(properties) { - return new ArrayNode(properties); + UnionType.create = function create(properties) { + return new UnionType(properties); }; /** - * Encodes the specified ArrayNode message. Does not implicitly {@link flyteidl.core.ArrayNode.verify|verify} messages. + * Encodes the specified UnionType message. Does not implicitly {@link flyteidl.core.UnionType.verify|verify} messages. * @function encode - * @memberof flyteidl.core.ArrayNode + * @memberof flyteidl.core.UnionType * @static - * @param {flyteidl.core.IArrayNode} message ArrayNode message or plain object to encode + * @param {flyteidl.core.IUnionType} message UnionType message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ArrayNode.encode = function encode(message, writer) { + UnionType.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.node != null && message.hasOwnProperty("node")) - $root.flyteidl.core.Node.encode(message.node, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.parallelism != null && message.hasOwnProperty("parallelism")) - writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.parallelism); - if (message.minSuccesses != null && message.hasOwnProperty("minSuccesses")) - writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.minSuccesses); - if (message.minSuccessRatio != null && message.hasOwnProperty("minSuccessRatio")) - writer.uint32(/* id 4, wireType 5 =*/37).float(message.minSuccessRatio); + if (message.variants != null && message.variants.length) + for (var i = 0; i < message.variants.length; ++i) + $root.flyteidl.core.LiteralType.encode(message.variants[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes an ArrayNode message from the specified reader or buffer. + * Decodes an UnionType message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.ArrayNode + * @memberof flyteidl.core.UnionType * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.ArrayNode} ArrayNode + * @returns {flyteidl.core.UnionType} UnionType * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ArrayNode.decode = function decode(reader, length) { + UnionType.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.ArrayNode(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.UnionType(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.node = $root.flyteidl.core.Node.decode(reader, reader.uint32()); - break; - case 2: - message.parallelism = reader.uint32(); - break; - case 3: - message.minSuccesses = reader.uint32(); - break; - case 4: - message.minSuccessRatio = reader.float(); + if (!(message.variants && message.variants.length)) + message.variants = []; + message.variants.push($root.flyteidl.core.LiteralType.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -4753,64 +5188,51 @@ }; /** - * Verifies an ArrayNode message. + * Verifies an UnionType message. * @function verify - * @memberof flyteidl.core.ArrayNode + * @memberof flyteidl.core.UnionType * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ArrayNode.verify = function verify(message) { + UnionType.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.node != null && message.hasOwnProperty("node")) { - var error = $root.flyteidl.core.Node.verify(message.node); - if (error) - return "node." + error; - } - if (message.parallelism != null && message.hasOwnProperty("parallelism")) - if (!$util.isInteger(message.parallelism)) - return "parallelism: integer expected"; - if (message.minSuccesses != null && message.hasOwnProperty("minSuccesses")) { - properties.successCriteria = 1; - if (!$util.isInteger(message.minSuccesses)) - return "minSuccesses: integer expected"; - } - if (message.minSuccessRatio != null && message.hasOwnProperty("minSuccessRatio")) { - if (properties.successCriteria === 1) - return "successCriteria: multiple values"; - properties.successCriteria = 1; - if (typeof message.minSuccessRatio !== "number") - return "minSuccessRatio: number expected"; + if (message.variants != null && message.hasOwnProperty("variants")) { + if (!Array.isArray(message.variants)) + return "variants: array expected"; + for (var i = 0; i < message.variants.length; ++i) { + var error = $root.flyteidl.core.LiteralType.verify(message.variants[i]); + if (error) + return "variants." + error; + } } return null; }; - return ArrayNode; + return UnionType; })(); - core.NodeMetadata = (function() { + core.TypeStructure = (function() { /** - * Properties of a NodeMetadata. + * Properties of a TypeStructure. * @memberof flyteidl.core - * @interface INodeMetadata - * @property {string|null} [name] NodeMetadata name - * @property {google.protobuf.IDuration|null} [timeout] NodeMetadata timeout - * @property {flyteidl.core.IRetryStrategy|null} [retries] NodeMetadata retries - * @property {boolean|null} [interruptible] NodeMetadata interruptible + * @interface ITypeStructure + * @property {string|null} [tag] TypeStructure tag + * @property {Object.|null} [dataclassType] TypeStructure dataclassType */ /** - * Constructs a new NodeMetadata. + * Constructs a new TypeStructure. * @memberof flyteidl.core - * @classdesc Represents a NodeMetadata. - * @implements INodeMetadata + * @classdesc Represents a TypeStructure. + * @implements ITypeStructure * @constructor - * @param {flyteidl.core.INodeMetadata=} [properties] Properties to set + * @param {flyteidl.core.ITypeStructure=} [properties] Properties to set */ - function NodeMetadata(properties) { + function TypeStructure(properties) { + this.dataclassType = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4818,115 +5240,83 @@ } /** - * NodeMetadata name. - * @member {string} name - * @memberof flyteidl.core.NodeMetadata - * @instance - */ - NodeMetadata.prototype.name = ""; - - /** - * NodeMetadata timeout. - * @member {google.protobuf.IDuration|null|undefined} timeout - * @memberof flyteidl.core.NodeMetadata - * @instance - */ - NodeMetadata.prototype.timeout = null; - - /** - * NodeMetadata retries. - * @member {flyteidl.core.IRetryStrategy|null|undefined} retries - * @memberof flyteidl.core.NodeMetadata - * @instance - */ - NodeMetadata.prototype.retries = null; - - /** - * NodeMetadata interruptible. - * @member {boolean} interruptible - * @memberof flyteidl.core.NodeMetadata + * TypeStructure tag. + * @member {string} tag + * @memberof flyteidl.core.TypeStructure * @instance */ - NodeMetadata.prototype.interruptible = false; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + TypeStructure.prototype.tag = ""; /** - * NodeMetadata interruptibleValue. - * @member {"interruptible"|undefined} interruptibleValue - * @memberof flyteidl.core.NodeMetadata + * TypeStructure dataclassType. + * @member {Object.} dataclassType + * @memberof flyteidl.core.TypeStructure * @instance */ - Object.defineProperty(NodeMetadata.prototype, "interruptibleValue", { - get: $util.oneOfGetter($oneOfFields = ["interruptible"]), - set: $util.oneOfSetter($oneOfFields) - }); + TypeStructure.prototype.dataclassType = $util.emptyObject; /** - * Creates a new NodeMetadata instance using the specified properties. + * Creates a new TypeStructure instance using the specified properties. * @function create - * @memberof flyteidl.core.NodeMetadata + * @memberof flyteidl.core.TypeStructure * @static - * @param {flyteidl.core.INodeMetadata=} [properties] Properties to set - * @returns {flyteidl.core.NodeMetadata} NodeMetadata instance + * @param {flyteidl.core.ITypeStructure=} [properties] Properties to set + * @returns {flyteidl.core.TypeStructure} TypeStructure instance */ - NodeMetadata.create = function create(properties) { - return new NodeMetadata(properties); + TypeStructure.create = function create(properties) { + return new TypeStructure(properties); }; /** - * Encodes the specified NodeMetadata message. Does not implicitly {@link flyteidl.core.NodeMetadata.verify|verify} messages. + * Encodes the specified TypeStructure message. Does not implicitly {@link flyteidl.core.TypeStructure.verify|verify} messages. * @function encode - * @memberof flyteidl.core.NodeMetadata + * @memberof flyteidl.core.TypeStructure * @static - * @param {flyteidl.core.INodeMetadata} message NodeMetadata message or plain object to encode + * @param {flyteidl.core.ITypeStructure} message TypeStructure message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - NodeMetadata.encode = function encode(message, writer) { + TypeStructure.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.timeout != null && message.hasOwnProperty("timeout")) - $root.google.protobuf.Duration.encode(message.timeout, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.retries != null && message.hasOwnProperty("retries")) - $root.flyteidl.core.RetryStrategy.encode(message.retries, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.interruptible != null && message.hasOwnProperty("interruptible")) - writer.uint32(/* id 6, wireType 0 =*/48).bool(message.interruptible); + if (message.tag != null && message.hasOwnProperty("tag")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.tag); + if (message.dataclassType != null && message.hasOwnProperty("dataclassType")) + for (var keys = Object.keys(message.dataclassType), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.flyteidl.core.LiteralType.encode(message.dataclassType[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } return writer; }; /** - * Decodes a NodeMetadata message from the specified reader or buffer. + * Decodes a TypeStructure message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.NodeMetadata + * @memberof flyteidl.core.TypeStructure * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.NodeMetadata} NodeMetadata + * @returns {flyteidl.core.TypeStructure} TypeStructure * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - NodeMetadata.decode = function decode(reader, length) { + TypeStructure.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.NodeMetadata(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.TypeStructure(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.name = reader.string(); - break; - case 4: - message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32()); - break; - case 5: - message.retries = $root.flyteidl.core.RetryStrategy.decode(reader, reader.uint32()); + message.tag = reader.string(); break; - case 6: - message.interruptible = reader.bool(); + case 2: + reader.skip().pos++; + if (message.dataclassType === $util.emptyObject) + message.dataclassType = {}; + key = reader.string(); + reader.pos++; + message.dataclassType[key] = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -4937,60 +5327,53 @@ }; /** - * Verifies a NodeMetadata message. + * Verifies a TypeStructure message. * @function verify - * @memberof flyteidl.core.NodeMetadata + * @memberof flyteidl.core.TypeStructure * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - NodeMetadata.verify = function verify(message) { + TypeStructure.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.timeout != null && message.hasOwnProperty("timeout")) { - var error = $root.google.protobuf.Duration.verify(message.timeout); - if (error) - return "timeout." + error; - } - if (message.retries != null && message.hasOwnProperty("retries")) { - var error = $root.flyteidl.core.RetryStrategy.verify(message.retries); - if (error) - return "retries." + error; - } - if (message.interruptible != null && message.hasOwnProperty("interruptible")) { - properties.interruptibleValue = 1; - if (typeof message.interruptible !== "boolean") - return "interruptible: boolean expected"; + if (message.tag != null && message.hasOwnProperty("tag")) + if (!$util.isString(message.tag)) + return "tag: string expected"; + if (message.dataclassType != null && message.hasOwnProperty("dataclassType")) { + if (!$util.isObject(message.dataclassType)) + return "dataclassType: object expected"; + var key = Object.keys(message.dataclassType); + for (var i = 0; i < key.length; ++i) { + var error = $root.flyteidl.core.LiteralType.verify(message.dataclassType[key[i]]); + if (error) + return "dataclassType." + error; + } } return null; }; - return NodeMetadata; + return TypeStructure; })(); - core.Alias = (function() { + core.TypeAnnotation = (function() { /** - * Properties of an Alias. + * Properties of a TypeAnnotation. * @memberof flyteidl.core - * @interface IAlias - * @property {string|null} ["var"] Alias var - * @property {string|null} [alias] Alias alias + * @interface ITypeAnnotation + * @property {google.protobuf.IStruct|null} [annotations] TypeAnnotation annotations */ /** - * Constructs a new Alias. + * Constructs a new TypeAnnotation. * @memberof flyteidl.core - * @classdesc Represents an Alias. - * @implements IAlias + * @classdesc Represents a TypeAnnotation. + * @implements ITypeAnnotation * @constructor - * @param {flyteidl.core.IAlias=} [properties] Properties to set + * @param {flyteidl.core.ITypeAnnotation=} [properties] Properties to set */ - function Alias(properties) { + function TypeAnnotation(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4998,75 +5381,62 @@ } /** - * Alias var. - * @member {string} var - * @memberof flyteidl.core.Alias - * @instance - */ - Alias.prototype["var"] = ""; - - /** - * Alias alias. - * @member {string} alias - * @memberof flyteidl.core.Alias + * TypeAnnotation annotations. + * @member {google.protobuf.IStruct|null|undefined} annotations + * @memberof flyteidl.core.TypeAnnotation * @instance */ - Alias.prototype.alias = ""; + TypeAnnotation.prototype.annotations = null; /** - * Creates a new Alias instance using the specified properties. + * Creates a new TypeAnnotation instance using the specified properties. * @function create - * @memberof flyteidl.core.Alias + * @memberof flyteidl.core.TypeAnnotation * @static - * @param {flyteidl.core.IAlias=} [properties] Properties to set - * @returns {flyteidl.core.Alias} Alias instance + * @param {flyteidl.core.ITypeAnnotation=} [properties] Properties to set + * @returns {flyteidl.core.TypeAnnotation} TypeAnnotation instance */ - Alias.create = function create(properties) { - return new Alias(properties); + TypeAnnotation.create = function create(properties) { + return new TypeAnnotation(properties); }; /** - * Encodes the specified Alias message. Does not implicitly {@link flyteidl.core.Alias.verify|verify} messages. + * Encodes the specified TypeAnnotation message. Does not implicitly {@link flyteidl.core.TypeAnnotation.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Alias + * @memberof flyteidl.core.TypeAnnotation * @static - * @param {flyteidl.core.IAlias} message Alias message or plain object to encode + * @param {flyteidl.core.ITypeAnnotation} message TypeAnnotation message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Alias.encode = function encode(message, writer) { + TypeAnnotation.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message["var"] != null && message.hasOwnProperty("var")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message["var"]); - if (message.alias != null && message.hasOwnProperty("alias")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.alias); + if (message.annotations != null && message.hasOwnProperty("annotations")) + $root.google.protobuf.Struct.encode(message.annotations, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes an Alias message from the specified reader or buffer. + * Decodes a TypeAnnotation message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Alias + * @memberof flyteidl.core.TypeAnnotation * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Alias} Alias + * @returns {flyteidl.core.TypeAnnotation} TypeAnnotation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Alias.decode = function decode(reader, length) { + TypeAnnotation.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.Alias(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.TypeAnnotation(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message["var"] = reader.string(); - break; - case 2: - message.alias = reader.string(); + message.annotations = $root.google.protobuf.Struct.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -5077,58 +5447,55 @@ }; /** - * Verifies an Alias message. + * Verifies a TypeAnnotation message. * @function verify - * @memberof flyteidl.core.Alias + * @memberof flyteidl.core.TypeAnnotation * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Alias.verify = function verify(message) { + TypeAnnotation.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message["var"] != null && message.hasOwnProperty("var")) - if (!$util.isString(message["var"])) - return "var: string expected"; - if (message.alias != null && message.hasOwnProperty("alias")) - if (!$util.isString(message.alias)) - return "alias: string expected"; + if (message.annotations != null && message.hasOwnProperty("annotations")) { + var error = $root.google.protobuf.Struct.verify(message.annotations); + if (error) + return "annotations." + error; + } return null; }; - return Alias; + return TypeAnnotation; })(); - core.Node = (function() { + core.LiteralType = (function() { /** - * Properties of a Node. + * Properties of a LiteralType. * @memberof flyteidl.core - * @interface INode - * @property {string|null} [id] Node id - * @property {flyteidl.core.INodeMetadata|null} [metadata] Node metadata - * @property {Array.|null} [inputs] Node inputs - * @property {Array.|null} [upstreamNodeIds] Node upstreamNodeIds - * @property {Array.|null} [outputAliases] Node outputAliases - * @property {flyteidl.core.ITaskNode|null} [taskNode] Node taskNode - * @property {flyteidl.core.IWorkflowNode|null} [workflowNode] Node workflowNode - * @property {flyteidl.core.IBranchNode|null} [branchNode] Node branchNode - * @property {flyteidl.core.IGateNode|null} [gateNode] Node gateNode - * @property {flyteidl.core.IArrayNode|null} [arrayNode] Node arrayNode + * @interface ILiteralType + * @property {flyteidl.core.SimpleType|null} [simple] LiteralType simple + * @property {flyteidl.core.ISchemaType|null} [schema] LiteralType schema + * @property {flyteidl.core.ILiteralType|null} [collectionType] LiteralType collectionType + * @property {flyteidl.core.ILiteralType|null} [mapValueType] LiteralType mapValueType + * @property {flyteidl.core.IBlobType|null} [blob] LiteralType blob + * @property {flyteidl.core.IEnumType|null} [enumType] LiteralType enumType + * @property {flyteidl.core.IStructuredDatasetType|null} [structuredDatasetType] LiteralType structuredDatasetType + * @property {flyteidl.core.IUnionType|null} [unionType] LiteralType unionType + * @property {google.protobuf.IStruct|null} [metadata] LiteralType metadata + * @property {flyteidl.core.ITypeAnnotation|null} [annotation] LiteralType annotation + * @property {flyteidl.core.ITypeStructure|null} [structure] LiteralType structure */ /** - * Constructs a new Node. + * Constructs a new LiteralType. * @memberof flyteidl.core - * @classdesc Represents a Node. - * @implements INode + * @classdesc Represents a LiteralType. + * @implements ILiteralType * @constructor - * @param {flyteidl.core.INode=} [properties] Properties to set + * @param {flyteidl.core.ILiteralType=} [properties] Properties to set */ - function Node(properties) { - this.inputs = []; - this.upstreamNodeIds = []; - this.outputAliases = []; + function LiteralType(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -5136,202 +5503,449 @@ } /** - * Node id. - * @member {string} id - * @memberof flyteidl.core.Node + * LiteralType simple. + * @member {flyteidl.core.SimpleType} simple + * @memberof flyteidl.core.LiteralType * @instance */ - Node.prototype.id = ""; + LiteralType.prototype.simple = 0; /** - * Node metadata. - * @member {flyteidl.core.INodeMetadata|null|undefined} metadata - * @memberof flyteidl.core.Node + * LiteralType schema. + * @member {flyteidl.core.ISchemaType|null|undefined} schema + * @memberof flyteidl.core.LiteralType * @instance */ - Node.prototype.metadata = null; + LiteralType.prototype.schema = null; /** - * Node inputs. - * @member {Array.} inputs - * @memberof flyteidl.core.Node + * LiteralType collectionType. + * @member {flyteidl.core.ILiteralType|null|undefined} collectionType + * @memberof flyteidl.core.LiteralType * @instance */ - Node.prototype.inputs = $util.emptyArray; + LiteralType.prototype.collectionType = null; /** - * Node upstreamNodeIds. - * @member {Array.} upstreamNodeIds - * @memberof flyteidl.core.Node + * LiteralType mapValueType. + * @member {flyteidl.core.ILiteralType|null|undefined} mapValueType + * @memberof flyteidl.core.LiteralType * @instance */ - Node.prototype.upstreamNodeIds = $util.emptyArray; + LiteralType.prototype.mapValueType = null; + + /** + * LiteralType blob. + * @member {flyteidl.core.IBlobType|null|undefined} blob + * @memberof flyteidl.core.LiteralType + * @instance + */ + LiteralType.prototype.blob = null; + + /** + * LiteralType enumType. + * @member {flyteidl.core.IEnumType|null|undefined} enumType + * @memberof flyteidl.core.LiteralType + * @instance + */ + LiteralType.prototype.enumType = null; + + /** + * LiteralType structuredDatasetType. + * @member {flyteidl.core.IStructuredDatasetType|null|undefined} structuredDatasetType + * @memberof flyteidl.core.LiteralType + * @instance + */ + LiteralType.prototype.structuredDatasetType = null; + + /** + * LiteralType unionType. + * @member {flyteidl.core.IUnionType|null|undefined} unionType + * @memberof flyteidl.core.LiteralType + * @instance + */ + LiteralType.prototype.unionType = null; + + /** + * LiteralType metadata. + * @member {google.protobuf.IStruct|null|undefined} metadata + * @memberof flyteidl.core.LiteralType + * @instance + */ + LiteralType.prototype.metadata = null; + + /** + * LiteralType annotation. + * @member {flyteidl.core.ITypeAnnotation|null|undefined} annotation + * @memberof flyteidl.core.LiteralType + * @instance + */ + LiteralType.prototype.annotation = null; + + /** + * LiteralType structure. + * @member {flyteidl.core.ITypeStructure|null|undefined} structure + * @memberof flyteidl.core.LiteralType + * @instance + */ + LiteralType.prototype.structure = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * LiteralType type. + * @member {"simple"|"schema"|"collectionType"|"mapValueType"|"blob"|"enumType"|"structuredDatasetType"|"unionType"|undefined} type + * @memberof flyteidl.core.LiteralType + * @instance + */ + Object.defineProperty(LiteralType.prototype, "type", { + get: $util.oneOfGetter($oneOfFields = ["simple", "schema", "collectionType", "mapValueType", "blob", "enumType", "structuredDatasetType", "unionType"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new LiteralType instance using the specified properties. + * @function create + * @memberof flyteidl.core.LiteralType + * @static + * @param {flyteidl.core.ILiteralType=} [properties] Properties to set + * @returns {flyteidl.core.LiteralType} LiteralType instance + */ + LiteralType.create = function create(properties) { + return new LiteralType(properties); + }; + + /** + * Encodes the specified LiteralType message. Does not implicitly {@link flyteidl.core.LiteralType.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.LiteralType + * @static + * @param {flyteidl.core.ILiteralType} message LiteralType message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LiteralType.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.simple != null && message.hasOwnProperty("simple")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.simple); + if (message.schema != null && message.hasOwnProperty("schema")) + $root.flyteidl.core.SchemaType.encode(message.schema, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.collectionType != null && message.hasOwnProperty("collectionType")) + $root.flyteidl.core.LiteralType.encode(message.collectionType, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.mapValueType != null && message.hasOwnProperty("mapValueType")) + $root.flyteidl.core.LiteralType.encode(message.mapValueType, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.blob != null && message.hasOwnProperty("blob")) + $root.flyteidl.core.BlobType.encode(message.blob, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.metadata != null && message.hasOwnProperty("metadata")) + $root.google.protobuf.Struct.encode(message.metadata, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.enumType != null && message.hasOwnProperty("enumType")) + $root.flyteidl.core.EnumType.encode(message.enumType, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.structuredDatasetType != null && message.hasOwnProperty("structuredDatasetType")) + $root.flyteidl.core.StructuredDatasetType.encode(message.structuredDatasetType, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.annotation != null && message.hasOwnProperty("annotation")) + $root.flyteidl.core.TypeAnnotation.encode(message.annotation, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.unionType != null && message.hasOwnProperty("unionType")) + $root.flyteidl.core.UnionType.encode(message.unionType, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.structure != null && message.hasOwnProperty("structure")) + $root.flyteidl.core.TypeStructure.encode(message.structure, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a LiteralType message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.LiteralType + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.LiteralType} LiteralType + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LiteralType.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.LiteralType(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.simple = reader.int32(); + break; + case 2: + message.schema = $root.flyteidl.core.SchemaType.decode(reader, reader.uint32()); + break; + case 3: + message.collectionType = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + break; + case 4: + message.mapValueType = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + break; + case 5: + message.blob = $root.flyteidl.core.BlobType.decode(reader, reader.uint32()); + break; + case 7: + message.enumType = $root.flyteidl.core.EnumType.decode(reader, reader.uint32()); + break; + case 8: + message.structuredDatasetType = $root.flyteidl.core.StructuredDatasetType.decode(reader, reader.uint32()); + break; + case 10: + message.unionType = $root.flyteidl.core.UnionType.decode(reader, reader.uint32()); + break; + case 6: + message.metadata = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + break; + case 9: + message.annotation = $root.flyteidl.core.TypeAnnotation.decode(reader, reader.uint32()); + break; + case 11: + message.structure = $root.flyteidl.core.TypeStructure.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a LiteralType message. + * @function verify + * @memberof flyteidl.core.LiteralType + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + LiteralType.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.simple != null && message.hasOwnProperty("simple")) { + properties.type = 1; + switch (message.simple) { + default: + return "simple: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + break; + } + } + if (message.schema != null && message.hasOwnProperty("schema")) { + if (properties.type === 1) + return "type: multiple values"; + properties.type = 1; + { + var error = $root.flyteidl.core.SchemaType.verify(message.schema); + if (error) + return "schema." + error; + } + } + if (message.collectionType != null && message.hasOwnProperty("collectionType")) { + if (properties.type === 1) + return "type: multiple values"; + properties.type = 1; + { + var error = $root.flyteidl.core.LiteralType.verify(message.collectionType); + if (error) + return "collectionType." + error; + } + } + if (message.mapValueType != null && message.hasOwnProperty("mapValueType")) { + if (properties.type === 1) + return "type: multiple values"; + properties.type = 1; + { + var error = $root.flyteidl.core.LiteralType.verify(message.mapValueType); + if (error) + return "mapValueType." + error; + } + } + if (message.blob != null && message.hasOwnProperty("blob")) { + if (properties.type === 1) + return "type: multiple values"; + properties.type = 1; + { + var error = $root.flyteidl.core.BlobType.verify(message.blob); + if (error) + return "blob." + error; + } + } + if (message.enumType != null && message.hasOwnProperty("enumType")) { + if (properties.type === 1) + return "type: multiple values"; + properties.type = 1; + { + var error = $root.flyteidl.core.EnumType.verify(message.enumType); + if (error) + return "enumType." + error; + } + } + if (message.structuredDatasetType != null && message.hasOwnProperty("structuredDatasetType")) { + if (properties.type === 1) + return "type: multiple values"; + properties.type = 1; + { + var error = $root.flyteidl.core.StructuredDatasetType.verify(message.structuredDatasetType); + if (error) + return "structuredDatasetType." + error; + } + } + if (message.unionType != null && message.hasOwnProperty("unionType")) { + if (properties.type === 1) + return "type: multiple values"; + properties.type = 1; + { + var error = $root.flyteidl.core.UnionType.verify(message.unionType); + if (error) + return "unionType." + error; + } + } + if (message.metadata != null && message.hasOwnProperty("metadata")) { + var error = $root.google.protobuf.Struct.verify(message.metadata); + if (error) + return "metadata." + error; + } + if (message.annotation != null && message.hasOwnProperty("annotation")) { + var error = $root.flyteidl.core.TypeAnnotation.verify(message.annotation); + if (error) + return "annotation." + error; + } + if (message.structure != null && message.hasOwnProperty("structure")) { + var error = $root.flyteidl.core.TypeStructure.verify(message.structure); + if (error) + return "structure." + error; + } + return null; + }; - /** - * Node outputAliases. - * @member {Array.} outputAliases - * @memberof flyteidl.core.Node - * @instance - */ - Node.prototype.outputAliases = $util.emptyArray; + return LiteralType; + })(); - /** - * Node taskNode. - * @member {flyteidl.core.ITaskNode|null|undefined} taskNode - * @memberof flyteidl.core.Node - * @instance - */ - Node.prototype.taskNode = null; + core.OutputReference = (function() { /** - * Node workflowNode. - * @member {flyteidl.core.IWorkflowNode|null|undefined} workflowNode - * @memberof flyteidl.core.Node - * @instance + * Properties of an OutputReference. + * @memberof flyteidl.core + * @interface IOutputReference + * @property {string|null} [nodeId] OutputReference nodeId + * @property {string|null} ["var"] OutputReference var + * @property {Array.|null} [attrPath] OutputReference attrPath */ - Node.prototype.workflowNode = null; /** - * Node branchNode. - * @member {flyteidl.core.IBranchNode|null|undefined} branchNode - * @memberof flyteidl.core.Node - * @instance + * Constructs a new OutputReference. + * @memberof flyteidl.core + * @classdesc Represents an OutputReference. + * @implements IOutputReference + * @constructor + * @param {flyteidl.core.IOutputReference=} [properties] Properties to set */ - Node.prototype.branchNode = null; + function OutputReference(properties) { + this.attrPath = []; + 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]]; + } /** - * Node gateNode. - * @member {flyteidl.core.IGateNode|null|undefined} gateNode - * @memberof flyteidl.core.Node + * OutputReference nodeId. + * @member {string} nodeId + * @memberof flyteidl.core.OutputReference * @instance */ - Node.prototype.gateNode = null; + OutputReference.prototype.nodeId = ""; /** - * Node arrayNode. - * @member {flyteidl.core.IArrayNode|null|undefined} arrayNode - * @memberof flyteidl.core.Node + * OutputReference var. + * @member {string} var + * @memberof flyteidl.core.OutputReference * @instance */ - Node.prototype.arrayNode = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + OutputReference.prototype["var"] = ""; /** - * Node target. - * @member {"taskNode"|"workflowNode"|"branchNode"|"gateNode"|"arrayNode"|undefined} target - * @memberof flyteidl.core.Node + * OutputReference attrPath. + * @member {Array.} attrPath + * @memberof flyteidl.core.OutputReference * @instance */ - Object.defineProperty(Node.prototype, "target", { - get: $util.oneOfGetter($oneOfFields = ["taskNode", "workflowNode", "branchNode", "gateNode", "arrayNode"]), - set: $util.oneOfSetter($oneOfFields) - }); + OutputReference.prototype.attrPath = $util.emptyArray; /** - * Creates a new Node instance using the specified properties. + * Creates a new OutputReference instance using the specified properties. * @function create - * @memberof flyteidl.core.Node + * @memberof flyteidl.core.OutputReference * @static - * @param {flyteidl.core.INode=} [properties] Properties to set - * @returns {flyteidl.core.Node} Node instance + * @param {flyteidl.core.IOutputReference=} [properties] Properties to set + * @returns {flyteidl.core.OutputReference} OutputReference instance */ - Node.create = function create(properties) { - return new Node(properties); + OutputReference.create = function create(properties) { + return new OutputReference(properties); }; /** - * Encodes the specified Node message. Does not implicitly {@link flyteidl.core.Node.verify|verify} messages. + * Encodes the specified OutputReference message. Does not implicitly {@link flyteidl.core.OutputReference.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Node + * @memberof flyteidl.core.OutputReference * @static - * @param {flyteidl.core.INode} message Node message or plain object to encode + * @param {flyteidl.core.IOutputReference} message OutputReference message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Node.encode = function encode(message, writer) { + OutputReference.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.id != null && message.hasOwnProperty("id")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.id); - if (message.metadata != null && message.hasOwnProperty("metadata")) - $root.flyteidl.core.NodeMetadata.encode(message.metadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.inputs != null && message.inputs.length) - for (var i = 0; i < message.inputs.length; ++i) - $root.flyteidl.core.Binding.encode(message.inputs[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.upstreamNodeIds != null && message.upstreamNodeIds.length) - for (var i = 0; i < message.upstreamNodeIds.length; ++i) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.upstreamNodeIds[i]); - if (message.outputAliases != null && message.outputAliases.length) - for (var i = 0; i < message.outputAliases.length; ++i) - $root.flyteidl.core.Alias.encode(message.outputAliases[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.taskNode != null && message.hasOwnProperty("taskNode")) - $root.flyteidl.core.TaskNode.encode(message.taskNode, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.workflowNode != null && message.hasOwnProperty("workflowNode")) - $root.flyteidl.core.WorkflowNode.encode(message.workflowNode, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.branchNode != null && message.hasOwnProperty("branchNode")) - $root.flyteidl.core.BranchNode.encode(message.branchNode, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.gateNode != null && message.hasOwnProperty("gateNode")) - $root.flyteidl.core.GateNode.encode(message.gateNode, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.arrayNode != null && message.hasOwnProperty("arrayNode")) - $root.flyteidl.core.ArrayNode.encode(message.arrayNode, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.nodeId != null && message.hasOwnProperty("nodeId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.nodeId); + if (message["var"] != null && message.hasOwnProperty("var")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message["var"]); + if (message.attrPath != null && message.attrPath.length) + for (var i = 0; i < message.attrPath.length; ++i) + $root.flyteidl.core.PromiseAttribute.encode(message.attrPath[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Decodes a Node message from the specified reader or buffer. + * Decodes an OutputReference message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Node + * @memberof flyteidl.core.OutputReference * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Node} Node + * @returns {flyteidl.core.OutputReference} OutputReference * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Node.decode = function decode(reader, length) { + OutputReference.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.Node(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.OutputReference(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.id = reader.string(); + message.nodeId = reader.string(); break; case 2: - message.metadata = $root.flyteidl.core.NodeMetadata.decode(reader, reader.uint32()); + message["var"] = reader.string(); break; case 3: - if (!(message.inputs && message.inputs.length)) - message.inputs = []; - message.inputs.push($root.flyteidl.core.Binding.decode(reader, reader.uint32())); - break; - case 4: - if (!(message.upstreamNodeIds && message.upstreamNodeIds.length)) - message.upstreamNodeIds = []; - message.upstreamNodeIds.push(reader.string()); - break; - case 5: - if (!(message.outputAliases && message.outputAliases.length)) - message.outputAliases = []; - message.outputAliases.push($root.flyteidl.core.Alias.decode(reader, reader.uint32())); - break; - case 6: - message.taskNode = $root.flyteidl.core.TaskNode.decode(reader, reader.uint32()); - break; - case 7: - message.workflowNode = $root.flyteidl.core.WorkflowNode.decode(reader, reader.uint32()); - break; - case 8: - message.branchNode = $root.flyteidl.core.BranchNode.decode(reader, reader.uint32()); - break; - case 9: - message.gateNode = $root.flyteidl.core.GateNode.decode(reader, reader.uint32()); - break; - case 10: - message.arrayNode = $root.flyteidl.core.ArrayNode.decode(reader, reader.uint32()); + if (!(message.attrPath && message.attrPath.length)) + message.attrPath = []; + message.attrPath.push($root.flyteidl.core.PromiseAttribute.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -5342,125 +5956,56 @@ }; /** - * Verifies a Node message. + * Verifies an OutputReference message. * @function verify - * @memberof flyteidl.core.Node + * @memberof flyteidl.core.OutputReference * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Node.verify = function verify(message) { + OutputReference.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.id != null && message.hasOwnProperty("id")) - if (!$util.isString(message.id)) - return "id: string expected"; - if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.flyteidl.core.NodeMetadata.verify(message.metadata); - if (error) - return "metadata." + error; - } - if (message.inputs != null && message.hasOwnProperty("inputs")) { - if (!Array.isArray(message.inputs)) - return "inputs: array expected"; - for (var i = 0; i < message.inputs.length; ++i) { - var error = $root.flyteidl.core.Binding.verify(message.inputs[i]); - if (error) - return "inputs." + error; - } - } - if (message.upstreamNodeIds != null && message.hasOwnProperty("upstreamNodeIds")) { - if (!Array.isArray(message.upstreamNodeIds)) - return "upstreamNodeIds: array expected"; - for (var i = 0; i < message.upstreamNodeIds.length; ++i) - if (!$util.isString(message.upstreamNodeIds[i])) - return "upstreamNodeIds: string[] expected"; - } - if (message.outputAliases != null && message.hasOwnProperty("outputAliases")) { - if (!Array.isArray(message.outputAliases)) - return "outputAliases: array expected"; - for (var i = 0; i < message.outputAliases.length; ++i) { - var error = $root.flyteidl.core.Alias.verify(message.outputAliases[i]); - if (error) - return "outputAliases." + error; - } - } - if (message.taskNode != null && message.hasOwnProperty("taskNode")) { - properties.target = 1; - { - var error = $root.flyteidl.core.TaskNode.verify(message.taskNode); - if (error) - return "taskNode." + error; - } - } - if (message.workflowNode != null && message.hasOwnProperty("workflowNode")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.core.WorkflowNode.verify(message.workflowNode); - if (error) - return "workflowNode." + error; - } - } - if (message.branchNode != null && message.hasOwnProperty("branchNode")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.core.BranchNode.verify(message.branchNode); - if (error) - return "branchNode." + error; - } - } - if (message.gateNode != null && message.hasOwnProperty("gateNode")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.core.GateNode.verify(message.gateNode); - if (error) - return "gateNode." + error; - } - } - if (message.arrayNode != null && message.hasOwnProperty("arrayNode")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.core.ArrayNode.verify(message.arrayNode); + if (message.nodeId != null && message.hasOwnProperty("nodeId")) + if (!$util.isString(message.nodeId)) + return "nodeId: string expected"; + if (message["var"] != null && message.hasOwnProperty("var")) + if (!$util.isString(message["var"])) + return "var: string expected"; + if (message.attrPath != null && message.hasOwnProperty("attrPath")) { + if (!Array.isArray(message.attrPath)) + return "attrPath: array expected"; + for (var i = 0; i < message.attrPath.length; ++i) { + var error = $root.flyteidl.core.PromiseAttribute.verify(message.attrPath[i]); if (error) - return "arrayNode." + error; + return "attrPath." + error; } } return null; }; - return Node; + return OutputReference; })(); - core.WorkflowMetadata = (function() { + core.PromiseAttribute = (function() { /** - * Properties of a WorkflowMetadata. + * Properties of a PromiseAttribute. * @memberof flyteidl.core - * @interface IWorkflowMetadata - * @property {flyteidl.core.IQualityOfService|null} [qualityOfService] WorkflowMetadata qualityOfService - * @property {flyteidl.core.WorkflowMetadata.OnFailurePolicy|null} [onFailure] WorkflowMetadata onFailure - * @property {Object.|null} [tags] WorkflowMetadata tags + * @interface IPromiseAttribute + * @property {string|null} [stringValue] PromiseAttribute stringValue + * @property {number|null} [intValue] PromiseAttribute intValue */ /** - * Constructs a new WorkflowMetadata. + * Constructs a new PromiseAttribute. * @memberof flyteidl.core - * @classdesc Represents a WorkflowMetadata. - * @implements IWorkflowMetadata + * @classdesc Represents a PromiseAttribute. + * @implements IPromiseAttribute * @constructor - * @param {flyteidl.core.IWorkflowMetadata=} [properties] Properties to set + * @param {flyteidl.core.IPromiseAttribute=} [properties] Properties to set */ - function WorkflowMetadata(properties) { - this.tags = {}; + function PromiseAttribute(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -5468,94 +6013,89 @@ } /** - * WorkflowMetadata qualityOfService. - * @member {flyteidl.core.IQualityOfService|null|undefined} qualityOfService - * @memberof flyteidl.core.WorkflowMetadata + * PromiseAttribute stringValue. + * @member {string} stringValue + * @memberof flyteidl.core.PromiseAttribute * @instance */ - WorkflowMetadata.prototype.qualityOfService = null; + PromiseAttribute.prototype.stringValue = ""; /** - * WorkflowMetadata onFailure. - * @member {flyteidl.core.WorkflowMetadata.OnFailurePolicy} onFailure - * @memberof flyteidl.core.WorkflowMetadata + * PromiseAttribute intValue. + * @member {number} intValue + * @memberof flyteidl.core.PromiseAttribute * @instance */ - WorkflowMetadata.prototype.onFailure = 0; + PromiseAttribute.prototype.intValue = 0; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * WorkflowMetadata tags. - * @member {Object.} tags - * @memberof flyteidl.core.WorkflowMetadata + * PromiseAttribute value. + * @member {"stringValue"|"intValue"|undefined} value + * @memberof flyteidl.core.PromiseAttribute * @instance */ - WorkflowMetadata.prototype.tags = $util.emptyObject; + Object.defineProperty(PromiseAttribute.prototype, "value", { + get: $util.oneOfGetter($oneOfFields = ["stringValue", "intValue"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * Creates a new WorkflowMetadata instance using the specified properties. + * Creates a new PromiseAttribute instance using the specified properties. * @function create - * @memberof flyteidl.core.WorkflowMetadata + * @memberof flyteidl.core.PromiseAttribute * @static - * @param {flyteidl.core.IWorkflowMetadata=} [properties] Properties to set - * @returns {flyteidl.core.WorkflowMetadata} WorkflowMetadata instance + * @param {flyteidl.core.IPromiseAttribute=} [properties] Properties to set + * @returns {flyteidl.core.PromiseAttribute} PromiseAttribute instance */ - WorkflowMetadata.create = function create(properties) { - return new WorkflowMetadata(properties); + PromiseAttribute.create = function create(properties) { + return new PromiseAttribute(properties); }; /** - * Encodes the specified WorkflowMetadata message. Does not implicitly {@link flyteidl.core.WorkflowMetadata.verify|verify} messages. + * Encodes the specified PromiseAttribute message. Does not implicitly {@link flyteidl.core.PromiseAttribute.verify|verify} messages. * @function encode - * @memberof flyteidl.core.WorkflowMetadata + * @memberof flyteidl.core.PromiseAttribute * @static - * @param {flyteidl.core.IWorkflowMetadata} message WorkflowMetadata message or plain object to encode + * @param {flyteidl.core.IPromiseAttribute} message PromiseAttribute message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - WorkflowMetadata.encode = function encode(message, writer) { + PromiseAttribute.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) - $root.flyteidl.core.QualityOfService.encode(message.qualityOfService, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.onFailure != null && message.hasOwnProperty("onFailure")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.onFailure); - if (message.tags != null && message.hasOwnProperty("tags")) - for (var keys = Object.keys(message.tags), i = 0; i < keys.length; ++i) - writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.tags[keys[i]]).ldelim(); + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.stringValue); + if (message.intValue != null && message.hasOwnProperty("intValue")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.intValue); return writer; }; /** - * Decodes a WorkflowMetadata message from the specified reader or buffer. + * Decodes a PromiseAttribute message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.WorkflowMetadata + * @memberof flyteidl.core.PromiseAttribute * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.WorkflowMetadata} WorkflowMetadata + * @returns {flyteidl.core.PromiseAttribute} PromiseAttribute * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - WorkflowMetadata.decode = function decode(reader, length) { + PromiseAttribute.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.WorkflowMetadata(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.PromiseAttribute(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.qualityOfService = $root.flyteidl.core.QualityOfService.decode(reader, reader.uint32()); + message.stringValue = reader.string(); break; case 2: - message.onFailure = reader.int32(); - break; - case 3: - reader.skip().pos++; - if (message.tags === $util.emptyObject) - message.tags = {}; - key = reader.string(); - reader.pos++; - message.tags[key] = reader.string(); + message.intValue = reader.int32(); break; default: reader.skipType(tag & 7); @@ -5566,75 +6106,54 @@ }; /** - * Verifies a WorkflowMetadata message. + * Verifies a PromiseAttribute message. * @function verify - * @memberof flyteidl.core.WorkflowMetadata + * @memberof flyteidl.core.PromiseAttribute * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - WorkflowMetadata.verify = function verify(message) { + PromiseAttribute.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) { - var error = $root.flyteidl.core.QualityOfService.verify(message.qualityOfService); - if (error) - return "qualityOfService." + error; + var properties = {}; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + properties.value = 1; + if (!$util.isString(message.stringValue)) + return "stringValue: string expected"; } - if (message.onFailure != null && message.hasOwnProperty("onFailure")) - switch (message.onFailure) { - default: - return "onFailure: enum value expected"; - case 0: - case 1: - break; - } - if (message.tags != null && message.hasOwnProperty("tags")) { - if (!$util.isObject(message.tags)) - return "tags: object expected"; - var key = Object.keys(message.tags); - for (var i = 0; i < key.length; ++i) - if (!$util.isString(message.tags[key[i]])) - return "tags: string{k:string} expected"; + if (message.intValue != null && message.hasOwnProperty("intValue")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + if (!$util.isInteger(message.intValue)) + return "intValue: integer expected"; } return null; }; - /** - * OnFailurePolicy enum. - * @name flyteidl.core.WorkflowMetadata.OnFailurePolicy - * @enum {string} - * @property {number} FAIL_IMMEDIATELY=0 FAIL_IMMEDIATELY value - * @property {number} FAIL_AFTER_EXECUTABLE_NODES_COMPLETE=1 FAIL_AFTER_EXECUTABLE_NODES_COMPLETE value - */ - WorkflowMetadata.OnFailurePolicy = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "FAIL_IMMEDIATELY"] = 0; - values[valuesById[1] = "FAIL_AFTER_EXECUTABLE_NODES_COMPLETE"] = 1; - return values; - })(); - - return WorkflowMetadata; + return PromiseAttribute; })(); - core.WorkflowMetadataDefaults = (function() { + core.Error = (function() { /** - * Properties of a WorkflowMetadataDefaults. + * Properties of an Error. * @memberof flyteidl.core - * @interface IWorkflowMetadataDefaults - * @property {boolean|null} [interruptible] WorkflowMetadataDefaults interruptible + * @interface IError + * @property {string|null} [failedNodeId] Error failedNodeId + * @property {string|null} [message] Error message */ /** - * Constructs a new WorkflowMetadataDefaults. + * Constructs a new Error. * @memberof flyteidl.core - * @classdesc Represents a WorkflowMetadataDefaults. - * @implements IWorkflowMetadataDefaults + * @classdesc Represents an Error. + * @implements IError * @constructor - * @param {flyteidl.core.IWorkflowMetadataDefaults=} [properties] Properties to set + * @param {flyteidl.core.IError=} [properties] Properties to set */ - function WorkflowMetadataDefaults(properties) { + function Error(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -5642,62 +6161,75 @@ } /** - * WorkflowMetadataDefaults interruptible. - * @member {boolean} interruptible - * @memberof flyteidl.core.WorkflowMetadataDefaults + * Error failedNodeId. + * @member {string} failedNodeId + * @memberof flyteidl.core.Error * @instance */ - WorkflowMetadataDefaults.prototype.interruptible = false; + Error.prototype.failedNodeId = ""; /** - * Creates a new WorkflowMetadataDefaults instance using the specified properties. + * Error message. + * @member {string} message + * @memberof flyteidl.core.Error + * @instance + */ + Error.prototype.message = ""; + + /** + * Creates a new Error instance using the specified properties. * @function create - * @memberof flyteidl.core.WorkflowMetadataDefaults + * @memberof flyteidl.core.Error * @static - * @param {flyteidl.core.IWorkflowMetadataDefaults=} [properties] Properties to set - * @returns {flyteidl.core.WorkflowMetadataDefaults} WorkflowMetadataDefaults instance + * @param {flyteidl.core.IError=} [properties] Properties to set + * @returns {flyteidl.core.Error} Error instance */ - WorkflowMetadataDefaults.create = function create(properties) { - return new WorkflowMetadataDefaults(properties); + Error.create = function create(properties) { + return new Error(properties); }; /** - * Encodes the specified WorkflowMetadataDefaults message. Does not implicitly {@link flyteidl.core.WorkflowMetadataDefaults.verify|verify} messages. + * Encodes the specified Error message. Does not implicitly {@link flyteidl.core.Error.verify|verify} messages. * @function encode - * @memberof flyteidl.core.WorkflowMetadataDefaults + * @memberof flyteidl.core.Error * @static - * @param {flyteidl.core.IWorkflowMetadataDefaults} message WorkflowMetadataDefaults message or plain object to encode + * @param {flyteidl.core.IError} message Error message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - WorkflowMetadataDefaults.encode = function encode(message, writer) { + Error.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.interruptible != null && message.hasOwnProperty("interruptible")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.interruptible); + if (message.failedNodeId != null && message.hasOwnProperty("failedNodeId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.failedNodeId); + if (message.message != null && message.hasOwnProperty("message")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.message); return writer; }; /** - * Decodes a WorkflowMetadataDefaults message from the specified reader or buffer. + * Decodes an Error message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.WorkflowMetadataDefaults + * @memberof flyteidl.core.Error * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.WorkflowMetadataDefaults} WorkflowMetadataDefaults + * @returns {flyteidl.core.Error} Error * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - WorkflowMetadataDefaults.decode = function decode(reader, length) { + Error.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.WorkflowMetadataDefaults(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Error(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.interruptible = reader.bool(); + message.failedNodeId = reader.string(); + break; + case 2: + message.message = reader.string(); break; default: reader.skipType(tag & 7); @@ -5708,51 +6240,51 @@ }; /** - * Verifies a WorkflowMetadataDefaults message. + * Verifies an Error message. * @function verify - * @memberof flyteidl.core.WorkflowMetadataDefaults + * @memberof flyteidl.core.Error * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - WorkflowMetadataDefaults.verify = function verify(message) { + Error.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.interruptible != null && message.hasOwnProperty("interruptible")) - if (typeof message.interruptible !== "boolean") - return "interruptible: boolean expected"; + if (message.failedNodeId != null && message.hasOwnProperty("failedNodeId")) + if (!$util.isString(message.failedNodeId)) + return "failedNodeId: string expected"; + if (message.message != null && message.hasOwnProperty("message")) + if (!$util.isString(message.message)) + return "message: string expected"; return null; }; - return WorkflowMetadataDefaults; + return Error; })(); - core.WorkflowTemplate = (function() { + core.Primitive = (function() { /** - * Properties of a WorkflowTemplate. + * Properties of a Primitive. * @memberof flyteidl.core - * @interface IWorkflowTemplate - * @property {flyteidl.core.IIdentifier|null} [id] WorkflowTemplate id - * @property {flyteidl.core.IWorkflowMetadata|null} [metadata] WorkflowTemplate metadata - * @property {flyteidl.core.ITypedInterface|null} ["interface"] WorkflowTemplate interface - * @property {Array.|null} [nodes] WorkflowTemplate nodes - * @property {Array.|null} [outputs] WorkflowTemplate outputs - * @property {flyteidl.core.INode|null} [failureNode] WorkflowTemplate failureNode - * @property {flyteidl.core.IWorkflowMetadataDefaults|null} [metadataDefaults] WorkflowTemplate metadataDefaults + * @interface IPrimitive + * @property {Long|null} [integer] Primitive integer + * @property {number|null} [floatValue] Primitive floatValue + * @property {string|null} [stringValue] Primitive stringValue + * @property {boolean|null} [boolean] Primitive boolean + * @property {google.protobuf.ITimestamp|null} [datetime] Primitive datetime + * @property {google.protobuf.IDuration|null} [duration] Primitive duration */ /** - * Constructs a new WorkflowTemplate. + * Constructs a new Primitive. * @memberof flyteidl.core - * @classdesc Represents a WorkflowTemplate. - * @implements IWorkflowTemplate + * @classdesc Represents a Primitive. + * @implements IPrimitive * @constructor - * @param {flyteidl.core.IWorkflowTemplate=} [properties] Properties to set + * @param {flyteidl.core.IPrimitive=} [properties] Properties to set */ - function WorkflowTemplate(properties) { - this.nodes = []; - this.outputs = []; + function Primitive(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -5760,146 +6292,141 @@ } /** - * WorkflowTemplate id. - * @member {flyteidl.core.IIdentifier|null|undefined} id - * @memberof flyteidl.core.WorkflowTemplate + * Primitive integer. + * @member {Long} integer + * @memberof flyteidl.core.Primitive * @instance */ - WorkflowTemplate.prototype.id = null; + Primitive.prototype.integer = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** - * WorkflowTemplate metadata. - * @member {flyteidl.core.IWorkflowMetadata|null|undefined} metadata - * @memberof flyteidl.core.WorkflowTemplate + * Primitive floatValue. + * @member {number} floatValue + * @memberof flyteidl.core.Primitive * @instance */ - WorkflowTemplate.prototype.metadata = null; + Primitive.prototype.floatValue = 0; /** - * WorkflowTemplate interface. - * @member {flyteidl.core.ITypedInterface|null|undefined} interface - * @memberof flyteidl.core.WorkflowTemplate + * Primitive stringValue. + * @member {string} stringValue + * @memberof flyteidl.core.Primitive * @instance */ - WorkflowTemplate.prototype["interface"] = null; + Primitive.prototype.stringValue = ""; /** - * WorkflowTemplate nodes. - * @member {Array.} nodes - * @memberof flyteidl.core.WorkflowTemplate + * Primitive boolean. + * @member {boolean} boolean + * @memberof flyteidl.core.Primitive * @instance */ - WorkflowTemplate.prototype.nodes = $util.emptyArray; + Primitive.prototype.boolean = false; /** - * WorkflowTemplate outputs. - * @member {Array.} outputs - * @memberof flyteidl.core.WorkflowTemplate + * Primitive datetime. + * @member {google.protobuf.ITimestamp|null|undefined} datetime + * @memberof flyteidl.core.Primitive * @instance */ - WorkflowTemplate.prototype.outputs = $util.emptyArray; + Primitive.prototype.datetime = null; /** - * WorkflowTemplate failureNode. - * @member {flyteidl.core.INode|null|undefined} failureNode - * @memberof flyteidl.core.WorkflowTemplate + * Primitive duration. + * @member {google.protobuf.IDuration|null|undefined} duration + * @memberof flyteidl.core.Primitive * @instance */ - WorkflowTemplate.prototype.failureNode = null; + Primitive.prototype.duration = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * WorkflowTemplate metadataDefaults. - * @member {flyteidl.core.IWorkflowMetadataDefaults|null|undefined} metadataDefaults - * @memberof flyteidl.core.WorkflowTemplate + * Primitive value. + * @member {"integer"|"floatValue"|"stringValue"|"boolean"|"datetime"|"duration"|undefined} value + * @memberof flyteidl.core.Primitive * @instance */ - WorkflowTemplate.prototype.metadataDefaults = null; + Object.defineProperty(Primitive.prototype, "value", { + get: $util.oneOfGetter($oneOfFields = ["integer", "floatValue", "stringValue", "boolean", "datetime", "duration"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * Creates a new WorkflowTemplate instance using the specified properties. + * Creates a new Primitive instance using the specified properties. * @function create - * @memberof flyteidl.core.WorkflowTemplate + * @memberof flyteidl.core.Primitive * @static - * @param {flyteidl.core.IWorkflowTemplate=} [properties] Properties to set - * @returns {flyteidl.core.WorkflowTemplate} WorkflowTemplate instance + * @param {flyteidl.core.IPrimitive=} [properties] Properties to set + * @returns {flyteidl.core.Primitive} Primitive instance */ - WorkflowTemplate.create = function create(properties) { - return new WorkflowTemplate(properties); + Primitive.create = function create(properties) { + return new Primitive(properties); }; /** - * Encodes the specified WorkflowTemplate message. Does not implicitly {@link flyteidl.core.WorkflowTemplate.verify|verify} messages. + * Encodes the specified Primitive message. Does not implicitly {@link flyteidl.core.Primitive.verify|verify} messages. * @function encode - * @memberof flyteidl.core.WorkflowTemplate + * @memberof flyteidl.core.Primitive * @static - * @param {flyteidl.core.IWorkflowTemplate} message WorkflowTemplate message or plain object to encode + * @param {flyteidl.core.IPrimitive} message Primitive message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - WorkflowTemplate.encode = function encode(message, writer) { + Primitive.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.id != null && message.hasOwnProperty("id")) - $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.metadata != null && message.hasOwnProperty("metadata")) - $root.flyteidl.core.WorkflowMetadata.encode(message.metadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message["interface"] != null && message.hasOwnProperty("interface")) - $root.flyteidl.core.TypedInterface.encode(message["interface"], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.nodes != null && message.nodes.length) - for (var i = 0; i < message.nodes.length; ++i) - $root.flyteidl.core.Node.encode(message.nodes[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.outputs != null && message.outputs.length) - for (var i = 0; i < message.outputs.length; ++i) - $root.flyteidl.core.Binding.encode(message.outputs[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.failureNode != null && message.hasOwnProperty("failureNode")) - $root.flyteidl.core.Node.encode(message.failureNode, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.metadataDefaults != null && message.hasOwnProperty("metadataDefaults")) - $root.flyteidl.core.WorkflowMetadataDefaults.encode(message.metadataDefaults, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.integer != null && message.hasOwnProperty("integer")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.integer); + if (message.floatValue != null && message.hasOwnProperty("floatValue")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.floatValue); + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.stringValue); + if (message.boolean != null && message.hasOwnProperty("boolean")) + writer.uint32(/* id 4, wireType 0 =*/32).bool(message.boolean); + if (message.datetime != null && message.hasOwnProperty("datetime")) + $root.google.protobuf.Timestamp.encode(message.datetime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.duration != null && message.hasOwnProperty("duration")) + $root.google.protobuf.Duration.encode(message.duration, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; /** - * Decodes a WorkflowTemplate message from the specified reader or buffer. + * Decodes a Primitive message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.WorkflowTemplate + * @memberof flyteidl.core.Primitive * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.WorkflowTemplate} WorkflowTemplate + * @returns {flyteidl.core.Primitive} Primitive * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - WorkflowTemplate.decode = function decode(reader, length) { + Primitive.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.WorkflowTemplate(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Primitive(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); + message.integer = reader.int64(); break; case 2: - message.metadata = $root.flyteidl.core.WorkflowMetadata.decode(reader, reader.uint32()); + message.floatValue = reader.double(); break; case 3: - message["interface"] = $root.flyteidl.core.TypedInterface.decode(reader, reader.uint32()); + message.stringValue = reader.string(); break; case 4: - if (!(message.nodes && message.nodes.length)) - message.nodes = []; - message.nodes.push($root.flyteidl.core.Node.decode(reader, reader.uint32())); + message.boolean = reader.bool(); break; case 5: - if (!(message.outputs && message.outputs.length)) - message.outputs = []; - message.outputs.push($root.flyteidl.core.Binding.decode(reader, reader.uint32())); + message.datetime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; case 6: - message.failureNode = $root.flyteidl.core.Node.decode(reader, reader.uint32()); - break; - case 7: - message.metadataDefaults = $root.flyteidl.core.WorkflowMetadataDefaults.decode(reader, reader.uint32()); + message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -5910,84 +6437,86 @@ }; /** - * Verifies a WorkflowTemplate message. + * Verifies a Primitive message. * @function verify - * @memberof flyteidl.core.WorkflowTemplate + * @memberof flyteidl.core.Primitive * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - WorkflowTemplate.verify = function verify(message) { + Primitive.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) { - var error = $root.flyteidl.core.Identifier.verify(message.id); - if (error) - return "id." + error; + var properties = {}; + if (message.integer != null && message.hasOwnProperty("integer")) { + properties.value = 1; + if (!$util.isInteger(message.integer) && !(message.integer && $util.isInteger(message.integer.low) && $util.isInteger(message.integer.high))) + return "integer: integer|Long expected"; } - if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.flyteidl.core.WorkflowMetadata.verify(message.metadata); - if (error) - return "metadata." + error; + if (message.floatValue != null && message.hasOwnProperty("floatValue")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + if (typeof message.floatValue !== "number") + return "floatValue: number expected"; } - if (message["interface"] != null && message.hasOwnProperty("interface")) { - var error = $root.flyteidl.core.TypedInterface.verify(message["interface"]); - if (error) - return "interface." + error; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + if (!$util.isString(message.stringValue)) + return "stringValue: string expected"; } - if (message.nodes != null && message.hasOwnProperty("nodes")) { - if (!Array.isArray(message.nodes)) - return "nodes: array expected"; - for (var i = 0; i < message.nodes.length; ++i) { - var error = $root.flyteidl.core.Node.verify(message.nodes[i]); + if (message.boolean != null && message.hasOwnProperty("boolean")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + if (typeof message.boolean !== "boolean") + return "boolean: boolean expected"; + } + if (message.datetime != null && message.hasOwnProperty("datetime")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.google.protobuf.Timestamp.verify(message.datetime); if (error) - return "nodes." + error; + return "datetime." + error; } } - if (message.outputs != null && message.hasOwnProperty("outputs")) { - if (!Array.isArray(message.outputs)) - return "outputs: array expected"; - for (var i = 0; i < message.outputs.length; ++i) { - var error = $root.flyteidl.core.Binding.verify(message.outputs[i]); + if (message.duration != null && message.hasOwnProperty("duration")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.google.protobuf.Duration.verify(message.duration); if (error) - return "outputs." + error; + return "duration." + error; } } - if (message.failureNode != null && message.hasOwnProperty("failureNode")) { - var error = $root.flyteidl.core.Node.verify(message.failureNode); - if (error) - return "failureNode." + error; - } - if (message.metadataDefaults != null && message.hasOwnProperty("metadataDefaults")) { - var error = $root.flyteidl.core.WorkflowMetadataDefaults.verify(message.metadataDefaults); - if (error) - return "metadataDefaults." + error; - } return null; }; - return WorkflowTemplate; + return Primitive; })(); - core.TaskNodeOverrides = (function() { + core.Void = (function() { /** - * Properties of a TaskNodeOverrides. + * Properties of a Void. * @memberof flyteidl.core - * @interface ITaskNodeOverrides - * @property {flyteidl.core.IResources|null} [resources] TaskNodeOverrides resources - * @property {flyteidl.core.IExtendedResources|null} [extendedResources] TaskNodeOverrides extendedResources + * @interface IVoid */ /** - * Constructs a new TaskNodeOverrides. + * Constructs a new Void. * @memberof flyteidl.core - * @classdesc Represents a TaskNodeOverrides. - * @implements ITaskNodeOverrides + * @classdesc Represents a Void. + * @implements IVoid * @constructor - * @param {flyteidl.core.ITaskNodeOverrides=} [properties] Properties to set + * @param {flyteidl.core.IVoid=} [properties] Properties to set */ - function TaskNodeOverrides(properties) { + function Void(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -5995,76 +6524,50 @@ } /** - * TaskNodeOverrides resources. - * @member {flyteidl.core.IResources|null|undefined} resources - * @memberof flyteidl.core.TaskNodeOverrides - * @instance - */ - TaskNodeOverrides.prototype.resources = null; - - /** - * TaskNodeOverrides extendedResources. - * @member {flyteidl.core.IExtendedResources|null|undefined} extendedResources - * @memberof flyteidl.core.TaskNodeOverrides - * @instance - */ - TaskNodeOverrides.prototype.extendedResources = null; - - /** - * Creates a new TaskNodeOverrides instance using the specified properties. + * Creates a new Void instance using the specified properties. * @function create - * @memberof flyteidl.core.TaskNodeOverrides + * @memberof flyteidl.core.Void * @static - * @param {flyteidl.core.ITaskNodeOverrides=} [properties] Properties to set - * @returns {flyteidl.core.TaskNodeOverrides} TaskNodeOverrides instance + * @param {flyteidl.core.IVoid=} [properties] Properties to set + * @returns {flyteidl.core.Void} Void instance */ - TaskNodeOverrides.create = function create(properties) { - return new TaskNodeOverrides(properties); + Void.create = function create(properties) { + return new Void(properties); }; /** - * Encodes the specified TaskNodeOverrides message. Does not implicitly {@link flyteidl.core.TaskNodeOverrides.verify|verify} messages. + * Encodes the specified Void message. Does not implicitly {@link flyteidl.core.Void.verify|verify} messages. * @function encode - * @memberof flyteidl.core.TaskNodeOverrides + * @memberof flyteidl.core.Void * @static - * @param {flyteidl.core.ITaskNodeOverrides} message TaskNodeOverrides message or plain object to encode + * @param {flyteidl.core.IVoid} message Void message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TaskNodeOverrides.encode = function encode(message, writer) { + Void.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.resources != null && message.hasOwnProperty("resources")) - $root.flyteidl.core.Resources.encode(message.resources, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.extendedResources != null && message.hasOwnProperty("extendedResources")) - $root.flyteidl.core.ExtendedResources.encode(message.extendedResources, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a TaskNodeOverrides message from the specified reader or buffer. + * Decodes a Void message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.TaskNodeOverrides + * @memberof flyteidl.core.Void * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.TaskNodeOverrides} TaskNodeOverrides + * @returns {flyteidl.core.Void} Void * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TaskNodeOverrides.decode = function decode(reader, length) { + Void.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.TaskNodeOverrides(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Void(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.resources = $root.flyteidl.core.Resources.decode(reader, reader.uint32()); - break; - case 2: - message.extendedResources = $root.flyteidl.core.ExtendedResources.decode(reader, reader.uint32()); - break; default: reader.skipType(tag & 7); break; @@ -6074,52 +6577,41 @@ }; /** - * Verifies a TaskNodeOverrides message. + * Verifies a Void message. * @function verify - * @memberof flyteidl.core.TaskNodeOverrides + * @memberof flyteidl.core.Void * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TaskNodeOverrides.verify = function verify(message) { + Void.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.resources != null && message.hasOwnProperty("resources")) { - var error = $root.flyteidl.core.Resources.verify(message.resources); - if (error) - return "resources." + error; - } - if (message.extendedResources != null && message.hasOwnProperty("extendedResources")) { - var error = $root.flyteidl.core.ExtendedResources.verify(message.extendedResources); - if (error) - return "extendedResources." + error; - } return null; }; - return TaskNodeOverrides; + return Void; })(); - core.ComparisonExpression = (function() { + core.Blob = (function() { /** - * Properties of a ComparisonExpression. + * Properties of a Blob. * @memberof flyteidl.core - * @interface IComparisonExpression - * @property {flyteidl.core.ComparisonExpression.Operator|null} [operator] ComparisonExpression operator - * @property {flyteidl.core.IOperand|null} [leftValue] ComparisonExpression leftValue - * @property {flyteidl.core.IOperand|null} [rightValue] ComparisonExpression rightValue + * @interface IBlob + * @property {flyteidl.core.IBlobMetadata|null} [metadata] Blob metadata + * @property {string|null} [uri] Blob uri */ /** - * Constructs a new ComparisonExpression. + * Constructs a new Blob. * @memberof flyteidl.core - * @classdesc Represents a ComparisonExpression. - * @implements IComparisonExpression + * @classdesc Represents a Blob. + * @implements IBlob * @constructor - * @param {flyteidl.core.IComparisonExpression=} [properties] Properties to set + * @param {flyteidl.core.IBlob=} [properties] Properties to set */ - function ComparisonExpression(properties) { + function Blob(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -6127,88 +6619,75 @@ } /** - * ComparisonExpression operator. - * @member {flyteidl.core.ComparisonExpression.Operator} operator - * @memberof flyteidl.core.ComparisonExpression - * @instance - */ - ComparisonExpression.prototype.operator = 0; - - /** - * ComparisonExpression leftValue. - * @member {flyteidl.core.IOperand|null|undefined} leftValue - * @memberof flyteidl.core.ComparisonExpression + * Blob metadata. + * @member {flyteidl.core.IBlobMetadata|null|undefined} metadata + * @memberof flyteidl.core.Blob * @instance */ - ComparisonExpression.prototype.leftValue = null; + Blob.prototype.metadata = null; /** - * ComparisonExpression rightValue. - * @member {flyteidl.core.IOperand|null|undefined} rightValue - * @memberof flyteidl.core.ComparisonExpression + * Blob uri. + * @member {string} uri + * @memberof flyteidl.core.Blob * @instance */ - ComparisonExpression.prototype.rightValue = null; + Blob.prototype.uri = ""; /** - * Creates a new ComparisonExpression instance using the specified properties. + * Creates a new Blob instance using the specified properties. * @function create - * @memberof flyteidl.core.ComparisonExpression + * @memberof flyteidl.core.Blob * @static - * @param {flyteidl.core.IComparisonExpression=} [properties] Properties to set - * @returns {flyteidl.core.ComparisonExpression} ComparisonExpression instance + * @param {flyteidl.core.IBlob=} [properties] Properties to set + * @returns {flyteidl.core.Blob} Blob instance */ - ComparisonExpression.create = function create(properties) { - return new ComparisonExpression(properties); + Blob.create = function create(properties) { + return new Blob(properties); }; /** - * Encodes the specified ComparisonExpression message. Does not implicitly {@link flyteidl.core.ComparisonExpression.verify|verify} messages. + * Encodes the specified Blob message. Does not implicitly {@link flyteidl.core.Blob.verify|verify} messages. * @function encode - * @memberof flyteidl.core.ComparisonExpression + * @memberof flyteidl.core.Blob * @static - * @param {flyteidl.core.IComparisonExpression} message ComparisonExpression message or plain object to encode + * @param {flyteidl.core.IBlob} message Blob message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ComparisonExpression.encode = function encode(message, writer) { + Blob.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.operator != null && message.hasOwnProperty("operator")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.operator); - if (message.leftValue != null && message.hasOwnProperty("leftValue")) - $root.flyteidl.core.Operand.encode(message.leftValue, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.rightValue != null && message.hasOwnProperty("rightValue")) - $root.flyteidl.core.Operand.encode(message.rightValue, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.metadata != null && message.hasOwnProperty("metadata")) + $root.flyteidl.core.BlobMetadata.encode(message.metadata, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.uri != null && message.hasOwnProperty("uri")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.uri); return writer; }; /** - * Decodes a ComparisonExpression message from the specified reader or buffer. + * Decodes a Blob message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.ComparisonExpression + * @memberof flyteidl.core.Blob * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.ComparisonExpression} ComparisonExpression + * @returns {flyteidl.core.Blob} Blob * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ComparisonExpression.decode = function decode(reader, length) { + Blob.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.ComparisonExpression(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Blob(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.operator = reader.int32(); - break; - case 2: - message.leftValue = $root.flyteidl.core.Operand.decode(reader, reader.uint32()); + message.metadata = $root.flyteidl.core.BlobMetadata.decode(reader, reader.uint32()); break; case 3: - message.rightValue = $root.flyteidl.core.Operand.decode(reader, reader.uint32()); + message.uri = reader.string(); break; default: reader.skipType(tag & 7); @@ -6219,86 +6698,48 @@ }; /** - * Verifies a ComparisonExpression message. + * Verifies a Blob message. * @function verify - * @memberof flyteidl.core.ComparisonExpression + * @memberof flyteidl.core.Blob * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ComparisonExpression.verify = function verify(message) { + Blob.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.operator != null && message.hasOwnProperty("operator")) - switch (message.operator) { - default: - return "operator: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - break; - } - if (message.leftValue != null && message.hasOwnProperty("leftValue")) { - var error = $root.flyteidl.core.Operand.verify(message.leftValue); - if (error) - return "leftValue." + error; - } - if (message.rightValue != null && message.hasOwnProperty("rightValue")) { - var error = $root.flyteidl.core.Operand.verify(message.rightValue); + if (message.metadata != null && message.hasOwnProperty("metadata")) { + var error = $root.flyteidl.core.BlobMetadata.verify(message.metadata); if (error) - return "rightValue." + error; + return "metadata." + error; } + if (message.uri != null && message.hasOwnProperty("uri")) + if (!$util.isString(message.uri)) + return "uri: string expected"; return null; }; - /** - * Operator enum. - * @name flyteidl.core.ComparisonExpression.Operator - * @enum {string} - * @property {number} EQ=0 EQ value - * @property {number} NEQ=1 NEQ value - * @property {number} GT=2 GT value - * @property {number} GTE=3 GTE value - * @property {number} LT=4 LT value - * @property {number} LTE=5 LTE value - */ - ComparisonExpression.Operator = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "EQ"] = 0; - values[valuesById[1] = "NEQ"] = 1; - values[valuesById[2] = "GT"] = 2; - values[valuesById[3] = "GTE"] = 3; - values[valuesById[4] = "LT"] = 4; - values[valuesById[5] = "LTE"] = 5; - return values; - })(); - - return ComparisonExpression; + return Blob; })(); - core.Operand = (function() { + core.BlobMetadata = (function() { /** - * Properties of an Operand. + * Properties of a BlobMetadata. * @memberof flyteidl.core - * @interface IOperand - * @property {flyteidl.core.IPrimitive|null} [primitive] Operand primitive - * @property {string|null} ["var"] Operand var - * @property {flyteidl.core.IScalar|null} [scalar] Operand scalar + * @interface IBlobMetadata + * @property {flyteidl.core.IBlobType|null} [type] BlobMetadata type */ /** - * Constructs a new Operand. + * Constructs a new BlobMetadata. * @memberof flyteidl.core - * @classdesc Represents an Operand. - * @implements IOperand + * @classdesc Represents a BlobMetadata. + * @implements IBlobMetadata * @constructor - * @param {flyteidl.core.IOperand=} [properties] Properties to set + * @param {flyteidl.core.IBlobMetadata=} [properties] Properties to set */ - function Operand(properties) { + function BlobMetadata(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -6306,102 +6747,62 @@ } /** - * Operand primitive. - * @member {flyteidl.core.IPrimitive|null|undefined} primitive - * @memberof flyteidl.core.Operand - * @instance - */ - Operand.prototype.primitive = null; - - /** - * Operand var. - * @member {string} var - * @memberof flyteidl.core.Operand - * @instance - */ - Operand.prototype["var"] = ""; - - /** - * Operand scalar. - * @member {flyteidl.core.IScalar|null|undefined} scalar - * @memberof flyteidl.core.Operand - * @instance - */ - Operand.prototype.scalar = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * Operand val. - * @member {"primitive"|"var"|"scalar"|undefined} val - * @memberof flyteidl.core.Operand + * BlobMetadata type. + * @member {flyteidl.core.IBlobType|null|undefined} type + * @memberof flyteidl.core.BlobMetadata * @instance */ - Object.defineProperty(Operand.prototype, "val", { - get: $util.oneOfGetter($oneOfFields = ["primitive", "var", "scalar"]), - set: $util.oneOfSetter($oneOfFields) - }); + BlobMetadata.prototype.type = null; /** - * Creates a new Operand instance using the specified properties. + * Creates a new BlobMetadata instance using the specified properties. * @function create - * @memberof flyteidl.core.Operand + * @memberof flyteidl.core.BlobMetadata * @static - * @param {flyteidl.core.IOperand=} [properties] Properties to set - * @returns {flyteidl.core.Operand} Operand instance + * @param {flyteidl.core.IBlobMetadata=} [properties] Properties to set + * @returns {flyteidl.core.BlobMetadata} BlobMetadata instance */ - Operand.create = function create(properties) { - return new Operand(properties); + BlobMetadata.create = function create(properties) { + return new BlobMetadata(properties); }; /** - * Encodes the specified Operand message. Does not implicitly {@link flyteidl.core.Operand.verify|verify} messages. + * Encodes the specified BlobMetadata message. Does not implicitly {@link flyteidl.core.BlobMetadata.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Operand + * @memberof flyteidl.core.BlobMetadata * @static - * @param {flyteidl.core.IOperand} message Operand message or plain object to encode + * @param {flyteidl.core.IBlobMetadata} message BlobMetadata message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Operand.encode = function encode(message, writer) { + BlobMetadata.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.primitive != null && message.hasOwnProperty("primitive")) - $root.flyteidl.core.Primitive.encode(message.primitive, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message["var"] != null && message.hasOwnProperty("var")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message["var"]); - if (message.scalar != null && message.hasOwnProperty("scalar")) - $root.flyteidl.core.Scalar.encode(message.scalar, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.type != null && message.hasOwnProperty("type")) + $root.flyteidl.core.BlobType.encode(message.type, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes an Operand message from the specified reader or buffer. + * Decodes a BlobMetadata message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Operand + * @memberof flyteidl.core.BlobMetadata * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Operand} Operand + * @returns {flyteidl.core.BlobMetadata} BlobMetadata * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Operand.decode = function decode(reader, length) { + BlobMetadata.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.Operand(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.BlobMetadata(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.primitive = $root.flyteidl.core.Primitive.decode(reader, reader.uint32()); - break; - case 2: - message["var"] = reader.string(); - break; - case 3: - message.scalar = $root.flyteidl.core.Scalar.decode(reader, reader.uint32()); + message.type = $root.flyteidl.core.BlobType.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -6412,67 +6813,46 @@ }; /** - * Verifies an Operand message. + * Verifies a BlobMetadata message. * @function verify - * @memberof flyteidl.core.Operand + * @memberof flyteidl.core.BlobMetadata * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Operand.verify = function verify(message) { + BlobMetadata.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.primitive != null && message.hasOwnProperty("primitive")) { - properties.val = 1; - { - var error = $root.flyteidl.core.Primitive.verify(message.primitive); - if (error) - return "primitive." + error; - } - } - if (message["var"] != null && message.hasOwnProperty("var")) { - if (properties.val === 1) - return "val: multiple values"; - properties.val = 1; - if (!$util.isString(message["var"])) - return "var: string expected"; - } - if (message.scalar != null && message.hasOwnProperty("scalar")) { - if (properties.val === 1) - return "val: multiple values"; - properties.val = 1; - { - var error = $root.flyteidl.core.Scalar.verify(message.scalar); - if (error) - return "scalar." + error; - } + if (message.type != null && message.hasOwnProperty("type")) { + var error = $root.flyteidl.core.BlobType.verify(message.type); + if (error) + return "type." + error; } return null; }; - return Operand; + return BlobMetadata; })(); - core.BooleanExpression = (function() { + core.Binary = (function() { /** - * Properties of a BooleanExpression. + * Properties of a Binary. * @memberof flyteidl.core - * @interface IBooleanExpression - * @property {flyteidl.core.IConjunctionExpression|null} [conjunction] BooleanExpression conjunction - * @property {flyteidl.core.IComparisonExpression|null} [comparison] BooleanExpression comparison + * @interface IBinary + * @property {Uint8Array|null} [value] Binary value + * @property {string|null} [tag] Binary tag */ /** - * Constructs a new BooleanExpression. + * Constructs a new Binary. * @memberof flyteidl.core - * @classdesc Represents a BooleanExpression. - * @implements IBooleanExpression + * @classdesc Represents a Binary. + * @implements IBinary * @constructor - * @param {flyteidl.core.IBooleanExpression=} [properties] Properties to set + * @param {flyteidl.core.IBinary=} [properties] Properties to set */ - function BooleanExpression(properties) { + function Binary(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -6480,89 +6860,75 @@ } /** - * BooleanExpression conjunction. - * @member {flyteidl.core.IConjunctionExpression|null|undefined} conjunction - * @memberof flyteidl.core.BooleanExpression - * @instance - */ - BooleanExpression.prototype.conjunction = null; - - /** - * BooleanExpression comparison. - * @member {flyteidl.core.IComparisonExpression|null|undefined} comparison - * @memberof flyteidl.core.BooleanExpression + * Binary value. + * @member {Uint8Array} value + * @memberof flyteidl.core.Binary * @instance */ - BooleanExpression.prototype.comparison = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + Binary.prototype.value = $util.newBuffer([]); /** - * BooleanExpression expr. - * @member {"conjunction"|"comparison"|undefined} expr - * @memberof flyteidl.core.BooleanExpression + * Binary tag. + * @member {string} tag + * @memberof flyteidl.core.Binary * @instance */ - Object.defineProperty(BooleanExpression.prototype, "expr", { - get: $util.oneOfGetter($oneOfFields = ["conjunction", "comparison"]), - set: $util.oneOfSetter($oneOfFields) - }); + Binary.prototype.tag = ""; /** - * Creates a new BooleanExpression instance using the specified properties. + * Creates a new Binary instance using the specified properties. * @function create - * @memberof flyteidl.core.BooleanExpression + * @memberof flyteidl.core.Binary * @static - * @param {flyteidl.core.IBooleanExpression=} [properties] Properties to set - * @returns {flyteidl.core.BooleanExpression} BooleanExpression instance + * @param {flyteidl.core.IBinary=} [properties] Properties to set + * @returns {flyteidl.core.Binary} Binary instance */ - BooleanExpression.create = function create(properties) { - return new BooleanExpression(properties); + Binary.create = function create(properties) { + return new Binary(properties); }; /** - * Encodes the specified BooleanExpression message. Does not implicitly {@link flyteidl.core.BooleanExpression.verify|verify} messages. + * Encodes the specified Binary message. Does not implicitly {@link flyteidl.core.Binary.verify|verify} messages. * @function encode - * @memberof flyteidl.core.BooleanExpression + * @memberof flyteidl.core.Binary * @static - * @param {flyteidl.core.IBooleanExpression} message BooleanExpression message or plain object to encode + * @param {flyteidl.core.IBinary} message Binary message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BooleanExpression.encode = function encode(message, writer) { + Binary.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.conjunction != null && message.hasOwnProperty("conjunction")) - $root.flyteidl.core.ConjunctionExpression.encode(message.conjunction, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.comparison != null && message.hasOwnProperty("comparison")) - $root.flyteidl.core.ComparisonExpression.encode(message.comparison, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.value); + if (message.tag != null && message.hasOwnProperty("tag")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.tag); return writer; }; /** - * Decodes a BooleanExpression message from the specified reader or buffer. + * Decodes a Binary message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.BooleanExpression + * @memberof flyteidl.core.Binary * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.BooleanExpression} BooleanExpression + * @returns {flyteidl.core.Binary} Binary * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BooleanExpression.decode = function decode(reader, length) { + Binary.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.BooleanExpression(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Binary(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.conjunction = $root.flyteidl.core.ConjunctionExpression.decode(reader, reader.uint32()); + message.value = reader.bytes(); break; case 2: - message.comparison = $root.flyteidl.core.ComparisonExpression.decode(reader, reader.uint32()); + message.tag = reader.string(); break; default: reader.skipType(tag & 7); @@ -6573,61 +6939,47 @@ }; /** - * Verifies a BooleanExpression message. + * Verifies a Binary message. * @function verify - * @memberof flyteidl.core.BooleanExpression + * @memberof flyteidl.core.Binary * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BooleanExpression.verify = function verify(message) { + Binary.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.conjunction != null && message.hasOwnProperty("conjunction")) { - properties.expr = 1; - { - var error = $root.flyteidl.core.ConjunctionExpression.verify(message.conjunction); - if (error) - return "conjunction." + error; - } - } - if (message.comparison != null && message.hasOwnProperty("comparison")) { - if (properties.expr === 1) - return "expr: multiple values"; - properties.expr = 1; - { - var error = $root.flyteidl.core.ComparisonExpression.verify(message.comparison); - if (error) - return "comparison." + error; - } - } + if (message.value != null && message.hasOwnProperty("value")) + if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) + return "value: buffer expected"; + if (message.tag != null && message.hasOwnProperty("tag")) + if (!$util.isString(message.tag)) + return "tag: string expected"; return null; }; - return BooleanExpression; + return Binary; })(); - core.ConjunctionExpression = (function() { + core.Schema = (function() { /** - * Properties of a ConjunctionExpression. + * Properties of a Schema. * @memberof flyteidl.core - * @interface IConjunctionExpression - * @property {flyteidl.core.ConjunctionExpression.LogicalOperator|null} [operator] ConjunctionExpression operator - * @property {flyteidl.core.IBooleanExpression|null} [leftExpression] ConjunctionExpression leftExpression - * @property {flyteidl.core.IBooleanExpression|null} [rightExpression] ConjunctionExpression rightExpression + * @interface ISchema + * @property {string|null} [uri] Schema uri + * @property {flyteidl.core.ISchemaType|null} [type] Schema type */ /** - * Constructs a new ConjunctionExpression. + * Constructs a new Schema. * @memberof flyteidl.core - * @classdesc Represents a ConjunctionExpression. - * @implements IConjunctionExpression + * @classdesc Represents a Schema. + * @implements ISchema * @constructor - * @param {flyteidl.core.IConjunctionExpression=} [properties] Properties to set + * @param {flyteidl.core.ISchema=} [properties] Properties to set */ - function ConjunctionExpression(properties) { + function Schema(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -6635,88 +6987,75 @@ } /** - * ConjunctionExpression operator. - * @member {flyteidl.core.ConjunctionExpression.LogicalOperator} operator - * @memberof flyteidl.core.ConjunctionExpression - * @instance - */ - ConjunctionExpression.prototype.operator = 0; - - /** - * ConjunctionExpression leftExpression. - * @member {flyteidl.core.IBooleanExpression|null|undefined} leftExpression - * @memberof flyteidl.core.ConjunctionExpression + * Schema uri. + * @member {string} uri + * @memberof flyteidl.core.Schema * @instance */ - ConjunctionExpression.prototype.leftExpression = null; + Schema.prototype.uri = ""; /** - * ConjunctionExpression rightExpression. - * @member {flyteidl.core.IBooleanExpression|null|undefined} rightExpression - * @memberof flyteidl.core.ConjunctionExpression + * Schema type. + * @member {flyteidl.core.ISchemaType|null|undefined} type + * @memberof flyteidl.core.Schema * @instance */ - ConjunctionExpression.prototype.rightExpression = null; + Schema.prototype.type = null; /** - * Creates a new ConjunctionExpression instance using the specified properties. + * Creates a new Schema instance using the specified properties. * @function create - * @memberof flyteidl.core.ConjunctionExpression + * @memberof flyteidl.core.Schema * @static - * @param {flyteidl.core.IConjunctionExpression=} [properties] Properties to set - * @returns {flyteidl.core.ConjunctionExpression} ConjunctionExpression instance + * @param {flyteidl.core.ISchema=} [properties] Properties to set + * @returns {flyteidl.core.Schema} Schema instance */ - ConjunctionExpression.create = function create(properties) { - return new ConjunctionExpression(properties); + Schema.create = function create(properties) { + return new Schema(properties); }; /** - * Encodes the specified ConjunctionExpression message. Does not implicitly {@link flyteidl.core.ConjunctionExpression.verify|verify} messages. + * Encodes the specified Schema message. Does not implicitly {@link flyteidl.core.Schema.verify|verify} messages. * @function encode - * @memberof flyteidl.core.ConjunctionExpression + * @memberof flyteidl.core.Schema * @static - * @param {flyteidl.core.IConjunctionExpression} message ConjunctionExpression message or plain object to encode + * @param {flyteidl.core.ISchema} message Schema message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ConjunctionExpression.encode = function encode(message, writer) { + Schema.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.operator != null && message.hasOwnProperty("operator")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.operator); - if (message.leftExpression != null && message.hasOwnProperty("leftExpression")) - $root.flyteidl.core.BooleanExpression.encode(message.leftExpression, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.rightExpression != null && message.hasOwnProperty("rightExpression")) - $root.flyteidl.core.BooleanExpression.encode(message.rightExpression, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.uri != null && message.hasOwnProperty("uri")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.uri); + if (message.type != null && message.hasOwnProperty("type")) + $root.flyteidl.core.SchemaType.encode(message.type, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Decodes a ConjunctionExpression message from the specified reader or buffer. + * Decodes a Schema message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.ConjunctionExpression + * @memberof flyteidl.core.Schema * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.ConjunctionExpression} ConjunctionExpression + * @returns {flyteidl.core.Schema} Schema * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ConjunctionExpression.decode = function decode(reader, length) { + Schema.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.ConjunctionExpression(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Schema(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.operator = reader.int32(); - break; - case 2: - message.leftExpression = $root.flyteidl.core.BooleanExpression.decode(reader, reader.uint32()); + message.uri = reader.string(); break; case 3: - message.rightExpression = $root.flyteidl.core.BooleanExpression.decode(reader, reader.uint32()); + message.type = $root.flyteidl.core.SchemaType.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -6727,77 +7066,49 @@ }; /** - * Verifies a ConjunctionExpression message. + * Verifies a Schema message. * @function verify - * @memberof flyteidl.core.ConjunctionExpression + * @memberof flyteidl.core.Schema * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ConjunctionExpression.verify = function verify(message) { + Schema.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.operator != null && message.hasOwnProperty("operator")) - switch (message.operator) { - default: - return "operator: enum value expected"; - case 0: - case 1: - break; - } - if (message.leftExpression != null && message.hasOwnProperty("leftExpression")) { - var error = $root.flyteidl.core.BooleanExpression.verify(message.leftExpression); - if (error) - return "leftExpression." + error; - } - if (message.rightExpression != null && message.hasOwnProperty("rightExpression")) { - var error = $root.flyteidl.core.BooleanExpression.verify(message.rightExpression); + if (message.uri != null && message.hasOwnProperty("uri")) + if (!$util.isString(message.uri)) + return "uri: string expected"; + if (message.type != null && message.hasOwnProperty("type")) { + var error = $root.flyteidl.core.SchemaType.verify(message.type); if (error) - return "rightExpression." + error; + return "type." + error; } return null; }; - /** - * LogicalOperator enum. - * @name flyteidl.core.ConjunctionExpression.LogicalOperator - * @enum {string} - * @property {number} AND=0 AND value - * @property {number} OR=1 OR value - */ - ConjunctionExpression.LogicalOperator = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "AND"] = 0; - values[valuesById[1] = "OR"] = 1; - return values; - })(); - - return ConjunctionExpression; + return Schema; })(); - core.Primitive = (function() { + core.Union = (function() { /** - * Properties of a Primitive. + * Properties of an Union. * @memberof flyteidl.core - * @interface IPrimitive - * @property {Long|null} [integer] Primitive integer - * @property {number|null} [floatValue] Primitive floatValue - * @property {string|null} [stringValue] Primitive stringValue - * @property {boolean|null} [boolean] Primitive boolean - * @property {google.protobuf.ITimestamp|null} [datetime] Primitive datetime - * @property {google.protobuf.IDuration|null} [duration] Primitive duration + * @interface IUnion + * @property {flyteidl.core.ILiteral|null} [value] Union value + * @property {flyteidl.core.ILiteralType|null} [type] Union type */ /** - * Constructs a new Primitive. + * Constructs a new Union. * @memberof flyteidl.core - * @classdesc Represents a Primitive. - * @implements IPrimitive + * @classdesc Represents an Union. + * @implements IUnion * @constructor - * @param {flyteidl.core.IPrimitive=} [properties] Properties to set + * @param {flyteidl.core.IUnion=} [properties] Properties to set */ - function Primitive(properties) { + function Union(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -6805,141 +7116,75 @@ } /** - * Primitive integer. - * @member {Long} integer - * @memberof flyteidl.core.Primitive - * @instance - */ - Primitive.prototype.integer = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Primitive floatValue. - * @member {number} floatValue - * @memberof flyteidl.core.Primitive - * @instance - */ - Primitive.prototype.floatValue = 0; - - /** - * Primitive stringValue. - * @member {string} stringValue - * @memberof flyteidl.core.Primitive - * @instance - */ - Primitive.prototype.stringValue = ""; - - /** - * Primitive boolean. - * @member {boolean} boolean - * @memberof flyteidl.core.Primitive - * @instance - */ - Primitive.prototype.boolean = false; - - /** - * Primitive datetime. - * @member {google.protobuf.ITimestamp|null|undefined} datetime - * @memberof flyteidl.core.Primitive - * @instance - */ - Primitive.prototype.datetime = null; - - /** - * Primitive duration. - * @member {google.protobuf.IDuration|null|undefined} duration - * @memberof flyteidl.core.Primitive + * Union value. + * @member {flyteidl.core.ILiteral|null|undefined} value + * @memberof flyteidl.core.Union * @instance */ - Primitive.prototype.duration = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + Union.prototype.value = null; /** - * Primitive value. - * @member {"integer"|"floatValue"|"stringValue"|"boolean"|"datetime"|"duration"|undefined} value - * @memberof flyteidl.core.Primitive + * Union type. + * @member {flyteidl.core.ILiteralType|null|undefined} type + * @memberof flyteidl.core.Union * @instance */ - Object.defineProperty(Primitive.prototype, "value", { - get: $util.oneOfGetter($oneOfFields = ["integer", "floatValue", "stringValue", "boolean", "datetime", "duration"]), - set: $util.oneOfSetter($oneOfFields) - }); + Union.prototype.type = null; /** - * Creates a new Primitive instance using the specified properties. + * Creates a new Union instance using the specified properties. * @function create - * @memberof flyteidl.core.Primitive + * @memberof flyteidl.core.Union * @static - * @param {flyteidl.core.IPrimitive=} [properties] Properties to set - * @returns {flyteidl.core.Primitive} Primitive instance + * @param {flyteidl.core.IUnion=} [properties] Properties to set + * @returns {flyteidl.core.Union} Union instance */ - Primitive.create = function create(properties) { - return new Primitive(properties); + Union.create = function create(properties) { + return new Union(properties); }; /** - * Encodes the specified Primitive message. Does not implicitly {@link flyteidl.core.Primitive.verify|verify} messages. + * Encodes the specified Union message. Does not implicitly {@link flyteidl.core.Union.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Primitive + * @memberof flyteidl.core.Union * @static - * @param {flyteidl.core.IPrimitive} message Primitive message or plain object to encode + * @param {flyteidl.core.IUnion} message Union message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Primitive.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.integer != null && message.hasOwnProperty("integer")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.integer); - if (message.floatValue != null && message.hasOwnProperty("floatValue")) - writer.uint32(/* id 2, wireType 1 =*/17).double(message.floatValue); - if (message.stringValue != null && message.hasOwnProperty("stringValue")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.stringValue); - if (message.boolean != null && message.hasOwnProperty("boolean")) - writer.uint32(/* id 4, wireType 0 =*/32).bool(message.boolean); - if (message.datetime != null && message.hasOwnProperty("datetime")) - $root.google.protobuf.Timestamp.encode(message.datetime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.duration != null && message.hasOwnProperty("duration")) - $root.google.protobuf.Duration.encode(message.duration, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + Union.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + $root.flyteidl.core.Literal.encode(message.value, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.type != null && message.hasOwnProperty("type")) + $root.flyteidl.core.LiteralType.encode(message.type, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a Primitive message from the specified reader or buffer. + * Decodes an Union message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Primitive + * @memberof flyteidl.core.Union * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Primitive} Primitive + * @returns {flyteidl.core.Union} Union * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Primitive.decode = function decode(reader, length) { + Union.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.Primitive(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Union(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.integer = reader.int64(); + message.value = $root.flyteidl.core.Literal.decode(reader, reader.uint32()); break; case 2: - message.floatValue = reader.double(); - break; - case 3: - message.stringValue = reader.string(); - break; - case 4: - message.boolean = reader.bool(); - break; - case 5: - message.datetime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - case 6: - message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.type = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -6950,86 +7195,50 @@ }; /** - * Verifies a Primitive message. + * Verifies an Union message. * @function verify - * @memberof flyteidl.core.Primitive + * @memberof flyteidl.core.Union * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Primitive.verify = function verify(message) { + Union.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.integer != null && message.hasOwnProperty("integer")) { - properties.value = 1; - if (!$util.isInteger(message.integer) && !(message.integer && $util.isInteger(message.integer.low) && $util.isInteger(message.integer.high))) - return "integer: integer|Long expected"; - } - if (message.floatValue != null && message.hasOwnProperty("floatValue")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - if (typeof message.floatValue !== "number") - return "floatValue: number expected"; - } - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - if (!$util.isString(message.stringValue)) - return "stringValue: string expected"; - } - if (message.boolean != null && message.hasOwnProperty("boolean")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - if (typeof message.boolean !== "boolean") - return "boolean: boolean expected"; - } - if (message.datetime != null && message.hasOwnProperty("datetime")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.google.protobuf.Timestamp.verify(message.datetime); - if (error) - return "datetime." + error; - } + if (message.value != null && message.hasOwnProperty("value")) { + var error = $root.flyteidl.core.Literal.verify(message.value); + if (error) + return "value." + error; } - if (message.duration != null && message.hasOwnProperty("duration")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.google.protobuf.Duration.verify(message.duration); - if (error) - return "duration." + error; - } + if (message.type != null && message.hasOwnProperty("type")) { + var error = $root.flyteidl.core.LiteralType.verify(message.type); + if (error) + return "type." + error; } return null; }; - return Primitive; + return Union; })(); - core.Void = (function() { + core.StructuredDatasetMetadata = (function() { /** - * Properties of a Void. + * Properties of a StructuredDatasetMetadata. * @memberof flyteidl.core - * @interface IVoid + * @interface IStructuredDatasetMetadata + * @property {flyteidl.core.IStructuredDatasetType|null} [structuredDatasetType] StructuredDatasetMetadata structuredDatasetType */ /** - * Constructs a new Void. + * Constructs a new StructuredDatasetMetadata. * @memberof flyteidl.core - * @classdesc Represents a Void. - * @implements IVoid + * @classdesc Represents a StructuredDatasetMetadata. + * @implements IStructuredDatasetMetadata * @constructor - * @param {flyteidl.core.IVoid=} [properties] Properties to set + * @param {flyteidl.core.IStructuredDatasetMetadata=} [properties] Properties to set */ - function Void(properties) { + function StructuredDatasetMetadata(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7037,50 +7246,63 @@ } /** - * Creates a new Void instance using the specified properties. + * StructuredDatasetMetadata structuredDatasetType. + * @member {flyteidl.core.IStructuredDatasetType|null|undefined} structuredDatasetType + * @memberof flyteidl.core.StructuredDatasetMetadata + * @instance + */ + StructuredDatasetMetadata.prototype.structuredDatasetType = null; + + /** + * Creates a new StructuredDatasetMetadata instance using the specified properties. * @function create - * @memberof flyteidl.core.Void + * @memberof flyteidl.core.StructuredDatasetMetadata * @static - * @param {flyteidl.core.IVoid=} [properties] Properties to set - * @returns {flyteidl.core.Void} Void instance + * @param {flyteidl.core.IStructuredDatasetMetadata=} [properties] Properties to set + * @returns {flyteidl.core.StructuredDatasetMetadata} StructuredDatasetMetadata instance */ - Void.create = function create(properties) { - return new Void(properties); + StructuredDatasetMetadata.create = function create(properties) { + return new StructuredDatasetMetadata(properties); }; /** - * Encodes the specified Void message. Does not implicitly {@link flyteidl.core.Void.verify|verify} messages. + * Encodes the specified StructuredDatasetMetadata message. Does not implicitly {@link flyteidl.core.StructuredDatasetMetadata.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Void + * @memberof flyteidl.core.StructuredDatasetMetadata * @static - * @param {flyteidl.core.IVoid} message Void message or plain object to encode + * @param {flyteidl.core.IStructuredDatasetMetadata} message StructuredDatasetMetadata message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Void.encode = function encode(message, writer) { + StructuredDatasetMetadata.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.structuredDatasetType != null && message.hasOwnProperty("structuredDatasetType")) + $root.flyteidl.core.StructuredDatasetType.encode(message.structuredDatasetType, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a Void message from the specified reader or buffer. + * Decodes a StructuredDatasetMetadata message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Void + * @memberof flyteidl.core.StructuredDatasetMetadata * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Void} Void + * @returns {flyteidl.core.StructuredDatasetMetadata} StructuredDatasetMetadata * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Void.decode = function decode(reader, length) { + StructuredDatasetMetadata.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.Void(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.StructuredDatasetMetadata(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: + message.structuredDatasetType = $root.flyteidl.core.StructuredDatasetType.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -7090,41 +7312,46 @@ }; /** - * Verifies a Void message. + * Verifies a StructuredDatasetMetadata message. * @function verify - * @memberof flyteidl.core.Void + * @memberof flyteidl.core.StructuredDatasetMetadata * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Void.verify = function verify(message) { + StructuredDatasetMetadata.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.structuredDatasetType != null && message.hasOwnProperty("structuredDatasetType")) { + var error = $root.flyteidl.core.StructuredDatasetType.verify(message.structuredDatasetType); + if (error) + return "structuredDatasetType." + error; + } return null; }; - return Void; + return StructuredDatasetMetadata; })(); - core.Blob = (function() { + core.StructuredDataset = (function() { /** - * Properties of a Blob. + * Properties of a StructuredDataset. * @memberof flyteidl.core - * @interface IBlob - * @property {flyteidl.core.IBlobMetadata|null} [metadata] Blob metadata - * @property {string|null} [uri] Blob uri + * @interface IStructuredDataset + * @property {string|null} [uri] StructuredDataset uri + * @property {flyteidl.core.IStructuredDatasetMetadata|null} [metadata] StructuredDataset metadata */ /** - * Constructs a new Blob. + * Constructs a new StructuredDataset. * @memberof flyteidl.core - * @classdesc Represents a Blob. - * @implements IBlob + * @classdesc Represents a StructuredDataset. + * @implements IStructuredDataset * @constructor - * @param {flyteidl.core.IBlob=} [properties] Properties to set + * @param {flyteidl.core.IStructuredDataset=} [properties] Properties to set */ - function Blob(properties) { + function StructuredDataset(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7132,76 +7359,76 @@ } /** - * Blob metadata. - * @member {flyteidl.core.IBlobMetadata|null|undefined} metadata - * @memberof flyteidl.core.Blob + * StructuredDataset uri. + * @member {string} uri + * @memberof flyteidl.core.StructuredDataset * @instance */ - Blob.prototype.metadata = null; + StructuredDataset.prototype.uri = ""; /** - * Blob uri. - * @member {string} uri - * @memberof flyteidl.core.Blob + * StructuredDataset metadata. + * @member {flyteidl.core.IStructuredDatasetMetadata|null|undefined} metadata + * @memberof flyteidl.core.StructuredDataset * @instance */ - Blob.prototype.uri = ""; + StructuredDataset.prototype.metadata = null; /** - * Creates a new Blob instance using the specified properties. + * Creates a new StructuredDataset instance using the specified properties. * @function create - * @memberof flyteidl.core.Blob + * @memberof flyteidl.core.StructuredDataset * @static - * @param {flyteidl.core.IBlob=} [properties] Properties to set - * @returns {flyteidl.core.Blob} Blob instance + * @param {flyteidl.core.IStructuredDataset=} [properties] Properties to set + * @returns {flyteidl.core.StructuredDataset} StructuredDataset instance */ - Blob.create = function create(properties) { - return new Blob(properties); + StructuredDataset.create = function create(properties) { + return new StructuredDataset(properties); }; /** - * Encodes the specified Blob message. Does not implicitly {@link flyteidl.core.Blob.verify|verify} messages. + * Encodes the specified StructuredDataset message. Does not implicitly {@link flyteidl.core.StructuredDataset.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Blob + * @memberof flyteidl.core.StructuredDataset * @static - * @param {flyteidl.core.IBlob} message Blob message or plain object to encode + * @param {flyteidl.core.IStructuredDataset} message StructuredDataset message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Blob.encode = function encode(message, writer) { + StructuredDataset.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.metadata != null && message.hasOwnProperty("metadata")) - $root.flyteidl.core.BlobMetadata.encode(message.metadata, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.uri != null && message.hasOwnProperty("uri")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.uri); + writer.uint32(/* id 1, wireType 2 =*/10).string(message.uri); + if (message.metadata != null && message.hasOwnProperty("metadata")) + $root.flyteidl.core.StructuredDatasetMetadata.encode(message.metadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a Blob message from the specified reader or buffer. + * Decodes a StructuredDataset message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Blob + * @memberof flyteidl.core.StructuredDataset * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Blob} Blob + * @returns {flyteidl.core.StructuredDataset} StructuredDataset * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Blob.decode = function decode(reader, length) { + StructuredDataset.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.Blob(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.StructuredDataset(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.metadata = $root.flyteidl.core.BlobMetadata.decode(reader, reader.uint32()); - break; - case 3: message.uri = reader.string(); break; + case 2: + message.metadata = $root.flyteidl.core.StructuredDatasetMetadata.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -7211,48 +7438,56 @@ }; /** - * Verifies a Blob message. + * Verifies a StructuredDataset message. * @function verify - * @memberof flyteidl.core.Blob + * @memberof flyteidl.core.StructuredDataset * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Blob.verify = function verify(message) { + StructuredDataset.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.uri != null && message.hasOwnProperty("uri")) + if (!$util.isString(message.uri)) + return "uri: string expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.flyteidl.core.BlobMetadata.verify(message.metadata); + var error = $root.flyteidl.core.StructuredDatasetMetadata.verify(message.metadata); if (error) return "metadata." + error; } - if (message.uri != null && message.hasOwnProperty("uri")) - if (!$util.isString(message.uri)) - return "uri: string expected"; return null; }; - return Blob; + return StructuredDataset; })(); - core.BlobMetadata = (function() { + core.Scalar = (function() { /** - * Properties of a BlobMetadata. + * Properties of a Scalar. * @memberof flyteidl.core - * @interface IBlobMetadata - * @property {flyteidl.core.IBlobType|null} [type] BlobMetadata type + * @interface IScalar + * @property {flyteidl.core.IPrimitive|null} [primitive] Scalar primitive + * @property {flyteidl.core.IBlob|null} [blob] Scalar blob + * @property {flyteidl.core.IBinary|null} [binary] Scalar binary + * @property {flyteidl.core.ISchema|null} [schema] Scalar schema + * @property {flyteidl.core.IVoid|null} [noneType] Scalar noneType + * @property {flyteidl.core.IError|null} [error] Scalar error + * @property {google.protobuf.IStruct|null} [generic] Scalar generic + * @property {flyteidl.core.IStructuredDataset|null} [structuredDataset] Scalar structuredDataset + * @property {flyteidl.core.IUnion|null} [union] Scalar union */ /** - * Constructs a new BlobMetadata. + * Constructs a new Scalar. * @memberof flyteidl.core - * @classdesc Represents a BlobMetadata. - * @implements IBlobMetadata + * @classdesc Represents a Scalar. + * @implements IScalar * @constructor - * @param {flyteidl.core.IBlobMetadata=} [properties] Properties to set + * @param {flyteidl.core.IScalar=} [properties] Properties to set */ - function BlobMetadata(properties) { + function Scalar(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7260,112 +7495,318 @@ } /** - * BlobMetadata type. - * @member {flyteidl.core.IBlobType|null|undefined} type - * @memberof flyteidl.core.BlobMetadata + * Scalar primitive. + * @member {flyteidl.core.IPrimitive|null|undefined} primitive + * @memberof flyteidl.core.Scalar * @instance */ - BlobMetadata.prototype.type = null; + Scalar.prototype.primitive = null; /** - * Creates a new BlobMetadata instance using the specified properties. + * Scalar blob. + * @member {flyteidl.core.IBlob|null|undefined} blob + * @memberof flyteidl.core.Scalar + * @instance + */ + Scalar.prototype.blob = null; + + /** + * Scalar binary. + * @member {flyteidl.core.IBinary|null|undefined} binary + * @memberof flyteidl.core.Scalar + * @instance + */ + Scalar.prototype.binary = null; + + /** + * Scalar schema. + * @member {flyteidl.core.ISchema|null|undefined} schema + * @memberof flyteidl.core.Scalar + * @instance + */ + Scalar.prototype.schema = null; + + /** + * Scalar noneType. + * @member {flyteidl.core.IVoid|null|undefined} noneType + * @memberof flyteidl.core.Scalar + * @instance + */ + Scalar.prototype.noneType = null; + + /** + * Scalar error. + * @member {flyteidl.core.IError|null|undefined} error + * @memberof flyteidl.core.Scalar + * @instance + */ + Scalar.prototype.error = null; + + /** + * Scalar generic. + * @member {google.protobuf.IStruct|null|undefined} generic + * @memberof flyteidl.core.Scalar + * @instance + */ + Scalar.prototype.generic = null; + + /** + * Scalar structuredDataset. + * @member {flyteidl.core.IStructuredDataset|null|undefined} structuredDataset + * @memberof flyteidl.core.Scalar + * @instance + */ + Scalar.prototype.structuredDataset = null; + + /** + * Scalar union. + * @member {flyteidl.core.IUnion|null|undefined} union + * @memberof flyteidl.core.Scalar + * @instance + */ + Scalar.prototype.union = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Scalar value. + * @member {"primitive"|"blob"|"binary"|"schema"|"noneType"|"error"|"generic"|"structuredDataset"|"union"|undefined} value + * @memberof flyteidl.core.Scalar + * @instance + */ + Object.defineProperty(Scalar.prototype, "value", { + get: $util.oneOfGetter($oneOfFields = ["primitive", "blob", "binary", "schema", "noneType", "error", "generic", "structuredDataset", "union"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Scalar instance using the specified properties. * @function create - * @memberof flyteidl.core.BlobMetadata + * @memberof flyteidl.core.Scalar * @static - * @param {flyteidl.core.IBlobMetadata=} [properties] Properties to set - * @returns {flyteidl.core.BlobMetadata} BlobMetadata instance + * @param {flyteidl.core.IScalar=} [properties] Properties to set + * @returns {flyteidl.core.Scalar} Scalar instance */ - BlobMetadata.create = function create(properties) { - return new BlobMetadata(properties); + Scalar.create = function create(properties) { + return new Scalar(properties); }; /** - * Encodes the specified BlobMetadata message. Does not implicitly {@link flyteidl.core.BlobMetadata.verify|verify} messages. + * Encodes the specified Scalar message. Does not implicitly {@link flyteidl.core.Scalar.verify|verify} messages. * @function encode - * @memberof flyteidl.core.BlobMetadata + * @memberof flyteidl.core.Scalar * @static - * @param {flyteidl.core.IBlobMetadata} message BlobMetadata message or plain object to encode + * @param {flyteidl.core.IScalar} message Scalar message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BlobMetadata.encode = function encode(message, writer) { + Scalar.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.type != null && message.hasOwnProperty("type")) - $root.flyteidl.core.BlobType.encode(message.type, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.primitive != null && message.hasOwnProperty("primitive")) + $root.flyteidl.core.Primitive.encode(message.primitive, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.blob != null && message.hasOwnProperty("blob")) + $root.flyteidl.core.Blob.encode(message.blob, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.binary != null && message.hasOwnProperty("binary")) + $root.flyteidl.core.Binary.encode(message.binary, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.schema != null && message.hasOwnProperty("schema")) + $root.flyteidl.core.Schema.encode(message.schema, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.noneType != null && message.hasOwnProperty("noneType")) + $root.flyteidl.core.Void.encode(message.noneType, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.error != null && message.hasOwnProperty("error")) + $root.flyteidl.core.Error.encode(message.error, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.generic != null && message.hasOwnProperty("generic")) + $root.google.protobuf.Struct.encode(message.generic, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.structuredDataset != null && message.hasOwnProperty("structuredDataset")) + $root.flyteidl.core.StructuredDataset.encode(message.structuredDataset, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.union != null && message.hasOwnProperty("union")) + $root.flyteidl.core.Union.encode(message.union, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); return writer; }; /** - * Decodes a BlobMetadata message from the specified reader or buffer. + * Decodes a Scalar message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.BlobMetadata + * @memberof flyteidl.core.Scalar * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.BlobMetadata} BlobMetadata + * @returns {flyteidl.core.Scalar} Scalar * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BlobMetadata.decode = function decode(reader, length) { + Scalar.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.BlobMetadata(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Scalar(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.type = $root.flyteidl.core.BlobType.decode(reader, reader.uint32()); + message.primitive = $root.flyteidl.core.Primitive.decode(reader, reader.uint32()); + break; + case 2: + message.blob = $root.flyteidl.core.Blob.decode(reader, reader.uint32()); + break; + case 3: + message.binary = $root.flyteidl.core.Binary.decode(reader, reader.uint32()); + break; + case 4: + message.schema = $root.flyteidl.core.Schema.decode(reader, reader.uint32()); + break; + case 5: + message.noneType = $root.flyteidl.core.Void.decode(reader, reader.uint32()); + break; + case 6: + message.error = $root.flyteidl.core.Error.decode(reader, reader.uint32()); + break; + case 7: + message.generic = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + break; + case 8: + message.structuredDataset = $root.flyteidl.core.StructuredDataset.decode(reader, reader.uint32()); + break; + case 9: + message.union = $root.flyteidl.core.Union.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); break; } } - return message; - }; - - /** - * Verifies a BlobMetadata message. - * @function verify - * @memberof flyteidl.core.BlobMetadata - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - BlobMetadata.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.type != null && message.hasOwnProperty("type")) { - var error = $root.flyteidl.core.BlobType.verify(message.type); - if (error) - return "type." + error; + return message; + }; + + /** + * Verifies a Scalar message. + * @function verify + * @memberof flyteidl.core.Scalar + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Scalar.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.primitive != null && message.hasOwnProperty("primitive")) { + properties.value = 1; + { + var error = $root.flyteidl.core.Primitive.verify(message.primitive); + if (error) + return "primitive." + error; + } + } + if (message.blob != null && message.hasOwnProperty("blob")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.Blob.verify(message.blob); + if (error) + return "blob." + error; + } + } + if (message.binary != null && message.hasOwnProperty("binary")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.Binary.verify(message.binary); + if (error) + return "binary." + error; + } + } + if (message.schema != null && message.hasOwnProperty("schema")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.Schema.verify(message.schema); + if (error) + return "schema." + error; + } + } + if (message.noneType != null && message.hasOwnProperty("noneType")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.Void.verify(message.noneType); + if (error) + return "noneType." + error; + } + } + if (message.error != null && message.hasOwnProperty("error")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.Error.verify(message.error); + if (error) + return "error." + error; + } + } + if (message.generic != null && message.hasOwnProperty("generic")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.google.protobuf.Struct.verify(message.generic); + if (error) + return "generic." + error; + } + } + if (message.structuredDataset != null && message.hasOwnProperty("structuredDataset")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.StructuredDataset.verify(message.structuredDataset); + if (error) + return "structuredDataset." + error; + } + } + if (message.union != null && message.hasOwnProperty("union")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.Union.verify(message.union); + if (error) + return "union." + error; + } } return null; }; - return BlobMetadata; + return Scalar; })(); - core.Binary = (function() { + core.Literal = (function() { /** - * Properties of a Binary. + * Properties of a Literal. * @memberof flyteidl.core - * @interface IBinary - * @property {Uint8Array|null} [value] Binary value - * @property {string|null} [tag] Binary tag + * @interface ILiteral + * @property {flyteidl.core.IScalar|null} [scalar] Literal scalar + * @property {flyteidl.core.ILiteralCollection|null} [collection] Literal collection + * @property {flyteidl.core.ILiteralMap|null} [map] Literal map + * @property {string|null} [hash] Literal hash + * @property {Object.|null} [metadata] Literal metadata */ /** - * Constructs a new Binary. + * Constructs a new Literal. * @memberof flyteidl.core - * @classdesc Represents a Binary. - * @implements IBinary + * @classdesc Represents a Literal. + * @implements ILiteral * @constructor - * @param {flyteidl.core.IBinary=} [properties] Properties to set + * @param {flyteidl.core.ILiteral=} [properties] Properties to set */ - function Binary(properties) { + function Literal(properties) { + this.metadata = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7373,75 +7814,134 @@ } /** - * Binary value. - * @member {Uint8Array} value - * @memberof flyteidl.core.Binary + * Literal scalar. + * @member {flyteidl.core.IScalar|null|undefined} scalar + * @memberof flyteidl.core.Literal * @instance */ - Binary.prototype.value = $util.newBuffer([]); + Literal.prototype.scalar = null; /** - * Binary tag. - * @member {string} tag - * @memberof flyteidl.core.Binary + * Literal collection. + * @member {flyteidl.core.ILiteralCollection|null|undefined} collection + * @memberof flyteidl.core.Literal * @instance */ - Binary.prototype.tag = ""; + Literal.prototype.collection = null; /** - * Creates a new Binary instance using the specified properties. + * Literal map. + * @member {flyteidl.core.ILiteralMap|null|undefined} map + * @memberof flyteidl.core.Literal + * @instance + */ + Literal.prototype.map = null; + + /** + * Literal hash. + * @member {string} hash + * @memberof flyteidl.core.Literal + * @instance + */ + Literal.prototype.hash = ""; + + /** + * Literal metadata. + * @member {Object.} metadata + * @memberof flyteidl.core.Literal + * @instance + */ + Literal.prototype.metadata = $util.emptyObject; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Literal value. + * @member {"scalar"|"collection"|"map"|undefined} value + * @memberof flyteidl.core.Literal + * @instance + */ + Object.defineProperty(Literal.prototype, "value", { + get: $util.oneOfGetter($oneOfFields = ["scalar", "collection", "map"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Literal instance using the specified properties. * @function create - * @memberof flyteidl.core.Binary + * @memberof flyteidl.core.Literal * @static - * @param {flyteidl.core.IBinary=} [properties] Properties to set - * @returns {flyteidl.core.Binary} Binary instance + * @param {flyteidl.core.ILiteral=} [properties] Properties to set + * @returns {flyteidl.core.Literal} Literal instance */ - Binary.create = function create(properties) { - return new Binary(properties); + Literal.create = function create(properties) { + return new Literal(properties); }; /** - * Encodes the specified Binary message. Does not implicitly {@link flyteidl.core.Binary.verify|verify} messages. + * Encodes the specified Literal message. Does not implicitly {@link flyteidl.core.Literal.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Binary + * @memberof flyteidl.core.Literal * @static - * @param {flyteidl.core.IBinary} message Binary message or plain object to encode + * @param {flyteidl.core.ILiteral} message Literal message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Binary.encode = function encode(message, writer) { + Literal.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.value); - if (message.tag != null && message.hasOwnProperty("tag")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.tag); + if (message.scalar != null && message.hasOwnProperty("scalar")) + $root.flyteidl.core.Scalar.encode(message.scalar, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.collection != null && message.hasOwnProperty("collection")) + $root.flyteidl.core.LiteralCollection.encode(message.collection, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.map != null && message.hasOwnProperty("map")) + $root.flyteidl.core.LiteralMap.encode(message.map, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.hash != null && message.hasOwnProperty("hash")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.hash); + if (message.metadata != null && message.hasOwnProperty("metadata")) + for (var keys = Object.keys(message.metadata), i = 0; i < keys.length; ++i) + writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.metadata[keys[i]]).ldelim(); return writer; }; /** - * Decodes a Binary message from the specified reader or buffer. + * Decodes a Literal message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Binary + * @memberof flyteidl.core.Literal * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Binary} Binary + * @returns {flyteidl.core.Literal} Literal * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Binary.decode = function decode(reader, length) { + Literal.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.Binary(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Literal(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.bytes(); + message.scalar = $root.flyteidl.core.Scalar.decode(reader, reader.uint32()); break; case 2: - message.tag = reader.string(); + message.collection = $root.flyteidl.core.LiteralCollection.decode(reader, reader.uint32()); + break; + case 3: + message.map = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 4: + message.hash = reader.string(); + break; + case 5: + reader.skip().pos++; + if (message.metadata === $util.emptyObject) + message.metadata = {}; + key = reader.string(); + reader.pos++; + message.metadata[key] = reader.string(); break; default: reader.skipType(tag & 7); @@ -7452,47 +7952,81 @@ }; /** - * Verifies a Binary message. + * Verifies a Literal message. * @function verify - * @memberof flyteidl.core.Binary + * @memberof flyteidl.core.Literal * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Binary.verify = function verify(message) { + Literal.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) - return "value: buffer expected"; - if (message.tag != null && message.hasOwnProperty("tag")) - if (!$util.isString(message.tag)) - return "tag: string expected"; + var properties = {}; + if (message.scalar != null && message.hasOwnProperty("scalar")) { + properties.value = 1; + { + var error = $root.flyteidl.core.Scalar.verify(message.scalar); + if (error) + return "scalar." + error; + } + } + if (message.collection != null && message.hasOwnProperty("collection")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.LiteralCollection.verify(message.collection); + if (error) + return "collection." + error; + } + } + if (message.map != null && message.hasOwnProperty("map")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.LiteralMap.verify(message.map); + if (error) + return "map." + error; + } + } + if (message.hash != null && message.hasOwnProperty("hash")) + if (!$util.isString(message.hash)) + return "hash: string expected"; + if (message.metadata != null && message.hasOwnProperty("metadata")) { + if (!$util.isObject(message.metadata)) + return "metadata: object expected"; + var key = Object.keys(message.metadata); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.metadata[key[i]])) + return "metadata: string{k:string} expected"; + } return null; }; - return Binary; + return Literal; })(); - core.Schema = (function() { + core.LiteralCollection = (function() { /** - * Properties of a Schema. + * Properties of a LiteralCollection. * @memberof flyteidl.core - * @interface ISchema - * @property {string|null} [uri] Schema uri - * @property {flyteidl.core.ISchemaType|null} [type] Schema type + * @interface ILiteralCollection + * @property {Array.|null} [literals] LiteralCollection literals */ /** - * Constructs a new Schema. + * Constructs a new LiteralCollection. * @memberof flyteidl.core - * @classdesc Represents a Schema. - * @implements ISchema + * @classdesc Represents a LiteralCollection. + * @implements ILiteralCollection * @constructor - * @param {flyteidl.core.ISchema=} [properties] Properties to set + * @param {flyteidl.core.ILiteralCollection=} [properties] Properties to set */ - function Schema(properties) { + function LiteralCollection(properties) { + this.literals = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7500,75 +8034,65 @@ } /** - * Schema uri. - * @member {string} uri - * @memberof flyteidl.core.Schema - * @instance - */ - Schema.prototype.uri = ""; - - /** - * Schema type. - * @member {flyteidl.core.ISchemaType|null|undefined} type - * @memberof flyteidl.core.Schema + * LiteralCollection literals. + * @member {Array.} literals + * @memberof flyteidl.core.LiteralCollection * @instance */ - Schema.prototype.type = null; + LiteralCollection.prototype.literals = $util.emptyArray; /** - * Creates a new Schema instance using the specified properties. + * Creates a new LiteralCollection instance using the specified properties. * @function create - * @memberof flyteidl.core.Schema + * @memberof flyteidl.core.LiteralCollection * @static - * @param {flyteidl.core.ISchema=} [properties] Properties to set - * @returns {flyteidl.core.Schema} Schema instance + * @param {flyteidl.core.ILiteralCollection=} [properties] Properties to set + * @returns {flyteidl.core.LiteralCollection} LiteralCollection instance */ - Schema.create = function create(properties) { - return new Schema(properties); + LiteralCollection.create = function create(properties) { + return new LiteralCollection(properties); }; /** - * Encodes the specified Schema message. Does not implicitly {@link flyteidl.core.Schema.verify|verify} messages. + * Encodes the specified LiteralCollection message. Does not implicitly {@link flyteidl.core.LiteralCollection.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Schema + * @memberof flyteidl.core.LiteralCollection * @static - * @param {flyteidl.core.ISchema} message Schema message or plain object to encode + * @param {flyteidl.core.ILiteralCollection} message LiteralCollection message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Schema.encode = function encode(message, writer) { + LiteralCollection.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.uri != null && message.hasOwnProperty("uri")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.uri); - if (message.type != null && message.hasOwnProperty("type")) - $root.flyteidl.core.SchemaType.encode(message.type, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.literals != null && message.literals.length) + for (var i = 0; i < message.literals.length; ++i) + $root.flyteidl.core.Literal.encode(message.literals[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a Schema message from the specified reader or buffer. + * Decodes a LiteralCollection message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Schema + * @memberof flyteidl.core.LiteralCollection * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Schema} Schema + * @returns {flyteidl.core.LiteralCollection} LiteralCollection * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Schema.decode = function decode(reader, length) { + LiteralCollection.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.Schema(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.LiteralCollection(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.uri = reader.string(); - break; - case 3: - message.type = $root.flyteidl.core.SchemaType.decode(reader, reader.uint32()); + if (!(message.literals && message.literals.length)) + message.literals = []; + message.literals.push($root.flyteidl.core.Literal.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -7579,49 +8103,50 @@ }; /** - * Verifies a Schema message. + * Verifies a LiteralCollection message. * @function verify - * @memberof flyteidl.core.Schema + * @memberof flyteidl.core.LiteralCollection * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Schema.verify = function verify(message) { + LiteralCollection.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.uri != null && message.hasOwnProperty("uri")) - if (!$util.isString(message.uri)) - return "uri: string expected"; - if (message.type != null && message.hasOwnProperty("type")) { - var error = $root.flyteidl.core.SchemaType.verify(message.type); - if (error) - return "type." + error; + if (message.literals != null && message.hasOwnProperty("literals")) { + if (!Array.isArray(message.literals)) + return "literals: array expected"; + for (var i = 0; i < message.literals.length; ++i) { + var error = $root.flyteidl.core.Literal.verify(message.literals[i]); + if (error) + return "literals." + error; + } } return null; }; - return Schema; + return LiteralCollection; })(); - core.Union = (function() { + core.LiteralMap = (function() { /** - * Properties of an Union. + * Properties of a LiteralMap. * @memberof flyteidl.core - * @interface IUnion - * @property {flyteidl.core.ILiteral|null} [value] Union value - * @property {flyteidl.core.ILiteralType|null} [type] Union type + * @interface ILiteralMap + * @property {Object.|null} [literals] LiteralMap literals */ /** - * Constructs a new Union. + * Constructs a new LiteralMap. * @memberof flyteidl.core - * @classdesc Represents an Union. - * @implements IUnion + * @classdesc Represents a LiteralMap. + * @implements ILiteralMap * @constructor - * @param {flyteidl.core.IUnion=} [properties] Properties to set + * @param {flyteidl.core.ILiteralMap=} [properties] Properties to set */ - function Union(properties) { + function LiteralMap(properties) { + this.literals = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7629,75 +8154,70 @@ } /** - * Union value. - * @member {flyteidl.core.ILiteral|null|undefined} value - * @memberof flyteidl.core.Union - * @instance - */ - Union.prototype.value = null; - - /** - * Union type. - * @member {flyteidl.core.ILiteralType|null|undefined} type - * @memberof flyteidl.core.Union + * LiteralMap literals. + * @member {Object.} literals + * @memberof flyteidl.core.LiteralMap * @instance */ - Union.prototype.type = null; + LiteralMap.prototype.literals = $util.emptyObject; /** - * Creates a new Union instance using the specified properties. + * Creates a new LiteralMap instance using the specified properties. * @function create - * @memberof flyteidl.core.Union + * @memberof flyteidl.core.LiteralMap * @static - * @param {flyteidl.core.IUnion=} [properties] Properties to set - * @returns {flyteidl.core.Union} Union instance + * @param {flyteidl.core.ILiteralMap=} [properties] Properties to set + * @returns {flyteidl.core.LiteralMap} LiteralMap instance */ - Union.create = function create(properties) { - return new Union(properties); + LiteralMap.create = function create(properties) { + return new LiteralMap(properties); }; /** - * Encodes the specified Union message. Does not implicitly {@link flyteidl.core.Union.verify|verify} messages. + * Encodes the specified LiteralMap message. Does not implicitly {@link flyteidl.core.LiteralMap.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Union + * @memberof flyteidl.core.LiteralMap * @static - * @param {flyteidl.core.IUnion} message Union message or plain object to encode + * @param {flyteidl.core.ILiteralMap} message LiteralMap message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Union.encode = function encode(message, writer) { + LiteralMap.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) - $root.flyteidl.core.Literal.encode(message.value, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.type != null && message.hasOwnProperty("type")) - $root.flyteidl.core.LiteralType.encode(message.type, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.literals != null && message.hasOwnProperty("literals")) + for (var keys = Object.keys(message.literals), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.flyteidl.core.Literal.encode(message.literals[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } return writer; }; /** - * Decodes an Union message from the specified reader or buffer. + * Decodes a LiteralMap message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Union + * @memberof flyteidl.core.LiteralMap * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Union} Union + * @returns {flyteidl.core.LiteralMap} LiteralMap * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Union.decode = function decode(reader, length) { + LiteralMap.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.Union(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.LiteralMap(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = $root.flyteidl.core.Literal.decode(reader, reader.uint32()); - break; - case 2: - message.type = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + reader.skip().pos++; + if (message.literals === $util.emptyObject) + message.literals = {}; + key = reader.string(); + reader.pos++; + message.literals[key] = $root.flyteidl.core.Literal.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -7708,50 +8228,51 @@ }; /** - * Verifies an Union message. + * Verifies a LiteralMap message. * @function verify - * @memberof flyteidl.core.Union + * @memberof flyteidl.core.LiteralMap * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Union.verify = function verify(message) { + LiteralMap.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) { - var error = $root.flyteidl.core.Literal.verify(message.value); - if (error) - return "value." + error; - } - if (message.type != null && message.hasOwnProperty("type")) { - var error = $root.flyteidl.core.LiteralType.verify(message.type); - if (error) - return "type." + error; + if (message.literals != null && message.hasOwnProperty("literals")) { + if (!$util.isObject(message.literals)) + return "literals: object expected"; + var key = Object.keys(message.literals); + for (var i = 0; i < key.length; ++i) { + var error = $root.flyteidl.core.Literal.verify(message.literals[key[i]]); + if (error) + return "literals." + error; + } } return null; }; - return Union; + return LiteralMap; })(); - core.StructuredDatasetMetadata = (function() { + core.BindingDataCollection = (function() { /** - * Properties of a StructuredDatasetMetadata. + * Properties of a BindingDataCollection. * @memberof flyteidl.core - * @interface IStructuredDatasetMetadata - * @property {flyteidl.core.IStructuredDatasetType|null} [structuredDatasetType] StructuredDatasetMetadata structuredDatasetType + * @interface IBindingDataCollection + * @property {Array.|null} [bindings] BindingDataCollection bindings */ /** - * Constructs a new StructuredDatasetMetadata. + * Constructs a new BindingDataCollection. * @memberof flyteidl.core - * @classdesc Represents a StructuredDatasetMetadata. - * @implements IStructuredDatasetMetadata + * @classdesc Represents a BindingDataCollection. + * @implements IBindingDataCollection * @constructor - * @param {flyteidl.core.IStructuredDatasetMetadata=} [properties] Properties to set + * @param {flyteidl.core.IBindingDataCollection=} [properties] Properties to set */ - function StructuredDatasetMetadata(properties) { + function BindingDataCollection(properties) { + this.bindings = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7759,62 +8280,65 @@ } /** - * StructuredDatasetMetadata structuredDatasetType. - * @member {flyteidl.core.IStructuredDatasetType|null|undefined} structuredDatasetType - * @memberof flyteidl.core.StructuredDatasetMetadata + * BindingDataCollection bindings. + * @member {Array.} bindings + * @memberof flyteidl.core.BindingDataCollection * @instance */ - StructuredDatasetMetadata.prototype.structuredDatasetType = null; + BindingDataCollection.prototype.bindings = $util.emptyArray; /** - * Creates a new StructuredDatasetMetadata instance using the specified properties. + * Creates a new BindingDataCollection instance using the specified properties. * @function create - * @memberof flyteidl.core.StructuredDatasetMetadata + * @memberof flyteidl.core.BindingDataCollection * @static - * @param {flyteidl.core.IStructuredDatasetMetadata=} [properties] Properties to set - * @returns {flyteidl.core.StructuredDatasetMetadata} StructuredDatasetMetadata instance + * @param {flyteidl.core.IBindingDataCollection=} [properties] Properties to set + * @returns {flyteidl.core.BindingDataCollection} BindingDataCollection instance */ - StructuredDatasetMetadata.create = function create(properties) { - return new StructuredDatasetMetadata(properties); + BindingDataCollection.create = function create(properties) { + return new BindingDataCollection(properties); }; /** - * Encodes the specified StructuredDatasetMetadata message. Does not implicitly {@link flyteidl.core.StructuredDatasetMetadata.verify|verify} messages. + * Encodes the specified BindingDataCollection message. Does not implicitly {@link flyteidl.core.BindingDataCollection.verify|verify} messages. * @function encode - * @memberof flyteidl.core.StructuredDatasetMetadata + * @memberof flyteidl.core.BindingDataCollection * @static - * @param {flyteidl.core.IStructuredDatasetMetadata} message StructuredDatasetMetadata message or plain object to encode + * @param {flyteidl.core.IBindingDataCollection} message BindingDataCollection message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - StructuredDatasetMetadata.encode = function encode(message, writer) { + BindingDataCollection.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.structuredDatasetType != null && message.hasOwnProperty("structuredDatasetType")) - $root.flyteidl.core.StructuredDatasetType.encode(message.structuredDatasetType, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.bindings != null && message.bindings.length) + for (var i = 0; i < message.bindings.length; ++i) + $root.flyteidl.core.BindingData.encode(message.bindings[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a StructuredDatasetMetadata message from the specified reader or buffer. + * Decodes a BindingDataCollection message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.StructuredDatasetMetadata + * @memberof flyteidl.core.BindingDataCollection * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.StructuredDatasetMetadata} StructuredDatasetMetadata + * @returns {flyteidl.core.BindingDataCollection} BindingDataCollection * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - StructuredDatasetMetadata.decode = function decode(reader, length) { + BindingDataCollection.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.StructuredDatasetMetadata(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.BindingDataCollection(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.structuredDatasetType = $root.flyteidl.core.StructuredDatasetType.decode(reader, reader.uint32()); + if (!(message.bindings && message.bindings.length)) + message.bindings = []; + message.bindings.push($root.flyteidl.core.BindingData.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -7825,46 +8349,50 @@ }; /** - * Verifies a StructuredDatasetMetadata message. + * Verifies a BindingDataCollection message. * @function verify - * @memberof flyteidl.core.StructuredDatasetMetadata + * @memberof flyteidl.core.BindingDataCollection * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - StructuredDatasetMetadata.verify = function verify(message) { + BindingDataCollection.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.structuredDatasetType != null && message.hasOwnProperty("structuredDatasetType")) { - var error = $root.flyteidl.core.StructuredDatasetType.verify(message.structuredDatasetType); - if (error) - return "structuredDatasetType." + error; + if (message.bindings != null && message.hasOwnProperty("bindings")) { + if (!Array.isArray(message.bindings)) + return "bindings: array expected"; + for (var i = 0; i < message.bindings.length; ++i) { + var error = $root.flyteidl.core.BindingData.verify(message.bindings[i]); + if (error) + return "bindings." + error; + } } return null; }; - return StructuredDatasetMetadata; + return BindingDataCollection; })(); - core.StructuredDataset = (function() { + core.BindingDataMap = (function() { /** - * Properties of a StructuredDataset. + * Properties of a BindingDataMap. * @memberof flyteidl.core - * @interface IStructuredDataset - * @property {string|null} [uri] StructuredDataset uri - * @property {flyteidl.core.IStructuredDatasetMetadata|null} [metadata] StructuredDataset metadata + * @interface IBindingDataMap + * @property {Object.|null} [bindings] BindingDataMap bindings */ /** - * Constructs a new StructuredDataset. + * Constructs a new BindingDataMap. * @memberof flyteidl.core - * @classdesc Represents a StructuredDataset. - * @implements IStructuredDataset + * @classdesc Represents a BindingDataMap. + * @implements IBindingDataMap * @constructor - * @param {flyteidl.core.IStructuredDataset=} [properties] Properties to set + * @param {flyteidl.core.IBindingDataMap=} [properties] Properties to set */ - function StructuredDataset(properties) { + function BindingDataMap(properties) { + this.bindings = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7872,75 +8400,70 @@ } /** - * StructuredDataset uri. - * @member {string} uri - * @memberof flyteidl.core.StructuredDataset - * @instance - */ - StructuredDataset.prototype.uri = ""; - - /** - * StructuredDataset metadata. - * @member {flyteidl.core.IStructuredDatasetMetadata|null|undefined} metadata - * @memberof flyteidl.core.StructuredDataset + * BindingDataMap bindings. + * @member {Object.} bindings + * @memberof flyteidl.core.BindingDataMap * @instance */ - StructuredDataset.prototype.metadata = null; + BindingDataMap.prototype.bindings = $util.emptyObject; /** - * Creates a new StructuredDataset instance using the specified properties. + * Creates a new BindingDataMap instance using the specified properties. * @function create - * @memberof flyteidl.core.StructuredDataset + * @memberof flyteidl.core.BindingDataMap * @static - * @param {flyteidl.core.IStructuredDataset=} [properties] Properties to set - * @returns {flyteidl.core.StructuredDataset} StructuredDataset instance + * @param {flyteidl.core.IBindingDataMap=} [properties] Properties to set + * @returns {flyteidl.core.BindingDataMap} BindingDataMap instance */ - StructuredDataset.create = function create(properties) { - return new StructuredDataset(properties); + BindingDataMap.create = function create(properties) { + return new BindingDataMap(properties); }; /** - * Encodes the specified StructuredDataset message. Does not implicitly {@link flyteidl.core.StructuredDataset.verify|verify} messages. + * Encodes the specified BindingDataMap message. Does not implicitly {@link flyteidl.core.BindingDataMap.verify|verify} messages. * @function encode - * @memberof flyteidl.core.StructuredDataset + * @memberof flyteidl.core.BindingDataMap * @static - * @param {flyteidl.core.IStructuredDataset} message StructuredDataset message or plain object to encode + * @param {flyteidl.core.IBindingDataMap} message BindingDataMap message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - StructuredDataset.encode = function encode(message, writer) { + BindingDataMap.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.uri != null && message.hasOwnProperty("uri")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.uri); - if (message.metadata != null && message.hasOwnProperty("metadata")) - $root.flyteidl.core.StructuredDatasetMetadata.encode(message.metadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.bindings != null && message.hasOwnProperty("bindings")) + for (var keys = Object.keys(message.bindings), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.flyteidl.core.BindingData.encode(message.bindings[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } return writer; }; /** - * Decodes a StructuredDataset message from the specified reader or buffer. + * Decodes a BindingDataMap message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.StructuredDataset + * @memberof flyteidl.core.BindingDataMap * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.StructuredDataset} StructuredDataset + * @returns {flyteidl.core.BindingDataMap} BindingDataMap * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - StructuredDataset.decode = function decode(reader, length) { + BindingDataMap.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.StructuredDataset(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.BindingDataMap(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.uri = reader.string(); - break; - case 2: - message.metadata = $root.flyteidl.core.StructuredDatasetMetadata.decode(reader, reader.uint32()); + reader.skip().pos++; + if (message.bindings === $util.emptyObject) + message.bindings = {}; + key = reader.string(); + reader.pos++; + message.bindings[key] = $root.flyteidl.core.BindingData.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -7951,56 +8474,50 @@ }; /** - * Verifies a StructuredDataset message. + * Verifies a BindingDataMap message. * @function verify - * @memberof flyteidl.core.StructuredDataset + * @memberof flyteidl.core.BindingDataMap * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - StructuredDataset.verify = function verify(message) { + BindingDataMap.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.uri != null && message.hasOwnProperty("uri")) - if (!$util.isString(message.uri)) - return "uri: string expected"; - if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.flyteidl.core.StructuredDatasetMetadata.verify(message.metadata); - if (error) - return "metadata." + error; + if (message.bindings != null && message.hasOwnProperty("bindings")) { + if (!$util.isObject(message.bindings)) + return "bindings: object expected"; + var key = Object.keys(message.bindings); + for (var i = 0; i < key.length; ++i) { + var error = $root.flyteidl.core.BindingData.verify(message.bindings[key[i]]); + if (error) + return "bindings." + error; + } } return null; }; - return StructuredDataset; + return BindingDataMap; })(); - core.Scalar = (function() { + core.UnionInfo = (function() { /** - * Properties of a Scalar. + * Properties of an UnionInfo. * @memberof flyteidl.core - * @interface IScalar - * @property {flyteidl.core.IPrimitive|null} [primitive] Scalar primitive - * @property {flyteidl.core.IBlob|null} [blob] Scalar blob - * @property {flyteidl.core.IBinary|null} [binary] Scalar binary - * @property {flyteidl.core.ISchema|null} [schema] Scalar schema - * @property {flyteidl.core.IVoid|null} [noneType] Scalar noneType - * @property {flyteidl.core.IError|null} [error] Scalar error - * @property {google.protobuf.IStruct|null} [generic] Scalar generic - * @property {flyteidl.core.IStructuredDataset|null} [structuredDataset] Scalar structuredDataset - * @property {flyteidl.core.IUnion|null} [union] Scalar union + * @interface IUnionInfo + * @property {flyteidl.core.ILiteralType|null} [targetType] UnionInfo targetType */ /** - * Constructs a new Scalar. + * Constructs a new UnionInfo. * @memberof flyteidl.core - * @classdesc Represents a Scalar. - * @implements IScalar + * @classdesc Represents an UnionInfo. + * @implements IUnionInfo * @constructor - * @param {flyteidl.core.IScalar=} [properties] Properties to set + * @param {flyteidl.core.IUnionInfo=} [properties] Properties to set */ - function Scalar(properties) { + function UnionInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8008,180 +8525,62 @@ } /** - * Scalar primitive. - * @member {flyteidl.core.IPrimitive|null|undefined} primitive - * @memberof flyteidl.core.Scalar - * @instance - */ - Scalar.prototype.primitive = null; - - /** - * Scalar blob. - * @member {flyteidl.core.IBlob|null|undefined} blob - * @memberof flyteidl.core.Scalar - * @instance - */ - Scalar.prototype.blob = null; - - /** - * Scalar binary. - * @member {flyteidl.core.IBinary|null|undefined} binary - * @memberof flyteidl.core.Scalar - * @instance - */ - Scalar.prototype.binary = null; - - /** - * Scalar schema. - * @member {flyteidl.core.ISchema|null|undefined} schema - * @memberof flyteidl.core.Scalar - * @instance - */ - Scalar.prototype.schema = null; - - /** - * Scalar noneType. - * @member {flyteidl.core.IVoid|null|undefined} noneType - * @memberof flyteidl.core.Scalar - * @instance - */ - Scalar.prototype.noneType = null; - - /** - * Scalar error. - * @member {flyteidl.core.IError|null|undefined} error - * @memberof flyteidl.core.Scalar - * @instance - */ - Scalar.prototype.error = null; - - /** - * Scalar generic. - * @member {google.protobuf.IStruct|null|undefined} generic - * @memberof flyteidl.core.Scalar - * @instance - */ - Scalar.prototype.generic = null; - - /** - * Scalar structuredDataset. - * @member {flyteidl.core.IStructuredDataset|null|undefined} structuredDataset - * @memberof flyteidl.core.Scalar - * @instance - */ - Scalar.prototype.structuredDataset = null; - - /** - * Scalar union. - * @member {flyteidl.core.IUnion|null|undefined} union - * @memberof flyteidl.core.Scalar - * @instance - */ - Scalar.prototype.union = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * Scalar value. - * @member {"primitive"|"blob"|"binary"|"schema"|"noneType"|"error"|"generic"|"structuredDataset"|"union"|undefined} value - * @memberof flyteidl.core.Scalar + * UnionInfo targetType. + * @member {flyteidl.core.ILiteralType|null|undefined} targetType + * @memberof flyteidl.core.UnionInfo * @instance */ - Object.defineProperty(Scalar.prototype, "value", { - get: $util.oneOfGetter($oneOfFields = ["primitive", "blob", "binary", "schema", "noneType", "error", "generic", "structuredDataset", "union"]), - set: $util.oneOfSetter($oneOfFields) - }); + UnionInfo.prototype.targetType = null; /** - * Creates a new Scalar instance using the specified properties. + * Creates a new UnionInfo instance using the specified properties. * @function create - * @memberof flyteidl.core.Scalar + * @memberof flyteidl.core.UnionInfo * @static - * @param {flyteidl.core.IScalar=} [properties] Properties to set - * @returns {flyteidl.core.Scalar} Scalar instance + * @param {flyteidl.core.IUnionInfo=} [properties] Properties to set + * @returns {flyteidl.core.UnionInfo} UnionInfo instance */ - Scalar.create = function create(properties) { - return new Scalar(properties); + UnionInfo.create = function create(properties) { + return new UnionInfo(properties); }; /** - * Encodes the specified Scalar message. Does not implicitly {@link flyteidl.core.Scalar.verify|verify} messages. + * Encodes the specified UnionInfo message. Does not implicitly {@link flyteidl.core.UnionInfo.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Scalar + * @memberof flyteidl.core.UnionInfo * @static - * @param {flyteidl.core.IScalar} message Scalar message or plain object to encode + * @param {flyteidl.core.IUnionInfo} message UnionInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Scalar.encode = function encode(message, writer) { + UnionInfo.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.primitive != null && message.hasOwnProperty("primitive")) - $root.flyteidl.core.Primitive.encode(message.primitive, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.blob != null && message.hasOwnProperty("blob")) - $root.flyteidl.core.Blob.encode(message.blob, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.binary != null && message.hasOwnProperty("binary")) - $root.flyteidl.core.Binary.encode(message.binary, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.schema != null && message.hasOwnProperty("schema")) - $root.flyteidl.core.Schema.encode(message.schema, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.noneType != null && message.hasOwnProperty("noneType")) - $root.flyteidl.core.Void.encode(message.noneType, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.error != null && message.hasOwnProperty("error")) - $root.flyteidl.core.Error.encode(message.error, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.generic != null && message.hasOwnProperty("generic")) - $root.google.protobuf.Struct.encode(message.generic, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.structuredDataset != null && message.hasOwnProperty("structuredDataset")) - $root.flyteidl.core.StructuredDataset.encode(message.structuredDataset, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.union != null && message.hasOwnProperty("union")) - $root.flyteidl.core.Union.encode(message.union, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.targetType != null && message.hasOwnProperty("targetType")) + $root.flyteidl.core.LiteralType.encode(message.targetType, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a Scalar message from the specified reader or buffer. + * Decodes an UnionInfo message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Scalar + * @memberof flyteidl.core.UnionInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Scalar} Scalar + * @returns {flyteidl.core.UnionInfo} UnionInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Scalar.decode = function decode(reader, length) { + UnionInfo.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.Scalar(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.UnionInfo(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.primitive = $root.flyteidl.core.Primitive.decode(reader, reader.uint32()); - break; - case 2: - message.blob = $root.flyteidl.core.Blob.decode(reader, reader.uint32()); - break; - case 3: - message.binary = $root.flyteidl.core.Binary.decode(reader, reader.uint32()); - break; - case 4: - message.schema = $root.flyteidl.core.Schema.decode(reader, reader.uint32()); - break; - case 5: - message.noneType = $root.flyteidl.core.Void.decode(reader, reader.uint32()); - break; - case 6: - message.error = $root.flyteidl.core.Error.decode(reader, reader.uint32()); - break; - case 7: - message.generic = $root.google.protobuf.Struct.decode(reader, reader.uint32()); - break; - case 8: - message.structuredDataset = $root.flyteidl.core.StructuredDataset.decode(reader, reader.uint32()); - break; - case 9: - message.union = $root.flyteidl.core.Union.decode(reader, reader.uint32()); + message.targetType = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -8192,134 +8591,49 @@ }; /** - * Verifies a Scalar message. + * Verifies an UnionInfo message. * @function verify - * @memberof flyteidl.core.Scalar + * @memberof flyteidl.core.UnionInfo * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Scalar.verify = function verify(message) { + UnionInfo.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.primitive != null && message.hasOwnProperty("primitive")) { - properties.value = 1; - { - var error = $root.flyteidl.core.Primitive.verify(message.primitive); - if (error) - return "primitive." + error; - } - } - if (message.blob != null && message.hasOwnProperty("blob")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.flyteidl.core.Blob.verify(message.blob); - if (error) - return "blob." + error; - } - } - if (message.binary != null && message.hasOwnProperty("binary")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.flyteidl.core.Binary.verify(message.binary); - if (error) - return "binary." + error; - } - } - if (message.schema != null && message.hasOwnProperty("schema")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.flyteidl.core.Schema.verify(message.schema); - if (error) - return "schema." + error; - } - } - if (message.noneType != null && message.hasOwnProperty("noneType")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.flyteidl.core.Void.verify(message.noneType); - if (error) - return "noneType." + error; - } - } - if (message.error != null && message.hasOwnProperty("error")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.flyteidl.core.Error.verify(message.error); - if (error) - return "error." + error; - } - } - if (message.generic != null && message.hasOwnProperty("generic")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.google.protobuf.Struct.verify(message.generic); - if (error) - return "generic." + error; - } - } - if (message.structuredDataset != null && message.hasOwnProperty("structuredDataset")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.flyteidl.core.StructuredDataset.verify(message.structuredDataset); - if (error) - return "structuredDataset." + error; - } - } - if (message.union != null && message.hasOwnProperty("union")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.flyteidl.core.Union.verify(message.union); - if (error) - return "union." + error; - } + if (message.targetType != null && message.hasOwnProperty("targetType")) { + var error = $root.flyteidl.core.LiteralType.verify(message.targetType); + if (error) + return "targetType." + error; } return null; }; - return Scalar; + return UnionInfo; })(); - core.Literal = (function() { + core.BindingData = (function() { /** - * Properties of a Literal. + * Properties of a BindingData. * @memberof flyteidl.core - * @interface ILiteral - * @property {flyteidl.core.IScalar|null} [scalar] Literal scalar - * @property {flyteidl.core.ILiteralCollection|null} [collection] Literal collection - * @property {flyteidl.core.ILiteralMap|null} [map] Literal map - * @property {string|null} [hash] Literal hash - * @property {Object.|null} [metadata] Literal metadata + * @interface IBindingData + * @property {flyteidl.core.IScalar|null} [scalar] BindingData scalar + * @property {flyteidl.core.IBindingDataCollection|null} [collection] BindingData collection + * @property {flyteidl.core.IOutputReference|null} [promise] BindingData promise + * @property {flyteidl.core.IBindingDataMap|null} [map] BindingData map + * @property {flyteidl.core.IUnionInfo|null} [union] BindingData union */ /** - * Constructs a new Literal. + * Constructs a new BindingData. * @memberof flyteidl.core - * @classdesc Represents a Literal. - * @implements ILiteral + * @classdesc Represents a BindingData. + * @implements IBindingData * @constructor - * @param {flyteidl.core.ILiteral=} [properties] Properties to set + * @param {flyteidl.core.IBindingData=} [properties] Properties to set */ - function Literal(properties) { - this.metadata = {}; + function BindingData(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8327,112 +8641,111 @@ } /** - * Literal scalar. + * BindingData scalar. * @member {flyteidl.core.IScalar|null|undefined} scalar - * @memberof flyteidl.core.Literal + * @memberof flyteidl.core.BindingData * @instance */ - Literal.prototype.scalar = null; + BindingData.prototype.scalar = null; /** - * Literal collection. - * @member {flyteidl.core.ILiteralCollection|null|undefined} collection - * @memberof flyteidl.core.Literal + * BindingData collection. + * @member {flyteidl.core.IBindingDataCollection|null|undefined} collection + * @memberof flyteidl.core.BindingData * @instance */ - Literal.prototype.collection = null; + BindingData.prototype.collection = null; /** - * Literal map. - * @member {flyteidl.core.ILiteralMap|null|undefined} map - * @memberof flyteidl.core.Literal + * BindingData promise. + * @member {flyteidl.core.IOutputReference|null|undefined} promise + * @memberof flyteidl.core.BindingData * @instance */ - Literal.prototype.map = null; + BindingData.prototype.promise = null; /** - * Literal hash. - * @member {string} hash - * @memberof flyteidl.core.Literal + * BindingData map. + * @member {flyteidl.core.IBindingDataMap|null|undefined} map + * @memberof flyteidl.core.BindingData * @instance */ - Literal.prototype.hash = ""; + BindingData.prototype.map = null; /** - * Literal metadata. - * @member {Object.} metadata - * @memberof flyteidl.core.Literal + * BindingData union. + * @member {flyteidl.core.IUnionInfo|null|undefined} union + * @memberof flyteidl.core.BindingData * @instance */ - Literal.prototype.metadata = $util.emptyObject; + BindingData.prototype.union = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; /** - * Literal value. - * @member {"scalar"|"collection"|"map"|undefined} value - * @memberof flyteidl.core.Literal + * BindingData value. + * @member {"scalar"|"collection"|"promise"|"map"|undefined} value + * @memberof flyteidl.core.BindingData * @instance */ - Object.defineProperty(Literal.prototype, "value", { - get: $util.oneOfGetter($oneOfFields = ["scalar", "collection", "map"]), + Object.defineProperty(BindingData.prototype, "value", { + get: $util.oneOfGetter($oneOfFields = ["scalar", "collection", "promise", "map"]), set: $util.oneOfSetter($oneOfFields) }); /** - * Creates a new Literal instance using the specified properties. + * Creates a new BindingData instance using the specified properties. * @function create - * @memberof flyteidl.core.Literal + * @memberof flyteidl.core.BindingData * @static - * @param {flyteidl.core.ILiteral=} [properties] Properties to set - * @returns {flyteidl.core.Literal} Literal instance + * @param {flyteidl.core.IBindingData=} [properties] Properties to set + * @returns {flyteidl.core.BindingData} BindingData instance */ - Literal.create = function create(properties) { - return new Literal(properties); + BindingData.create = function create(properties) { + return new BindingData(properties); }; /** - * Encodes the specified Literal message. Does not implicitly {@link flyteidl.core.Literal.verify|verify} messages. + * Encodes the specified BindingData message. Does not implicitly {@link flyteidl.core.BindingData.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Literal + * @memberof flyteidl.core.BindingData * @static - * @param {flyteidl.core.ILiteral} message Literal message or plain object to encode + * @param {flyteidl.core.IBindingData} message BindingData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Literal.encode = function encode(message, writer) { + BindingData.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.scalar != null && message.hasOwnProperty("scalar")) $root.flyteidl.core.Scalar.encode(message.scalar, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.collection != null && message.hasOwnProperty("collection")) - $root.flyteidl.core.LiteralCollection.encode(message.collection, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.flyteidl.core.BindingDataCollection.encode(message.collection, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.promise != null && message.hasOwnProperty("promise")) + $root.flyteidl.core.OutputReference.encode(message.promise, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.map != null && message.hasOwnProperty("map")) - $root.flyteidl.core.LiteralMap.encode(message.map, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.hash != null && message.hasOwnProperty("hash")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.hash); - if (message.metadata != null && message.hasOwnProperty("metadata")) - for (var keys = Object.keys(message.metadata), i = 0; i < keys.length; ++i) - writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.metadata[keys[i]]).ldelim(); + $root.flyteidl.core.BindingDataMap.encode(message.map, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.union != null && message.hasOwnProperty("union")) + $root.flyteidl.core.UnionInfo.encode(message.union, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; /** - * Decodes a Literal message from the specified reader or buffer. + * Decodes a BindingData message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Literal + * @memberof flyteidl.core.BindingData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Literal} Literal + * @returns {flyteidl.core.BindingData} BindingData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Literal.decode = function decode(reader, length) { + BindingData.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.Literal(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.BindingData(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { @@ -8440,21 +8753,16 @@ message.scalar = $root.flyteidl.core.Scalar.decode(reader, reader.uint32()); break; case 2: - message.collection = $root.flyteidl.core.LiteralCollection.decode(reader, reader.uint32()); + message.collection = $root.flyteidl.core.BindingDataCollection.decode(reader, reader.uint32()); break; case 3: - message.map = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.promise = $root.flyteidl.core.OutputReference.decode(reader, reader.uint32()); break; case 4: - message.hash = reader.string(); + message.map = $root.flyteidl.core.BindingDataMap.decode(reader, reader.uint32()); break; case 5: - reader.skip().pos++; - if (message.metadata === $util.emptyObject) - message.metadata = {}; - key = reader.string(); - reader.pos++; - message.metadata[key] = reader.string(); + message.union = $root.flyteidl.core.UnionInfo.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -8465,14 +8773,14 @@ }; /** - * Verifies a Literal message. + * Verifies a BindingData message. * @function verify - * @memberof flyteidl.core.Literal + * @memberof flyteidl.core.BindingData * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Literal.verify = function verify(message) { + BindingData.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; @@ -8489,57 +8797,61 @@ return "value: multiple values"; properties.value = 1; { - var error = $root.flyteidl.core.LiteralCollection.verify(message.collection); + var error = $root.flyteidl.core.BindingDataCollection.verify(message.collection); if (error) return "collection." + error; } } + if (message.promise != null && message.hasOwnProperty("promise")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.OutputReference.verify(message.promise); + if (error) + return "promise." + error; + } + } if (message.map != null && message.hasOwnProperty("map")) { if (properties.value === 1) return "value: multiple values"; properties.value = 1; { - var error = $root.flyteidl.core.LiteralMap.verify(message.map); + var error = $root.flyteidl.core.BindingDataMap.verify(message.map); if (error) return "map." + error; } } - if (message.hash != null && message.hasOwnProperty("hash")) - if (!$util.isString(message.hash)) - return "hash: string expected"; - if (message.metadata != null && message.hasOwnProperty("metadata")) { - if (!$util.isObject(message.metadata)) - return "metadata: object expected"; - var key = Object.keys(message.metadata); - for (var i = 0; i < key.length; ++i) - if (!$util.isString(message.metadata[key[i]])) - return "metadata: string{k:string} expected"; + if (message.union != null && message.hasOwnProperty("union")) { + var error = $root.flyteidl.core.UnionInfo.verify(message.union); + if (error) + return "union." + error; } return null; }; - return Literal; + return BindingData; })(); - core.LiteralCollection = (function() { + core.Binding = (function() { /** - * Properties of a LiteralCollection. + * Properties of a Binding. * @memberof flyteidl.core - * @interface ILiteralCollection - * @property {Array.|null} [literals] LiteralCollection literals + * @interface IBinding + * @property {string|null} ["var"] Binding var + * @property {flyteidl.core.IBindingData|null} [binding] Binding binding */ /** - * Constructs a new LiteralCollection. + * Constructs a new Binding. * @memberof flyteidl.core - * @classdesc Represents a LiteralCollection. - * @implements ILiteralCollection + * @classdesc Represents a Binding. + * @implements IBinding * @constructor - * @param {flyteidl.core.ILiteralCollection=} [properties] Properties to set + * @param {flyteidl.core.IBinding=} [properties] Properties to set */ - function LiteralCollection(properties) { - this.literals = []; + function Binding(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8547,190 +8859,75 @@ } /** - * LiteralCollection literals. - * @member {Array.} literals - * @memberof flyteidl.core.LiteralCollection + * Binding var. + * @member {string} var + * @memberof flyteidl.core.Binding * @instance */ - LiteralCollection.prototype.literals = $util.emptyArray; - - /** - * Creates a new LiteralCollection instance using the specified properties. - * @function create - * @memberof flyteidl.core.LiteralCollection - * @static - * @param {flyteidl.core.ILiteralCollection=} [properties] Properties to set - * @returns {flyteidl.core.LiteralCollection} LiteralCollection instance - */ - LiteralCollection.create = function create(properties) { - return new LiteralCollection(properties); - }; - - /** - * Encodes the specified LiteralCollection message. Does not implicitly {@link flyteidl.core.LiteralCollection.verify|verify} messages. - * @function encode - * @memberof flyteidl.core.LiteralCollection - * @static - * @param {flyteidl.core.ILiteralCollection} message LiteralCollection message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LiteralCollection.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.literals != null && message.literals.length) - for (var i = 0; i < message.literals.length; ++i) - $root.flyteidl.core.Literal.encode(message.literals[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Decodes a LiteralCollection message from the specified reader or buffer. - * @function decode - * @memberof flyteidl.core.LiteralCollection - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.LiteralCollection} LiteralCollection - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LiteralCollection.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.LiteralCollection(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.literals && message.literals.length)) - message.literals = []; - message.literals.push($root.flyteidl.core.Literal.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Verifies a LiteralCollection message. - * @function verify - * @memberof flyteidl.core.LiteralCollection - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - LiteralCollection.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.literals != null && message.hasOwnProperty("literals")) { - if (!Array.isArray(message.literals)) - return "literals: array expected"; - for (var i = 0; i < message.literals.length; ++i) { - var error = $root.flyteidl.core.Literal.verify(message.literals[i]); - if (error) - return "literals." + error; - } - } - return null; - }; - - return LiteralCollection; - })(); - - core.LiteralMap = (function() { - - /** - * Properties of a LiteralMap. - * @memberof flyteidl.core - * @interface ILiteralMap - * @property {Object.|null} [literals] LiteralMap literals - */ - - /** - * Constructs a new LiteralMap. - * @memberof flyteidl.core - * @classdesc Represents a LiteralMap. - * @implements ILiteralMap - * @constructor - * @param {flyteidl.core.ILiteralMap=} [properties] Properties to set - */ - function LiteralMap(properties) { - this.literals = {}; - 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]]; - } + Binding.prototype["var"] = ""; /** - * LiteralMap literals. - * @member {Object.} literals - * @memberof flyteidl.core.LiteralMap + * Binding binding. + * @member {flyteidl.core.IBindingData|null|undefined} binding + * @memberof flyteidl.core.Binding * @instance */ - LiteralMap.prototype.literals = $util.emptyObject; + Binding.prototype.binding = null; /** - * Creates a new LiteralMap instance using the specified properties. + * Creates a new Binding instance using the specified properties. * @function create - * @memberof flyteidl.core.LiteralMap + * @memberof flyteidl.core.Binding * @static - * @param {flyteidl.core.ILiteralMap=} [properties] Properties to set - * @returns {flyteidl.core.LiteralMap} LiteralMap instance + * @param {flyteidl.core.IBinding=} [properties] Properties to set + * @returns {flyteidl.core.Binding} Binding instance */ - LiteralMap.create = function create(properties) { - return new LiteralMap(properties); + Binding.create = function create(properties) { + return new Binding(properties); }; /** - * Encodes the specified LiteralMap message. Does not implicitly {@link flyteidl.core.LiteralMap.verify|verify} messages. + * Encodes the specified Binding message. Does not implicitly {@link flyteidl.core.Binding.verify|verify} messages. * @function encode - * @memberof flyteidl.core.LiteralMap + * @memberof flyteidl.core.Binding * @static - * @param {flyteidl.core.ILiteralMap} message LiteralMap message or plain object to encode + * @param {flyteidl.core.IBinding} message Binding message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LiteralMap.encode = function encode(message, writer) { + Binding.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.literals != null && message.hasOwnProperty("literals")) - for (var keys = Object.keys(message.literals), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.flyteidl.core.Literal.encode(message.literals[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } + if (message["var"] != null && message.hasOwnProperty("var")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message["var"]); + if (message.binding != null && message.hasOwnProperty("binding")) + $root.flyteidl.core.BindingData.encode(message.binding, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a LiteralMap message from the specified reader or buffer. + * Decodes a Binding message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.LiteralMap + * @memberof flyteidl.core.Binding * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.LiteralMap} LiteralMap + * @returns {flyteidl.core.Binding} Binding * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LiteralMap.decode = function decode(reader, length) { + Binding.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.LiteralMap(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Binding(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - reader.skip().pos++; - if (message.literals === $util.emptyObject) - message.literals = {}; - key = reader.string(); - reader.pos++; - message.literals[key] = $root.flyteidl.core.Literal.decode(reader, reader.uint32()); + message["var"] = reader.string(); + break; + case 2: + message.binding = $root.flyteidl.core.BindingData.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -8741,51 +8938,49 @@ }; /** - * Verifies a LiteralMap message. + * Verifies a Binding message. * @function verify - * @memberof flyteidl.core.LiteralMap + * @memberof flyteidl.core.Binding * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LiteralMap.verify = function verify(message) { + Binding.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.literals != null && message.hasOwnProperty("literals")) { - if (!$util.isObject(message.literals)) - return "literals: object expected"; - var key = Object.keys(message.literals); - for (var i = 0; i < key.length; ++i) { - var error = $root.flyteidl.core.Literal.verify(message.literals[key[i]]); - if (error) - return "literals." + error; - } + if (message["var"] != null && message.hasOwnProperty("var")) + if (!$util.isString(message["var"])) + return "var: string expected"; + if (message.binding != null && message.hasOwnProperty("binding")) { + var error = $root.flyteidl.core.BindingData.verify(message.binding); + if (error) + return "binding." + error; } return null; }; - return LiteralMap; + return Binding; })(); - core.BindingDataCollection = (function() { + core.KeyValuePair = (function() { /** - * Properties of a BindingDataCollection. + * Properties of a KeyValuePair. * @memberof flyteidl.core - * @interface IBindingDataCollection - * @property {Array.|null} [bindings] BindingDataCollection bindings + * @interface IKeyValuePair + * @property {string|null} [key] KeyValuePair key + * @property {string|null} [value] KeyValuePair value */ /** - * Constructs a new BindingDataCollection. + * Constructs a new KeyValuePair. * @memberof flyteidl.core - * @classdesc Represents a BindingDataCollection. - * @implements IBindingDataCollection + * @classdesc Represents a KeyValuePair. + * @implements IKeyValuePair * @constructor - * @param {flyteidl.core.IBindingDataCollection=} [properties] Properties to set + * @param {flyteidl.core.IKeyValuePair=} [properties] Properties to set */ - function BindingDataCollection(properties) { - this.bindings = []; + function KeyValuePair(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8793,65 +8988,75 @@ } /** - * BindingDataCollection bindings. - * @member {Array.} bindings - * @memberof flyteidl.core.BindingDataCollection + * KeyValuePair key. + * @member {string} key + * @memberof flyteidl.core.KeyValuePair * @instance */ - BindingDataCollection.prototype.bindings = $util.emptyArray; + KeyValuePair.prototype.key = ""; /** - * Creates a new BindingDataCollection instance using the specified properties. + * KeyValuePair value. + * @member {string} value + * @memberof flyteidl.core.KeyValuePair + * @instance + */ + KeyValuePair.prototype.value = ""; + + /** + * Creates a new KeyValuePair instance using the specified properties. * @function create - * @memberof flyteidl.core.BindingDataCollection + * @memberof flyteidl.core.KeyValuePair * @static - * @param {flyteidl.core.IBindingDataCollection=} [properties] Properties to set - * @returns {flyteidl.core.BindingDataCollection} BindingDataCollection instance + * @param {flyteidl.core.IKeyValuePair=} [properties] Properties to set + * @returns {flyteidl.core.KeyValuePair} KeyValuePair instance */ - BindingDataCollection.create = function create(properties) { - return new BindingDataCollection(properties); + KeyValuePair.create = function create(properties) { + return new KeyValuePair(properties); }; /** - * Encodes the specified BindingDataCollection message. Does not implicitly {@link flyteidl.core.BindingDataCollection.verify|verify} messages. + * Encodes the specified KeyValuePair message. Does not implicitly {@link flyteidl.core.KeyValuePair.verify|verify} messages. * @function encode - * @memberof flyteidl.core.BindingDataCollection + * @memberof flyteidl.core.KeyValuePair * @static - * @param {flyteidl.core.IBindingDataCollection} message BindingDataCollection message or plain object to encode + * @param {flyteidl.core.IKeyValuePair} message KeyValuePair message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BindingDataCollection.encode = function encode(message, writer) { + KeyValuePair.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.bindings != null && message.bindings.length) - for (var i = 0; i < message.bindings.length; ++i) - $root.flyteidl.core.BindingData.encode(message.bindings[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.key != null && message.hasOwnProperty("key")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.key); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.value); return writer; }; /** - * Decodes a BindingDataCollection message from the specified reader or buffer. + * Decodes a KeyValuePair message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.BindingDataCollection + * @memberof flyteidl.core.KeyValuePair * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.BindingDataCollection} BindingDataCollection + * @returns {flyteidl.core.KeyValuePair} KeyValuePair * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BindingDataCollection.decode = function decode(reader, length) { + KeyValuePair.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.BindingDataCollection(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.KeyValuePair(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.bindings && message.bindings.length)) - message.bindings = []; - message.bindings.push($root.flyteidl.core.BindingData.decode(reader, reader.uint32())); + message.key = reader.string(); + break; + case 2: + message.value = reader.string(); break; default: reader.skipType(tag & 7); @@ -8862,50 +9067,46 @@ }; /** - * Verifies a BindingDataCollection message. + * Verifies a KeyValuePair message. * @function verify - * @memberof flyteidl.core.BindingDataCollection + * @memberof flyteidl.core.KeyValuePair * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BindingDataCollection.verify = function verify(message) { + KeyValuePair.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.bindings != null && message.hasOwnProperty("bindings")) { - if (!Array.isArray(message.bindings)) - return "bindings: array expected"; - for (var i = 0; i < message.bindings.length; ++i) { - var error = $root.flyteidl.core.BindingData.verify(message.bindings[i]); - if (error) - return "bindings." + error; - } - } + if (message.key != null && message.hasOwnProperty("key")) + if (!$util.isString(message.key)) + return "key: string expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isString(message.value)) + return "value: string expected"; return null; }; - return BindingDataCollection; + return KeyValuePair; })(); - core.BindingDataMap = (function() { + core.RetryStrategy = (function() { /** - * Properties of a BindingDataMap. + * Properties of a RetryStrategy. * @memberof flyteidl.core - * @interface IBindingDataMap - * @property {Object.|null} [bindings] BindingDataMap bindings + * @interface IRetryStrategy + * @property {number|null} [retries] RetryStrategy retries */ /** - * Constructs a new BindingDataMap. + * Constructs a new RetryStrategy. * @memberof flyteidl.core - * @classdesc Represents a BindingDataMap. - * @implements IBindingDataMap + * @classdesc Represents a RetryStrategy. + * @implements IRetryStrategy * @constructor - * @param {flyteidl.core.IBindingDataMap=} [properties] Properties to set + * @param {flyteidl.core.IRetryStrategy=} [properties] Properties to set */ - function BindingDataMap(properties) { - this.bindings = {}; + function RetryStrategy(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8913,70 +9114,62 @@ } /** - * BindingDataMap bindings. - * @member {Object.} bindings - * @memberof flyteidl.core.BindingDataMap + * RetryStrategy retries. + * @member {number} retries + * @memberof flyteidl.core.RetryStrategy * @instance */ - BindingDataMap.prototype.bindings = $util.emptyObject; + RetryStrategy.prototype.retries = 0; /** - * Creates a new BindingDataMap instance using the specified properties. + * Creates a new RetryStrategy instance using the specified properties. * @function create - * @memberof flyteidl.core.BindingDataMap + * @memberof flyteidl.core.RetryStrategy * @static - * @param {flyteidl.core.IBindingDataMap=} [properties] Properties to set - * @returns {flyteidl.core.BindingDataMap} BindingDataMap instance + * @param {flyteidl.core.IRetryStrategy=} [properties] Properties to set + * @returns {flyteidl.core.RetryStrategy} RetryStrategy instance */ - BindingDataMap.create = function create(properties) { - return new BindingDataMap(properties); + RetryStrategy.create = function create(properties) { + return new RetryStrategy(properties); }; /** - * Encodes the specified BindingDataMap message. Does not implicitly {@link flyteidl.core.BindingDataMap.verify|verify} messages. + * Encodes the specified RetryStrategy message. Does not implicitly {@link flyteidl.core.RetryStrategy.verify|verify} messages. * @function encode - * @memberof flyteidl.core.BindingDataMap + * @memberof flyteidl.core.RetryStrategy * @static - * @param {flyteidl.core.IBindingDataMap} message BindingDataMap message or plain object to encode + * @param {flyteidl.core.IRetryStrategy} message RetryStrategy message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BindingDataMap.encode = function encode(message, writer) { + RetryStrategy.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.bindings != null && message.hasOwnProperty("bindings")) - for (var keys = Object.keys(message.bindings), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.flyteidl.core.BindingData.encode(message.bindings[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } + if (message.retries != null && message.hasOwnProperty("retries")) + writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.retries); return writer; }; /** - * Decodes a BindingDataMap message from the specified reader or buffer. + * Decodes a RetryStrategy message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.BindingDataMap + * @memberof flyteidl.core.RetryStrategy * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.BindingDataMap} BindingDataMap + * @returns {flyteidl.core.RetryStrategy} RetryStrategy * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BindingDataMap.decode = function decode(reader, length) { + RetryStrategy.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.BindingDataMap(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.RetryStrategy(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - reader.skip().pos++; - if (message.bindings === $util.emptyObject) - message.bindings = {}; - key = reader.string(); - reader.pos++; - message.bindings[key] = $root.flyteidl.core.BindingData.decode(reader, reader.uint32()); + case 5: + message.retries = reader.uint32(); break; default: reader.skipType(tag & 7); @@ -8987,50 +9180,44 @@ }; /** - * Verifies a BindingDataMap message. + * Verifies a RetryStrategy message. * @function verify - * @memberof flyteidl.core.BindingDataMap + * @memberof flyteidl.core.RetryStrategy * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BindingDataMap.verify = function verify(message) { + RetryStrategy.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.bindings != null && message.hasOwnProperty("bindings")) { - if (!$util.isObject(message.bindings)) - return "bindings: object expected"; - var key = Object.keys(message.bindings); - for (var i = 0; i < key.length; ++i) { - var error = $root.flyteidl.core.BindingData.verify(message.bindings[key[i]]); - if (error) - return "bindings." + error; - } - } + if (message.retries != null && message.hasOwnProperty("retries")) + if (!$util.isInteger(message.retries)) + return "retries: integer expected"; return null; }; - return BindingDataMap; + return RetryStrategy; })(); - core.UnionInfo = (function() { + core.IfBlock = (function() { /** - * Properties of an UnionInfo. + * Properties of an IfBlock. * @memberof flyteidl.core - * @interface IUnionInfo - * @property {flyteidl.core.ILiteralType|null} [targetType] UnionInfo targetType + * @interface IIfBlock + * @property {flyteidl.core.IBooleanExpression|null} [condition] IfBlock condition + * @property {flyteidl.core.INode|null} [thenNode] IfBlock thenNode */ /** - * Constructs a new UnionInfo. + * Constructs a new IfBlock. * @memberof flyteidl.core - * @classdesc Represents an UnionInfo. - * @implements IUnionInfo + * @classdesc Represents an IfBlock. + * @implements IIfBlock * @constructor - * @param {flyteidl.core.IUnionInfo=} [properties] Properties to set + * @param {flyteidl.core.IIfBlock=} [properties] Properties to set */ - function UnionInfo(properties) { + function IfBlock(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9038,62 +9225,75 @@ } /** - * UnionInfo targetType. - * @member {flyteidl.core.ILiteralType|null|undefined} targetType - * @memberof flyteidl.core.UnionInfo + * IfBlock condition. + * @member {flyteidl.core.IBooleanExpression|null|undefined} condition + * @memberof flyteidl.core.IfBlock * @instance */ - UnionInfo.prototype.targetType = null; + IfBlock.prototype.condition = null; /** - * Creates a new UnionInfo instance using the specified properties. + * IfBlock thenNode. + * @member {flyteidl.core.INode|null|undefined} thenNode + * @memberof flyteidl.core.IfBlock + * @instance + */ + IfBlock.prototype.thenNode = null; + + /** + * Creates a new IfBlock instance using the specified properties. * @function create - * @memberof flyteidl.core.UnionInfo + * @memberof flyteidl.core.IfBlock * @static - * @param {flyteidl.core.IUnionInfo=} [properties] Properties to set - * @returns {flyteidl.core.UnionInfo} UnionInfo instance + * @param {flyteidl.core.IIfBlock=} [properties] Properties to set + * @returns {flyteidl.core.IfBlock} IfBlock instance */ - UnionInfo.create = function create(properties) { - return new UnionInfo(properties); + IfBlock.create = function create(properties) { + return new IfBlock(properties); }; /** - * Encodes the specified UnionInfo message. Does not implicitly {@link flyteidl.core.UnionInfo.verify|verify} messages. + * Encodes the specified IfBlock message. Does not implicitly {@link flyteidl.core.IfBlock.verify|verify} messages. * @function encode - * @memberof flyteidl.core.UnionInfo + * @memberof flyteidl.core.IfBlock * @static - * @param {flyteidl.core.IUnionInfo} message UnionInfo message or plain object to encode + * @param {flyteidl.core.IIfBlock} message IfBlock message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UnionInfo.encode = function encode(message, writer) { + IfBlock.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.targetType != null && message.hasOwnProperty("targetType")) - $root.flyteidl.core.LiteralType.encode(message.targetType, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.condition != null && message.hasOwnProperty("condition")) + $root.flyteidl.core.BooleanExpression.encode(message.condition, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.thenNode != null && message.hasOwnProperty("thenNode")) + $root.flyteidl.core.Node.encode(message.thenNode, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes an UnionInfo message from the specified reader or buffer. + * Decodes an IfBlock message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.UnionInfo + * @memberof flyteidl.core.IfBlock * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.UnionInfo} UnionInfo + * @returns {flyteidl.core.IfBlock} IfBlock * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UnionInfo.decode = function decode(reader, length) { + IfBlock.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.UnionInfo(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.IfBlock(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.targetType = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + message.condition = $root.flyteidl.core.BooleanExpression.decode(reader, reader.uint32()); + break; + case 2: + message.thenNode = $root.flyteidl.core.Node.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -9104,49 +9304,54 @@ }; /** - * Verifies an UnionInfo message. + * Verifies an IfBlock message. * @function verify - * @memberof flyteidl.core.UnionInfo + * @memberof flyteidl.core.IfBlock * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UnionInfo.verify = function verify(message) { + IfBlock.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.targetType != null && message.hasOwnProperty("targetType")) { - var error = $root.flyteidl.core.LiteralType.verify(message.targetType); + if (message.condition != null && message.hasOwnProperty("condition")) { + var error = $root.flyteidl.core.BooleanExpression.verify(message.condition); if (error) - return "targetType." + error; + return "condition." + error; + } + if (message.thenNode != null && message.hasOwnProperty("thenNode")) { + var error = $root.flyteidl.core.Node.verify(message.thenNode); + if (error) + return "thenNode." + error; } return null; }; - return UnionInfo; + return IfBlock; })(); - core.BindingData = (function() { + core.IfElseBlock = (function() { /** - * Properties of a BindingData. + * Properties of an IfElseBlock. * @memberof flyteidl.core - * @interface IBindingData - * @property {flyteidl.core.IScalar|null} [scalar] BindingData scalar - * @property {flyteidl.core.IBindingDataCollection|null} [collection] BindingData collection - * @property {flyteidl.core.IOutputReference|null} [promise] BindingData promise - * @property {flyteidl.core.IBindingDataMap|null} [map] BindingData map - * @property {flyteidl.core.IUnionInfo|null} [union] BindingData union + * @interface IIfElseBlock + * @property {flyteidl.core.IIfBlock|null} ["case"] IfElseBlock case + * @property {Array.|null} [other] IfElseBlock other + * @property {flyteidl.core.INode|null} [elseNode] IfElseBlock elseNode + * @property {flyteidl.core.IError|null} [error] IfElseBlock error */ /** - * Constructs a new BindingData. + * Constructs a new IfElseBlock. * @memberof flyteidl.core - * @classdesc Represents a BindingData. - * @implements IBindingData + * @classdesc Represents an IfElseBlock. + * @implements IIfElseBlock * @constructor - * @param {flyteidl.core.IBindingData=} [properties] Properties to set + * @param {flyteidl.core.IIfElseBlock=} [properties] Properties to set */ - function BindingData(properties) { + function IfElseBlock(properties) { + this.other = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9154,128 +9359,118 @@ } /** - * BindingData scalar. - * @member {flyteidl.core.IScalar|null|undefined} scalar - * @memberof flyteidl.core.BindingData - * @instance - */ - BindingData.prototype.scalar = null; - - /** - * BindingData collection. - * @member {flyteidl.core.IBindingDataCollection|null|undefined} collection - * @memberof flyteidl.core.BindingData + * IfElseBlock case. + * @member {flyteidl.core.IIfBlock|null|undefined} case + * @memberof flyteidl.core.IfElseBlock * @instance */ - BindingData.prototype.collection = null; + IfElseBlock.prototype["case"] = null; /** - * BindingData promise. - * @member {flyteidl.core.IOutputReference|null|undefined} promise - * @memberof flyteidl.core.BindingData + * IfElseBlock other. + * @member {Array.} other + * @memberof flyteidl.core.IfElseBlock * @instance */ - BindingData.prototype.promise = null; + IfElseBlock.prototype.other = $util.emptyArray; /** - * BindingData map. - * @member {flyteidl.core.IBindingDataMap|null|undefined} map - * @memberof flyteidl.core.BindingData + * IfElseBlock elseNode. + * @member {flyteidl.core.INode|null|undefined} elseNode + * @memberof flyteidl.core.IfElseBlock * @instance */ - BindingData.prototype.map = null; + IfElseBlock.prototype.elseNode = null; /** - * BindingData union. - * @member {flyteidl.core.IUnionInfo|null|undefined} union - * @memberof flyteidl.core.BindingData + * IfElseBlock error. + * @member {flyteidl.core.IError|null|undefined} error + * @memberof flyteidl.core.IfElseBlock * @instance */ - BindingData.prototype.union = null; + IfElseBlock.prototype.error = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; /** - * BindingData value. - * @member {"scalar"|"collection"|"promise"|"map"|undefined} value - * @memberof flyteidl.core.BindingData + * IfElseBlock default. + * @member {"elseNode"|"error"|undefined} default_ + * @memberof flyteidl.core.IfElseBlock * @instance */ - Object.defineProperty(BindingData.prototype, "value", { - get: $util.oneOfGetter($oneOfFields = ["scalar", "collection", "promise", "map"]), + Object.defineProperty(IfElseBlock.prototype, "default", { + get: $util.oneOfGetter($oneOfFields = ["elseNode", "error"]), set: $util.oneOfSetter($oneOfFields) }); /** - * Creates a new BindingData instance using the specified properties. + * Creates a new IfElseBlock instance using the specified properties. * @function create - * @memberof flyteidl.core.BindingData + * @memberof flyteidl.core.IfElseBlock * @static - * @param {flyteidl.core.IBindingData=} [properties] Properties to set - * @returns {flyteidl.core.BindingData} BindingData instance + * @param {flyteidl.core.IIfElseBlock=} [properties] Properties to set + * @returns {flyteidl.core.IfElseBlock} IfElseBlock instance */ - BindingData.create = function create(properties) { - return new BindingData(properties); + IfElseBlock.create = function create(properties) { + return new IfElseBlock(properties); }; /** - * Encodes the specified BindingData message. Does not implicitly {@link flyteidl.core.BindingData.verify|verify} messages. + * Encodes the specified IfElseBlock message. Does not implicitly {@link flyteidl.core.IfElseBlock.verify|verify} messages. * @function encode - * @memberof flyteidl.core.BindingData + * @memberof flyteidl.core.IfElseBlock * @static - * @param {flyteidl.core.IBindingData} message BindingData message or plain object to encode + * @param {flyteidl.core.IIfElseBlock} message IfElseBlock message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BindingData.encode = function encode(message, writer) { + IfElseBlock.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.scalar != null && message.hasOwnProperty("scalar")) - $root.flyteidl.core.Scalar.encode(message.scalar, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.collection != null && message.hasOwnProperty("collection")) - $root.flyteidl.core.BindingDataCollection.encode(message.collection, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.promise != null && message.hasOwnProperty("promise")) - $root.flyteidl.core.OutputReference.encode(message.promise, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.map != null && message.hasOwnProperty("map")) - $root.flyteidl.core.BindingDataMap.encode(message.map, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.union != null && message.hasOwnProperty("union")) - $root.flyteidl.core.UnionInfo.encode(message.union, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message["case"] != null && message.hasOwnProperty("case")) + $root.flyteidl.core.IfBlock.encode(message["case"], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.other != null && message.other.length) + for (var i = 0; i < message.other.length; ++i) + $root.flyteidl.core.IfBlock.encode(message.other[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.elseNode != null && message.hasOwnProperty("elseNode")) + $root.flyteidl.core.Node.encode(message.elseNode, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.error != null && message.hasOwnProperty("error")) + $root.flyteidl.core.Error.encode(message.error, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; /** - * Decodes a BindingData message from the specified reader or buffer. + * Decodes an IfElseBlock message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.BindingData + * @memberof flyteidl.core.IfElseBlock * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.BindingData} BindingData + * @returns {flyteidl.core.IfElseBlock} IfElseBlock * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BindingData.decode = function decode(reader, length) { + IfElseBlock.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.BindingData(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.IfElseBlock(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.scalar = $root.flyteidl.core.Scalar.decode(reader, reader.uint32()); + message["case"] = $root.flyteidl.core.IfBlock.decode(reader, reader.uint32()); break; case 2: - message.collection = $root.flyteidl.core.BindingDataCollection.decode(reader, reader.uint32()); + if (!(message.other && message.other.length)) + message.other = []; + message.other.push($root.flyteidl.core.IfBlock.decode(reader, reader.uint32())); break; case 3: - message.promise = $root.flyteidl.core.OutputReference.decode(reader, reader.uint32()); + message.elseNode = $root.flyteidl.core.Node.decode(reader, reader.uint32()); break; case 4: - message.map = $root.flyteidl.core.BindingDataMap.decode(reader, reader.uint32()); - break; - case 5: - message.union = $root.flyteidl.core.UnionInfo.decode(reader, reader.uint32()); + message.error = $root.flyteidl.core.Error.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -9286,85 +9481,186 @@ }; /** - * Verifies a BindingData message. + * Verifies an IfElseBlock message. * @function verify - * @memberof flyteidl.core.BindingData + * @memberof flyteidl.core.IfElseBlock * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BindingData.verify = function verify(message) { + IfElseBlock.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.scalar != null && message.hasOwnProperty("scalar")) { - properties.value = 1; - { - var error = $root.flyteidl.core.Scalar.verify(message.scalar); + if (message["case"] != null && message.hasOwnProperty("case")) { + var error = $root.flyteidl.core.IfBlock.verify(message["case"]); + if (error) + return "case." + error; + } + if (message.other != null && message.hasOwnProperty("other")) { + if (!Array.isArray(message.other)) + return "other: array expected"; + for (var i = 0; i < message.other.length; ++i) { + var error = $root.flyteidl.core.IfBlock.verify(message.other[i]); if (error) - return "scalar." + error; + return "other." + error; } } - if (message.collection != null && message.hasOwnProperty("collection")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; + if (message.elseNode != null && message.hasOwnProperty("elseNode")) { + properties["default"] = 1; { - var error = $root.flyteidl.core.BindingDataCollection.verify(message.collection); + var error = $root.flyteidl.core.Node.verify(message.elseNode); if (error) - return "collection." + error; + return "elseNode." + error; } } - if (message.promise != null && message.hasOwnProperty("promise")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; + if (message.error != null && message.hasOwnProperty("error")) { + if (properties["default"] === 1) + return "default: multiple values"; + properties["default"] = 1; { - var error = $root.flyteidl.core.OutputReference.verify(message.promise); + var error = $root.flyteidl.core.Error.verify(message.error); if (error) - return "promise." + error; + return "error." + error; } } - if (message.map != null && message.hasOwnProperty("map")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - { - var error = $root.flyteidl.core.BindingDataMap.verify(message.map); - if (error) - return "map." + error; + return null; + }; + + return IfElseBlock; + })(); + + core.BranchNode = (function() { + + /** + * Properties of a BranchNode. + * @memberof flyteidl.core + * @interface IBranchNode + * @property {flyteidl.core.IIfElseBlock|null} [ifElse] BranchNode ifElse + */ + + /** + * Constructs a new BranchNode. + * @memberof flyteidl.core + * @classdesc Represents a BranchNode. + * @implements IBranchNode + * @constructor + * @param {flyteidl.core.IBranchNode=} [properties] Properties to set + */ + function BranchNode(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]]; + } + + /** + * BranchNode ifElse. + * @member {flyteidl.core.IIfElseBlock|null|undefined} ifElse + * @memberof flyteidl.core.BranchNode + * @instance + */ + BranchNode.prototype.ifElse = null; + + /** + * Creates a new BranchNode instance using the specified properties. + * @function create + * @memberof flyteidl.core.BranchNode + * @static + * @param {flyteidl.core.IBranchNode=} [properties] Properties to set + * @returns {flyteidl.core.BranchNode} BranchNode instance + */ + BranchNode.create = function create(properties) { + return new BranchNode(properties); + }; + + /** + * Encodes the specified BranchNode message. Does not implicitly {@link flyteidl.core.BranchNode.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.BranchNode + * @static + * @param {flyteidl.core.IBranchNode} message BranchNode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BranchNode.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.ifElse != null && message.hasOwnProperty("ifElse")) + $root.flyteidl.core.IfElseBlock.encode(message.ifElse, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a BranchNode message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.BranchNode + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.BranchNode} BranchNode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BranchNode.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.BranchNode(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.ifElse = $root.flyteidl.core.IfElseBlock.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; } } - if (message.union != null && message.hasOwnProperty("union")) { - var error = $root.flyteidl.core.UnionInfo.verify(message.union); + return message; + }; + + /** + * Verifies a BranchNode message. + * @function verify + * @memberof flyteidl.core.BranchNode + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BranchNode.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.ifElse != null && message.hasOwnProperty("ifElse")) { + var error = $root.flyteidl.core.IfElseBlock.verify(message.ifElse); if (error) - return "union." + error; + return "ifElse." + error; } return null; }; - return BindingData; + return BranchNode; })(); - core.Binding = (function() { + core.TaskNode = (function() { /** - * Properties of a Binding. + * Properties of a TaskNode. * @memberof flyteidl.core - * @interface IBinding - * @property {string|null} ["var"] Binding var - * @property {flyteidl.core.IBindingData|null} [binding] Binding binding + * @interface ITaskNode + * @property {flyteidl.core.IIdentifier|null} [referenceId] TaskNode referenceId + * @property {flyteidl.core.ITaskNodeOverrides|null} [overrides] TaskNode overrides */ /** - * Constructs a new Binding. + * Constructs a new TaskNode. * @memberof flyteidl.core - * @classdesc Represents a Binding. - * @implements IBinding + * @classdesc Represents a TaskNode. + * @implements ITaskNode * @constructor - * @param {flyteidl.core.IBinding=} [properties] Properties to set + * @param {flyteidl.core.ITaskNode=} [properties] Properties to set */ - function Binding(properties) { + function TaskNode(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9372,75 +9668,89 @@ } /** - * Binding var. - * @member {string} var - * @memberof flyteidl.core.Binding + * TaskNode referenceId. + * @member {flyteidl.core.IIdentifier|null|undefined} referenceId + * @memberof flyteidl.core.TaskNode * @instance */ - Binding.prototype["var"] = ""; + TaskNode.prototype.referenceId = null; /** - * Binding binding. - * @member {flyteidl.core.IBindingData|null|undefined} binding - * @memberof flyteidl.core.Binding + * TaskNode overrides. + * @member {flyteidl.core.ITaskNodeOverrides|null|undefined} overrides + * @memberof flyteidl.core.TaskNode * @instance */ - Binding.prototype.binding = null; + TaskNode.prototype.overrides = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * Creates a new Binding instance using the specified properties. + * TaskNode reference. + * @member {"referenceId"|undefined} reference + * @memberof flyteidl.core.TaskNode + * @instance + */ + Object.defineProperty(TaskNode.prototype, "reference", { + get: $util.oneOfGetter($oneOfFields = ["referenceId"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new TaskNode instance using the specified properties. * @function create - * @memberof flyteidl.core.Binding + * @memberof flyteidl.core.TaskNode * @static - * @param {flyteidl.core.IBinding=} [properties] Properties to set - * @returns {flyteidl.core.Binding} Binding instance + * @param {flyteidl.core.ITaskNode=} [properties] Properties to set + * @returns {flyteidl.core.TaskNode} TaskNode instance */ - Binding.create = function create(properties) { - return new Binding(properties); + TaskNode.create = function create(properties) { + return new TaskNode(properties); }; /** - * Encodes the specified Binding message. Does not implicitly {@link flyteidl.core.Binding.verify|verify} messages. + * Encodes the specified TaskNode message. Does not implicitly {@link flyteidl.core.TaskNode.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Binding + * @memberof flyteidl.core.TaskNode * @static - * @param {flyteidl.core.IBinding} message Binding message or plain object to encode + * @param {flyteidl.core.ITaskNode} message TaskNode message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Binding.encode = function encode(message, writer) { + TaskNode.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message["var"] != null && message.hasOwnProperty("var")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message["var"]); - if (message.binding != null && message.hasOwnProperty("binding")) - $root.flyteidl.core.BindingData.encode(message.binding, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.referenceId != null && message.hasOwnProperty("referenceId")) + $root.flyteidl.core.Identifier.encode(message.referenceId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.overrides != null && message.hasOwnProperty("overrides")) + $root.flyteidl.core.TaskNodeOverrides.encode(message.overrides, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a Binding message from the specified reader or buffer. + * Decodes a TaskNode message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Binding + * @memberof flyteidl.core.TaskNode * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Binding} Binding + * @returns {flyteidl.core.TaskNode} TaskNode * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Binding.decode = function decode(reader, length) { + TaskNode.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.Binding(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.TaskNode(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message["var"] = reader.string(); + message.referenceId = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); break; case 2: - message.binding = $root.flyteidl.core.BindingData.decode(reader, reader.uint32()); + message.overrides = $root.flyteidl.core.TaskNodeOverrides.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -9451,49 +9761,55 @@ }; /** - * Verifies a Binding message. + * Verifies a TaskNode message. * @function verify - * @memberof flyteidl.core.Binding + * @memberof flyteidl.core.TaskNode * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Binding.verify = function verify(message) { + TaskNode.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message["var"] != null && message.hasOwnProperty("var")) - if (!$util.isString(message["var"])) - return "var: string expected"; - if (message.binding != null && message.hasOwnProperty("binding")) { - var error = $root.flyteidl.core.BindingData.verify(message.binding); + var properties = {}; + if (message.referenceId != null && message.hasOwnProperty("referenceId")) { + properties.reference = 1; + { + var error = $root.flyteidl.core.Identifier.verify(message.referenceId); + if (error) + return "referenceId." + error; + } + } + if (message.overrides != null && message.hasOwnProperty("overrides")) { + var error = $root.flyteidl.core.TaskNodeOverrides.verify(message.overrides); if (error) - return "binding." + error; + return "overrides." + error; } return null; }; - return Binding; + return TaskNode; })(); - core.KeyValuePair = (function() { + core.WorkflowNode = (function() { /** - * Properties of a KeyValuePair. + * Properties of a WorkflowNode. * @memberof flyteidl.core - * @interface IKeyValuePair - * @property {string|null} [key] KeyValuePair key - * @property {string|null} [value] KeyValuePair value + * @interface IWorkflowNode + * @property {flyteidl.core.IIdentifier|null} [launchplanRef] WorkflowNode launchplanRef + * @property {flyteidl.core.IIdentifier|null} [subWorkflowRef] WorkflowNode subWorkflowRef */ /** - * Constructs a new KeyValuePair. + * Constructs a new WorkflowNode. * @memberof flyteidl.core - * @classdesc Represents a KeyValuePair. - * @implements IKeyValuePair + * @classdesc Represents a WorkflowNode. + * @implements IWorkflowNode * @constructor - * @param {flyteidl.core.IKeyValuePair=} [properties] Properties to set + * @param {flyteidl.core.IWorkflowNode=} [properties] Properties to set */ - function KeyValuePair(properties) { + function WorkflowNode(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9501,75 +9817,89 @@ } /** - * KeyValuePair key. - * @member {string} key - * @memberof flyteidl.core.KeyValuePair + * WorkflowNode launchplanRef. + * @member {flyteidl.core.IIdentifier|null|undefined} launchplanRef + * @memberof flyteidl.core.WorkflowNode * @instance */ - KeyValuePair.prototype.key = ""; + WorkflowNode.prototype.launchplanRef = null; /** - * KeyValuePair value. - * @member {string} value - * @memberof flyteidl.core.KeyValuePair + * WorkflowNode subWorkflowRef. + * @member {flyteidl.core.IIdentifier|null|undefined} subWorkflowRef + * @memberof flyteidl.core.WorkflowNode * @instance */ - KeyValuePair.prototype.value = ""; + WorkflowNode.prototype.subWorkflowRef = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * Creates a new KeyValuePair instance using the specified properties. + * WorkflowNode reference. + * @member {"launchplanRef"|"subWorkflowRef"|undefined} reference + * @memberof flyteidl.core.WorkflowNode + * @instance + */ + Object.defineProperty(WorkflowNode.prototype, "reference", { + get: $util.oneOfGetter($oneOfFields = ["launchplanRef", "subWorkflowRef"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new WorkflowNode instance using the specified properties. * @function create - * @memberof flyteidl.core.KeyValuePair + * @memberof flyteidl.core.WorkflowNode * @static - * @param {flyteidl.core.IKeyValuePair=} [properties] Properties to set - * @returns {flyteidl.core.KeyValuePair} KeyValuePair instance + * @param {flyteidl.core.IWorkflowNode=} [properties] Properties to set + * @returns {flyteidl.core.WorkflowNode} WorkflowNode instance */ - KeyValuePair.create = function create(properties) { - return new KeyValuePair(properties); + WorkflowNode.create = function create(properties) { + return new WorkflowNode(properties); }; /** - * Encodes the specified KeyValuePair message. Does not implicitly {@link flyteidl.core.KeyValuePair.verify|verify} messages. + * Encodes the specified WorkflowNode message. Does not implicitly {@link flyteidl.core.WorkflowNode.verify|verify} messages. * @function encode - * @memberof flyteidl.core.KeyValuePair + * @memberof flyteidl.core.WorkflowNode * @static - * @param {flyteidl.core.IKeyValuePair} message KeyValuePair message or plain object to encode + * @param {flyteidl.core.IWorkflowNode} message WorkflowNode message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KeyValuePair.encode = function encode(message, writer) { + WorkflowNode.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.key != null && message.hasOwnProperty("key")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.key); - if (message.value != null && message.hasOwnProperty("value")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.value); + if (message.launchplanRef != null && message.hasOwnProperty("launchplanRef")) + $root.flyteidl.core.Identifier.encode(message.launchplanRef, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.subWorkflowRef != null && message.hasOwnProperty("subWorkflowRef")) + $root.flyteidl.core.Identifier.encode(message.subWorkflowRef, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a KeyValuePair message from the specified reader or buffer. + * Decodes a WorkflowNode message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.KeyValuePair + * @memberof flyteidl.core.WorkflowNode * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.KeyValuePair} KeyValuePair + * @returns {flyteidl.core.WorkflowNode} WorkflowNode * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KeyValuePair.decode = function decode(reader, length) { + WorkflowNode.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.KeyValuePair(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.WorkflowNode(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.key = reader.string(); + message.launchplanRef = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); break; case 2: - message.value = reader.string(); + message.subWorkflowRef = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -9580,46 +9910,59 @@ }; /** - * Verifies a KeyValuePair message. + * Verifies a WorkflowNode message. * @function verify - * @memberof flyteidl.core.KeyValuePair + * @memberof flyteidl.core.WorkflowNode * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - KeyValuePair.verify = function verify(message) { + WorkflowNode.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) - if (!$util.isString(message.key)) - return "key: string expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!$util.isString(message.value)) - return "value: string expected"; + var properties = {}; + if (message.launchplanRef != null && message.hasOwnProperty("launchplanRef")) { + properties.reference = 1; + { + var error = $root.flyteidl.core.Identifier.verify(message.launchplanRef); + if (error) + return "launchplanRef." + error; + } + } + if (message.subWorkflowRef != null && message.hasOwnProperty("subWorkflowRef")) { + if (properties.reference === 1) + return "reference: multiple values"; + properties.reference = 1; + { + var error = $root.flyteidl.core.Identifier.verify(message.subWorkflowRef); + if (error) + return "subWorkflowRef." + error; + } + } return null; }; - return KeyValuePair; + return WorkflowNode; })(); - core.RetryStrategy = (function() { + core.ApproveCondition = (function() { /** - * Properties of a RetryStrategy. + * Properties of an ApproveCondition. * @memberof flyteidl.core - * @interface IRetryStrategy - * @property {number|null} [retries] RetryStrategy retries + * @interface IApproveCondition + * @property {string|null} [signalId] ApproveCondition signalId */ /** - * Constructs a new RetryStrategy. + * Constructs a new ApproveCondition. * @memberof flyteidl.core - * @classdesc Represents a RetryStrategy. - * @implements IRetryStrategy + * @classdesc Represents an ApproveCondition. + * @implements IApproveCondition * @constructor - * @param {flyteidl.core.IRetryStrategy=} [properties] Properties to set + * @param {flyteidl.core.IApproveCondition=} [properties] Properties to set */ - function RetryStrategy(properties) { + function ApproveCondition(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9627,62 +9970,62 @@ } /** - * RetryStrategy retries. - * @member {number} retries - * @memberof flyteidl.core.RetryStrategy + * ApproveCondition signalId. + * @member {string} signalId + * @memberof flyteidl.core.ApproveCondition * @instance */ - RetryStrategy.prototype.retries = 0; + ApproveCondition.prototype.signalId = ""; /** - * Creates a new RetryStrategy instance using the specified properties. + * Creates a new ApproveCondition instance using the specified properties. * @function create - * @memberof flyteidl.core.RetryStrategy + * @memberof flyteidl.core.ApproveCondition * @static - * @param {flyteidl.core.IRetryStrategy=} [properties] Properties to set - * @returns {flyteidl.core.RetryStrategy} RetryStrategy instance + * @param {flyteidl.core.IApproveCondition=} [properties] Properties to set + * @returns {flyteidl.core.ApproveCondition} ApproveCondition instance */ - RetryStrategy.create = function create(properties) { - return new RetryStrategy(properties); + ApproveCondition.create = function create(properties) { + return new ApproveCondition(properties); }; /** - * Encodes the specified RetryStrategy message. Does not implicitly {@link flyteidl.core.RetryStrategy.verify|verify} messages. + * Encodes the specified ApproveCondition message. Does not implicitly {@link flyteidl.core.ApproveCondition.verify|verify} messages. * @function encode - * @memberof flyteidl.core.RetryStrategy + * @memberof flyteidl.core.ApproveCondition * @static - * @param {flyteidl.core.IRetryStrategy} message RetryStrategy message or plain object to encode + * @param {flyteidl.core.IApproveCondition} message ApproveCondition message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RetryStrategy.encode = function encode(message, writer) { + ApproveCondition.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.retries != null && message.hasOwnProperty("retries")) - writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.retries); + if (message.signalId != null && message.hasOwnProperty("signalId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.signalId); return writer; }; /** - * Decodes a RetryStrategy message from the specified reader or buffer. + * Decodes an ApproveCondition message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.RetryStrategy + * @memberof flyteidl.core.ApproveCondition * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.RetryStrategy} RetryStrategy + * @returns {flyteidl.core.ApproveCondition} ApproveCondition * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RetryStrategy.decode = function decode(reader, length) { + ApproveCondition.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.RetryStrategy(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.ApproveCondition(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 5: - message.retries = reader.uint32(); + case 1: + message.signalId = reader.string(); break; default: reader.skipType(tag & 7); @@ -9693,74 +10036,45 @@ }; /** - * Verifies a RetryStrategy message. + * Verifies an ApproveCondition message. * @function verify - * @memberof flyteidl.core.RetryStrategy + * @memberof flyteidl.core.ApproveCondition * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - RetryStrategy.verify = function verify(message) { + ApproveCondition.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.retries != null && message.hasOwnProperty("retries")) - if (!$util.isInteger(message.retries)) - return "retries: integer expected"; + if (message.signalId != null && message.hasOwnProperty("signalId")) + if (!$util.isString(message.signalId)) + return "signalId: string expected"; return null; }; - return RetryStrategy; - })(); - - /** - * SimpleType enum. - * @name flyteidl.core.SimpleType - * @enum {string} - * @property {number} NONE=0 NONE value - * @property {number} INTEGER=1 INTEGER value - * @property {number} FLOAT=2 FLOAT value - * @property {number} STRING=3 STRING value - * @property {number} BOOLEAN=4 BOOLEAN value - * @property {number} DATETIME=5 DATETIME value - * @property {number} DURATION=6 DURATION value - * @property {number} BINARY=7 BINARY value - * @property {number} ERROR=8 ERROR value - * @property {number} STRUCT=9 STRUCT value - */ - core.SimpleType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "NONE"] = 0; - values[valuesById[1] = "INTEGER"] = 1; - values[valuesById[2] = "FLOAT"] = 2; - values[valuesById[3] = "STRING"] = 3; - values[valuesById[4] = "BOOLEAN"] = 4; - values[valuesById[5] = "DATETIME"] = 5; - values[valuesById[6] = "DURATION"] = 6; - values[valuesById[7] = "BINARY"] = 7; - values[valuesById[8] = "ERROR"] = 8; - values[valuesById[9] = "STRUCT"] = 9; - return values; + return ApproveCondition; })(); - core.SchemaType = (function() { + core.SignalCondition = (function() { /** - * Properties of a SchemaType. + * Properties of a SignalCondition. * @memberof flyteidl.core - * @interface ISchemaType - * @property {Array.|null} [columns] SchemaType columns + * @interface ISignalCondition + * @property {string|null} [signalId] SignalCondition signalId + * @property {flyteidl.core.ILiteralType|null} [type] SignalCondition type + * @property {string|null} [outputVariableName] SignalCondition outputVariableName */ /** - * Constructs a new SchemaType. + * Constructs a new SignalCondition. * @memberof flyteidl.core - * @classdesc Represents a SchemaType. - * @implements ISchemaType + * @classdesc Represents a SignalCondition. + * @implements ISignalCondition * @constructor - * @param {flyteidl.core.ISchemaType=} [properties] Properties to set + * @param {flyteidl.core.ISignalCondition=} [properties] Properties to set */ - function SchemaType(properties) { - this.columns = []; + function SignalCondition(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9768,280 +10082,143 @@ } /** - * SchemaType columns. - * @member {Array.} columns - * @memberof flyteidl.core.SchemaType + * SignalCondition signalId. + * @member {string} signalId + * @memberof flyteidl.core.SignalCondition * @instance */ - SchemaType.prototype.columns = $util.emptyArray; + SignalCondition.prototype.signalId = ""; /** - * Creates a new SchemaType instance using the specified properties. + * SignalCondition type. + * @member {flyteidl.core.ILiteralType|null|undefined} type + * @memberof flyteidl.core.SignalCondition + * @instance + */ + SignalCondition.prototype.type = null; + + /** + * SignalCondition outputVariableName. + * @member {string} outputVariableName + * @memberof flyteidl.core.SignalCondition + * @instance + */ + SignalCondition.prototype.outputVariableName = ""; + + /** + * Creates a new SignalCondition instance using the specified properties. * @function create - * @memberof flyteidl.core.SchemaType + * @memberof flyteidl.core.SignalCondition * @static - * @param {flyteidl.core.ISchemaType=} [properties] Properties to set - * @returns {flyteidl.core.SchemaType} SchemaType instance + * @param {flyteidl.core.ISignalCondition=} [properties] Properties to set + * @returns {flyteidl.core.SignalCondition} SignalCondition instance */ - SchemaType.create = function create(properties) { - return new SchemaType(properties); + SignalCondition.create = function create(properties) { + return new SignalCondition(properties); }; /** - * Encodes the specified SchemaType message. Does not implicitly {@link flyteidl.core.SchemaType.verify|verify} messages. + * Encodes the specified SignalCondition message. Does not implicitly {@link flyteidl.core.SignalCondition.verify|verify} messages. * @function encode - * @memberof flyteidl.core.SchemaType + * @memberof flyteidl.core.SignalCondition * @static - * @param {flyteidl.core.ISchemaType} message SchemaType message or plain object to encode + * @param {flyteidl.core.ISignalCondition} message SignalCondition message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SchemaType.encode = function encode(message, writer) { + SignalCondition.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.columns != null && message.columns.length) - for (var i = 0; i < message.columns.length; ++i) - $root.flyteidl.core.SchemaType.SchemaColumn.encode(message.columns[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.signalId != null && message.hasOwnProperty("signalId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.signalId); + if (message.type != null && message.hasOwnProperty("type")) + $root.flyteidl.core.LiteralType.encode(message.type, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.outputVariableName != null && message.hasOwnProperty("outputVariableName")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputVariableName); return writer; }; /** - * Decodes a SchemaType message from the specified reader or buffer. + * Decodes a SignalCondition message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.SchemaType + * @memberof flyteidl.core.SignalCondition * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.SchemaType} SchemaType + * @returns {flyteidl.core.SignalCondition} SignalCondition * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SchemaType.decode = function decode(reader, length) { + SignalCondition.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.SchemaType(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.SignalCondition(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: + message.signalId = reader.string(); + break; + case 2: + message.type = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + break; case 3: - if (!(message.columns && message.columns.length)) - message.columns = []; - message.columns.push($root.flyteidl.core.SchemaType.SchemaColumn.decode(reader, reader.uint32())); + message.outputVariableName = reader.string(); break; default: reader.skipType(tag & 7); break; - } - } - return message; - }; - - /** - * Verifies a SchemaType message. - * @function verify - * @memberof flyteidl.core.SchemaType - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SchemaType.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.columns != null && message.hasOwnProperty("columns")) { - if (!Array.isArray(message.columns)) - return "columns: array expected"; - for (var i = 0; i < message.columns.length; ++i) { - var error = $root.flyteidl.core.SchemaType.SchemaColumn.verify(message.columns[i]); - if (error) - return "columns." + error; - } - } - return null; - }; - - SchemaType.SchemaColumn = (function() { - - /** - * Properties of a SchemaColumn. - * @memberof flyteidl.core.SchemaType - * @interface ISchemaColumn - * @property {string|null} [name] SchemaColumn name - * @property {flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType|null} [type] SchemaColumn type - */ - - /** - * Constructs a new SchemaColumn. - * @memberof flyteidl.core.SchemaType - * @classdesc Represents a SchemaColumn. - * @implements ISchemaColumn - * @constructor - * @param {flyteidl.core.SchemaType.ISchemaColumn=} [properties] Properties to set - */ - function SchemaColumn(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]]; - } - - /** - * SchemaColumn name. - * @member {string} name - * @memberof flyteidl.core.SchemaType.SchemaColumn - * @instance - */ - SchemaColumn.prototype.name = ""; - - /** - * SchemaColumn type. - * @member {flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType} type - * @memberof flyteidl.core.SchemaType.SchemaColumn - * @instance - */ - SchemaColumn.prototype.type = 0; - - /** - * Creates a new SchemaColumn instance using the specified properties. - * @function create - * @memberof flyteidl.core.SchemaType.SchemaColumn - * @static - * @param {flyteidl.core.SchemaType.ISchemaColumn=} [properties] Properties to set - * @returns {flyteidl.core.SchemaType.SchemaColumn} SchemaColumn instance - */ - SchemaColumn.create = function create(properties) { - return new SchemaColumn(properties); - }; - - /** - * Encodes the specified SchemaColumn message. Does not implicitly {@link flyteidl.core.SchemaType.SchemaColumn.verify|verify} messages. - * @function encode - * @memberof flyteidl.core.SchemaType.SchemaColumn - * @static - * @param {flyteidl.core.SchemaType.ISchemaColumn} message SchemaColumn message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SchemaColumn.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.type != null && message.hasOwnProperty("type")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.type); - return writer; - }; - - /** - * Decodes a SchemaColumn message from the specified reader or buffer. - * @function decode - * @memberof flyteidl.core.SchemaType.SchemaColumn - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.SchemaType.SchemaColumn} SchemaColumn - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SchemaColumn.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.SchemaType.SchemaColumn(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message.type = reader.int32(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Verifies a SchemaColumn message. - * @function verify - * @memberof flyteidl.core.SchemaType.SchemaColumn - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SchemaColumn.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.type != null && message.hasOwnProperty("type")) - switch (message.type) { - default: - return "type: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - break; - } - return null; - }; - - /** - * SchemaColumnType enum. - * @name flyteidl.core.SchemaType.SchemaColumn.SchemaColumnType - * @enum {string} - * @property {number} INTEGER=0 INTEGER value - * @property {number} FLOAT=1 FLOAT value - * @property {number} STRING=2 STRING value - * @property {number} BOOLEAN=3 BOOLEAN value - * @property {number} DATETIME=4 DATETIME value - * @property {number} DURATION=5 DURATION value - */ - SchemaColumn.SchemaColumnType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "INTEGER"] = 0; - values[valuesById[1] = "FLOAT"] = 1; - values[valuesById[2] = "STRING"] = 2; - values[valuesById[3] = "BOOLEAN"] = 3; - values[valuesById[4] = "DATETIME"] = 4; - values[valuesById[5] = "DURATION"] = 5; - return values; - })(); + } + } + return message; + }; - return SchemaColumn; - })(); + /** + * Verifies a SignalCondition message. + * @function verify + * @memberof flyteidl.core.SignalCondition + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SignalCondition.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.signalId != null && message.hasOwnProperty("signalId")) + if (!$util.isString(message.signalId)) + return "signalId: string expected"; + if (message.type != null && message.hasOwnProperty("type")) { + var error = $root.flyteidl.core.LiteralType.verify(message.type); + if (error) + return "type." + error; + } + if (message.outputVariableName != null && message.hasOwnProperty("outputVariableName")) + if (!$util.isString(message.outputVariableName)) + return "outputVariableName: string expected"; + return null; + }; - return SchemaType; + return SignalCondition; })(); - core.StructuredDatasetType = (function() { + core.SleepCondition = (function() { /** - * Properties of a StructuredDatasetType. + * Properties of a SleepCondition. * @memberof flyteidl.core - * @interface IStructuredDatasetType - * @property {Array.|null} [columns] StructuredDatasetType columns - * @property {string|null} [format] StructuredDatasetType format - * @property {string|null} [externalSchemaType] StructuredDatasetType externalSchemaType - * @property {Uint8Array|null} [externalSchemaBytes] StructuredDatasetType externalSchemaBytes + * @interface ISleepCondition + * @property {google.protobuf.IDuration|null} [duration] SleepCondition duration */ /** - * Constructs a new StructuredDatasetType. + * Constructs a new SleepCondition. * @memberof flyteidl.core - * @classdesc Represents a StructuredDatasetType. - * @implements IStructuredDatasetType + * @classdesc Represents a SleepCondition. + * @implements ISleepCondition * @constructor - * @param {flyteidl.core.IStructuredDatasetType=} [properties] Properties to set + * @param {flyteidl.core.ISleepCondition=} [properties] Properties to set */ - function StructuredDatasetType(properties) { - this.columns = []; + function SleepCondition(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -10049,104 +10226,62 @@ } /** - * StructuredDatasetType columns. - * @member {Array.} columns - * @memberof flyteidl.core.StructuredDatasetType - * @instance - */ - StructuredDatasetType.prototype.columns = $util.emptyArray; - - /** - * StructuredDatasetType format. - * @member {string} format - * @memberof flyteidl.core.StructuredDatasetType - * @instance - */ - StructuredDatasetType.prototype.format = ""; - - /** - * StructuredDatasetType externalSchemaType. - * @member {string} externalSchemaType - * @memberof flyteidl.core.StructuredDatasetType - * @instance - */ - StructuredDatasetType.prototype.externalSchemaType = ""; - - /** - * StructuredDatasetType externalSchemaBytes. - * @member {Uint8Array} externalSchemaBytes - * @memberof flyteidl.core.StructuredDatasetType + * SleepCondition duration. + * @member {google.protobuf.IDuration|null|undefined} duration + * @memberof flyteidl.core.SleepCondition * @instance */ - StructuredDatasetType.prototype.externalSchemaBytes = $util.newBuffer([]); + SleepCondition.prototype.duration = null; /** - * Creates a new StructuredDatasetType instance using the specified properties. + * Creates a new SleepCondition instance using the specified properties. * @function create - * @memberof flyteidl.core.StructuredDatasetType + * @memberof flyteidl.core.SleepCondition * @static - * @param {flyteidl.core.IStructuredDatasetType=} [properties] Properties to set - * @returns {flyteidl.core.StructuredDatasetType} StructuredDatasetType instance + * @param {flyteidl.core.ISleepCondition=} [properties] Properties to set + * @returns {flyteidl.core.SleepCondition} SleepCondition instance */ - StructuredDatasetType.create = function create(properties) { - return new StructuredDatasetType(properties); + SleepCondition.create = function create(properties) { + return new SleepCondition(properties); }; /** - * Encodes the specified StructuredDatasetType message. Does not implicitly {@link flyteidl.core.StructuredDatasetType.verify|verify} messages. + * Encodes the specified SleepCondition message. Does not implicitly {@link flyteidl.core.SleepCondition.verify|verify} messages. * @function encode - * @memberof flyteidl.core.StructuredDatasetType + * @memberof flyteidl.core.SleepCondition * @static - * @param {flyteidl.core.IStructuredDatasetType} message StructuredDatasetType message or plain object to encode + * @param {flyteidl.core.ISleepCondition} message SleepCondition message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - StructuredDatasetType.encode = function encode(message, writer) { + SleepCondition.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.columns != null && message.columns.length) - for (var i = 0; i < message.columns.length; ++i) - $root.flyteidl.core.StructuredDatasetType.DatasetColumn.encode(message.columns[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.format != null && message.hasOwnProperty("format")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.format); - if (message.externalSchemaType != null && message.hasOwnProperty("externalSchemaType")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.externalSchemaType); - if (message.externalSchemaBytes != null && message.hasOwnProperty("externalSchemaBytes")) - writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.externalSchemaBytes); + if (message.duration != null && message.hasOwnProperty("duration")) + $root.google.protobuf.Duration.encode(message.duration, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a StructuredDatasetType message from the specified reader or buffer. + * Decodes a SleepCondition message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.StructuredDatasetType + * @memberof flyteidl.core.SleepCondition * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.StructuredDatasetType} StructuredDatasetType + * @returns {flyteidl.core.SleepCondition} SleepCondition * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - StructuredDatasetType.decode = function decode(reader, length) { + SleepCondition.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.StructuredDatasetType(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.SleepCondition(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.columns && message.columns.length)) - message.columns = []; - message.columns.push($root.flyteidl.core.StructuredDatasetType.DatasetColumn.decode(reader, reader.uint32())); - break; - case 2: - message.format = reader.string(); - break; - case 3: - message.externalSchemaType = reader.string(); - break; - case 4: - message.externalSchemaBytes = reader.bytes(); + message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -10157,188 +10292,47 @@ }; /** - * Verifies a StructuredDatasetType message. + * Verifies a SleepCondition message. * @function verify - * @memberof flyteidl.core.StructuredDatasetType + * @memberof flyteidl.core.SleepCondition * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - StructuredDatasetType.verify = function verify(message) { + SleepCondition.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.columns != null && message.hasOwnProperty("columns")) { - if (!Array.isArray(message.columns)) - return "columns: array expected"; - for (var i = 0; i < message.columns.length; ++i) { - var error = $root.flyteidl.core.StructuredDatasetType.DatasetColumn.verify(message.columns[i]); - if (error) - return "columns." + error; - } + if (message.duration != null && message.hasOwnProperty("duration")) { + var error = $root.google.protobuf.Duration.verify(message.duration); + if (error) + return "duration." + error; } - if (message.format != null && message.hasOwnProperty("format")) - if (!$util.isString(message.format)) - return "format: string expected"; - if (message.externalSchemaType != null && message.hasOwnProperty("externalSchemaType")) - if (!$util.isString(message.externalSchemaType)) - return "externalSchemaType: string expected"; - if (message.externalSchemaBytes != null && message.hasOwnProperty("externalSchemaBytes")) - if (!(message.externalSchemaBytes && typeof message.externalSchemaBytes.length === "number" || $util.isString(message.externalSchemaBytes))) - return "externalSchemaBytes: buffer expected"; return null; }; - StructuredDatasetType.DatasetColumn = (function() { - - /** - * Properties of a DatasetColumn. - * @memberof flyteidl.core.StructuredDatasetType - * @interface IDatasetColumn - * @property {string|null} [name] DatasetColumn name - * @property {flyteidl.core.ILiteralType|null} [literalType] DatasetColumn literalType - */ - - /** - * Constructs a new DatasetColumn. - * @memberof flyteidl.core.StructuredDatasetType - * @classdesc Represents a DatasetColumn. - * @implements IDatasetColumn - * @constructor - * @param {flyteidl.core.StructuredDatasetType.IDatasetColumn=} [properties] Properties to set - */ - function DatasetColumn(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]]; - } - - /** - * DatasetColumn name. - * @member {string} name - * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn - * @instance - */ - DatasetColumn.prototype.name = ""; - - /** - * DatasetColumn literalType. - * @member {flyteidl.core.ILiteralType|null|undefined} literalType - * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn - * @instance - */ - DatasetColumn.prototype.literalType = null; - - /** - * Creates a new DatasetColumn instance using the specified properties. - * @function create - * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn - * @static - * @param {flyteidl.core.StructuredDatasetType.IDatasetColumn=} [properties] Properties to set - * @returns {flyteidl.core.StructuredDatasetType.DatasetColumn} DatasetColumn instance - */ - DatasetColumn.create = function create(properties) { - return new DatasetColumn(properties); - }; - - /** - * Encodes the specified DatasetColumn message. Does not implicitly {@link flyteidl.core.StructuredDatasetType.DatasetColumn.verify|verify} messages. - * @function encode - * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn - * @static - * @param {flyteidl.core.StructuredDatasetType.IDatasetColumn} message DatasetColumn message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - DatasetColumn.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.literalType != null && message.hasOwnProperty("literalType")) - $root.flyteidl.core.LiteralType.encode(message.literalType, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Decodes a DatasetColumn message from the specified reader or buffer. - * @function decode - * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.StructuredDatasetType.DatasetColumn} DatasetColumn - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - DatasetColumn.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.StructuredDatasetType.DatasetColumn(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message.literalType = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Verifies a DatasetColumn message. - * @function verify - * @memberof flyteidl.core.StructuredDatasetType.DatasetColumn - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - DatasetColumn.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.literalType != null && message.hasOwnProperty("literalType")) { - var error = $root.flyteidl.core.LiteralType.verify(message.literalType); - if (error) - return "literalType." + error; - } - return null; - }; - - return DatasetColumn; - })(); - - return StructuredDatasetType; + return SleepCondition; })(); - core.BlobType = (function() { + core.GateNode = (function() { /** - * Properties of a BlobType. + * Properties of a GateNode. * @memberof flyteidl.core - * @interface IBlobType - * @property {string|null} [format] BlobType format - * @property {flyteidl.core.BlobType.BlobDimensionality|null} [dimensionality] BlobType dimensionality + * @interface IGateNode + * @property {flyteidl.core.IApproveCondition|null} [approve] GateNode approve + * @property {flyteidl.core.ISignalCondition|null} [signal] GateNode signal + * @property {flyteidl.core.ISleepCondition|null} [sleep] GateNode sleep */ /** - * Constructs a new BlobType. + * Constructs a new GateNode. * @memberof flyteidl.core - * @classdesc Represents a BlobType. - * @implements IBlobType + * @classdesc Represents a GateNode. + * @implements IGateNode * @constructor - * @param {flyteidl.core.IBlobType=} [properties] Properties to set + * @param {flyteidl.core.IGateNode=} [properties] Properties to set */ - function BlobType(properties) { + function GateNode(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -10346,75 +10340,102 @@ } /** - * BlobType format. - * @member {string} format - * @memberof flyteidl.core.BlobType + * GateNode approve. + * @member {flyteidl.core.IApproveCondition|null|undefined} approve + * @memberof flyteidl.core.GateNode * @instance */ - BlobType.prototype.format = ""; + GateNode.prototype.approve = null; /** - * BlobType dimensionality. - * @member {flyteidl.core.BlobType.BlobDimensionality} dimensionality - * @memberof flyteidl.core.BlobType + * GateNode signal. + * @member {flyteidl.core.ISignalCondition|null|undefined} signal + * @memberof flyteidl.core.GateNode * @instance */ - BlobType.prototype.dimensionality = 0; + GateNode.prototype.signal = null; /** - * Creates a new BlobType instance using the specified properties. + * GateNode sleep. + * @member {flyteidl.core.ISleepCondition|null|undefined} sleep + * @memberof flyteidl.core.GateNode + * @instance + */ + GateNode.prototype.sleep = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * GateNode condition. + * @member {"approve"|"signal"|"sleep"|undefined} condition + * @memberof flyteidl.core.GateNode + * @instance + */ + Object.defineProperty(GateNode.prototype, "condition", { + get: $util.oneOfGetter($oneOfFields = ["approve", "signal", "sleep"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new GateNode instance using the specified properties. * @function create - * @memberof flyteidl.core.BlobType + * @memberof flyteidl.core.GateNode * @static - * @param {flyteidl.core.IBlobType=} [properties] Properties to set - * @returns {flyteidl.core.BlobType} BlobType instance + * @param {flyteidl.core.IGateNode=} [properties] Properties to set + * @returns {flyteidl.core.GateNode} GateNode instance */ - BlobType.create = function create(properties) { - return new BlobType(properties); + GateNode.create = function create(properties) { + return new GateNode(properties); }; /** - * Encodes the specified BlobType message. Does not implicitly {@link flyteidl.core.BlobType.verify|verify} messages. + * Encodes the specified GateNode message. Does not implicitly {@link flyteidl.core.GateNode.verify|verify} messages. * @function encode - * @memberof flyteidl.core.BlobType + * @memberof flyteidl.core.GateNode * @static - * @param {flyteidl.core.IBlobType} message BlobType message or plain object to encode + * @param {flyteidl.core.IGateNode} message GateNode message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BlobType.encode = function encode(message, writer) { + GateNode.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.format != null && message.hasOwnProperty("format")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.format); - if (message.dimensionality != null && message.hasOwnProperty("dimensionality")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.dimensionality); + if (message.approve != null && message.hasOwnProperty("approve")) + $root.flyteidl.core.ApproveCondition.encode(message.approve, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.signal != null && message.hasOwnProperty("signal")) + $root.flyteidl.core.SignalCondition.encode(message.signal, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.sleep != null && message.hasOwnProperty("sleep")) + $root.flyteidl.core.SleepCondition.encode(message.sleep, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Decodes a BlobType message from the specified reader or buffer. + * Decodes a GateNode message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.BlobType + * @memberof flyteidl.core.GateNode * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.BlobType} BlobType + * @returns {flyteidl.core.GateNode} GateNode * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BlobType.decode = function decode(reader, length) { + GateNode.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.BlobType(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.GateNode(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.format = reader.string(); + message.approve = $root.flyteidl.core.ApproveCondition.decode(reader, reader.uint32()); break; case 2: - message.dimensionality = reader.int32(); + message.signal = $root.flyteidl.core.SignalCondition.decode(reader, reader.uint32()); + break; + case 3: + message.sleep = $root.flyteidl.core.SleepCondition.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -10425,66 +10446,72 @@ }; /** - * Verifies a BlobType message. + * Verifies a GateNode message. * @function verify - * @memberof flyteidl.core.BlobType + * @memberof flyteidl.core.GateNode * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BlobType.verify = function verify(message) { + GateNode.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.format != null && message.hasOwnProperty("format")) - if (!$util.isString(message.format)) - return "format: string expected"; - if (message.dimensionality != null && message.hasOwnProperty("dimensionality")) - switch (message.dimensionality) { - default: - return "dimensionality: enum value expected"; - case 0: - case 1: - break; + var properties = {}; + if (message.approve != null && message.hasOwnProperty("approve")) { + properties.condition = 1; + { + var error = $root.flyteidl.core.ApproveCondition.verify(message.approve); + if (error) + return "approve." + error; + } + } + if (message.signal != null && message.hasOwnProperty("signal")) { + if (properties.condition === 1) + return "condition: multiple values"; + properties.condition = 1; + { + var error = $root.flyteidl.core.SignalCondition.verify(message.signal); + if (error) + return "signal." + error; + } + } + if (message.sleep != null && message.hasOwnProperty("sleep")) { + if (properties.condition === 1) + return "condition: multiple values"; + properties.condition = 1; + { + var error = $root.flyteidl.core.SleepCondition.verify(message.sleep); + if (error) + return "sleep." + error; } + } return null; }; - /** - * BlobDimensionality enum. - * @name flyteidl.core.BlobType.BlobDimensionality - * @enum {string} - * @property {number} SINGLE=0 SINGLE value - * @property {number} MULTIPART=1 MULTIPART value - */ - BlobType.BlobDimensionality = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "SINGLE"] = 0; - values[valuesById[1] = "MULTIPART"] = 1; - return values; - })(); - - return BlobType; + return GateNode; })(); - core.EnumType = (function() { + core.ArrayNode = (function() { /** - * Properties of an EnumType. + * Properties of an ArrayNode. * @memberof flyteidl.core - * @interface IEnumType - * @property {Array.|null} [values] EnumType values + * @interface IArrayNode + * @property {flyteidl.core.INode|null} [node] ArrayNode node + * @property {number|null} [parallelism] ArrayNode parallelism + * @property {number|null} [minSuccesses] ArrayNode minSuccesses + * @property {number|null} [minSuccessRatio] ArrayNode minSuccessRatio */ /** - * Constructs a new EnumType. + * Constructs a new ArrayNode. * @memberof flyteidl.core - * @classdesc Represents an EnumType. - * @implements IEnumType + * @classdesc Represents an ArrayNode. + * @implements IArrayNode * @constructor - * @param {flyteidl.core.IEnumType=} [properties] Properties to set + * @param {flyteidl.core.IArrayNode=} [properties] Properties to set */ - function EnumType(properties) { - this.values = []; + function ArrayNode(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -10492,65 +10519,115 @@ } /** - * EnumType values. - * @member {Array.} values - * @memberof flyteidl.core.EnumType + * ArrayNode node. + * @member {flyteidl.core.INode|null|undefined} node + * @memberof flyteidl.core.ArrayNode + * @instance + */ + ArrayNode.prototype.node = null; + + /** + * ArrayNode parallelism. + * @member {number} parallelism + * @memberof flyteidl.core.ArrayNode + * @instance + */ + ArrayNode.prototype.parallelism = 0; + + /** + * ArrayNode minSuccesses. + * @member {number} minSuccesses + * @memberof flyteidl.core.ArrayNode + * @instance + */ + ArrayNode.prototype.minSuccesses = 0; + + /** + * ArrayNode minSuccessRatio. + * @member {number} minSuccessRatio + * @memberof flyteidl.core.ArrayNode + * @instance + */ + ArrayNode.prototype.minSuccessRatio = 0; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * ArrayNode successCriteria. + * @member {"minSuccesses"|"minSuccessRatio"|undefined} successCriteria + * @memberof flyteidl.core.ArrayNode * @instance */ - EnumType.prototype.values = $util.emptyArray; + Object.defineProperty(ArrayNode.prototype, "successCriteria", { + get: $util.oneOfGetter($oneOfFields = ["minSuccesses", "minSuccessRatio"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * Creates a new EnumType instance using the specified properties. + * Creates a new ArrayNode instance using the specified properties. * @function create - * @memberof flyteidl.core.EnumType + * @memberof flyteidl.core.ArrayNode * @static - * @param {flyteidl.core.IEnumType=} [properties] Properties to set - * @returns {flyteidl.core.EnumType} EnumType instance + * @param {flyteidl.core.IArrayNode=} [properties] Properties to set + * @returns {flyteidl.core.ArrayNode} ArrayNode instance */ - EnumType.create = function create(properties) { - return new EnumType(properties); + ArrayNode.create = function create(properties) { + return new ArrayNode(properties); }; /** - * Encodes the specified EnumType message. Does not implicitly {@link flyteidl.core.EnumType.verify|verify} messages. + * Encodes the specified ArrayNode message. Does not implicitly {@link flyteidl.core.ArrayNode.verify|verify} messages. * @function encode - * @memberof flyteidl.core.EnumType + * @memberof flyteidl.core.ArrayNode * @static - * @param {flyteidl.core.IEnumType} message EnumType message or plain object to encode + * @param {flyteidl.core.IArrayNode} message ArrayNode message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumType.encode = function encode(message, writer) { + ArrayNode.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.values != null && message.values.length) - for (var i = 0; i < message.values.length; ++i) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.values[i]); + if (message.node != null && message.hasOwnProperty("node")) + $root.flyteidl.core.Node.encode(message.node, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.parallelism != null && message.hasOwnProperty("parallelism")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.parallelism); + if (message.minSuccesses != null && message.hasOwnProperty("minSuccesses")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.minSuccesses); + if (message.minSuccessRatio != null && message.hasOwnProperty("minSuccessRatio")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.minSuccessRatio); return writer; }; /** - * Decodes an EnumType message from the specified reader or buffer. + * Decodes an ArrayNode message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.EnumType + * @memberof flyteidl.core.ArrayNode * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.EnumType} EnumType + * @returns {flyteidl.core.ArrayNode} ArrayNode * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumType.decode = function decode(reader, length) { + ArrayNode.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.EnumType(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.ArrayNode(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.values && message.values.length)) - message.values = []; - message.values.push(reader.string()); + message.node = $root.flyteidl.core.Node.decode(reader, reader.uint32()); + break; + case 2: + message.parallelism = reader.uint32(); + break; + case 3: + message.minSuccesses = reader.uint32(); + break; + case 4: + message.minSuccessRatio = reader.float(); break; default: reader.skipType(tag & 7); @@ -10561,48 +10638,67 @@ }; /** - * Verifies an EnumType message. + * Verifies an ArrayNode message. * @function verify - * @memberof flyteidl.core.EnumType + * @memberof flyteidl.core.ArrayNode * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EnumType.verify = function verify(message) { + ArrayNode.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.values != null && message.hasOwnProperty("values")) { - if (!Array.isArray(message.values)) - return "values: array expected"; - for (var i = 0; i < message.values.length; ++i) - if (!$util.isString(message.values[i])) - return "values: string[] expected"; + var properties = {}; + if (message.node != null && message.hasOwnProperty("node")) { + var error = $root.flyteidl.core.Node.verify(message.node); + if (error) + return "node." + error; + } + if (message.parallelism != null && message.hasOwnProperty("parallelism")) + if (!$util.isInteger(message.parallelism)) + return "parallelism: integer expected"; + if (message.minSuccesses != null && message.hasOwnProperty("minSuccesses")) { + properties.successCriteria = 1; + if (!$util.isInteger(message.minSuccesses)) + return "minSuccesses: integer expected"; + } + if (message.minSuccessRatio != null && message.hasOwnProperty("minSuccessRatio")) { + if (properties.successCriteria === 1) + return "successCriteria: multiple values"; + properties.successCriteria = 1; + if (typeof message.minSuccessRatio !== "number") + return "minSuccessRatio: number expected"; } return null; }; - return EnumType; + return ArrayNode; })(); - core.UnionType = (function() { + core.NodeMetadata = (function() { /** - * Properties of an UnionType. + * Properties of a NodeMetadata. * @memberof flyteidl.core - * @interface IUnionType - * @property {Array.|null} [variants] UnionType variants + * @interface INodeMetadata + * @property {string|null} [name] NodeMetadata name + * @property {google.protobuf.IDuration|null} [timeout] NodeMetadata timeout + * @property {flyteidl.core.IRetryStrategy|null} [retries] NodeMetadata retries + * @property {boolean|null} [interruptible] NodeMetadata interruptible + * @property {boolean|null} [cacheable] NodeMetadata cacheable + * @property {string|null} [cacheVersion] NodeMetadata cacheVersion + * @property {boolean|null} [cacheSerializable] NodeMetadata cacheSerializable */ /** - * Constructs a new UnionType. + * Constructs a new NodeMetadata. * @memberof flyteidl.core - * @classdesc Represents an UnionType. - * @implements IUnionType + * @classdesc Represents a NodeMetadata. + * @implements INodeMetadata * @constructor - * @param {flyteidl.core.IUnionType=} [properties] Properties to set + * @param {flyteidl.core.INodeMetadata=} [properties] Properties to set */ - function UnionType(properties) { - this.variants = []; + function NodeMetadata(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -10610,204 +10706,187 @@ } /** - * UnionType variants. - * @member {Array.} variants - * @memberof flyteidl.core.UnionType + * NodeMetadata name. + * @member {string} name + * @memberof flyteidl.core.NodeMetadata * @instance */ - UnionType.prototype.variants = $util.emptyArray; + NodeMetadata.prototype.name = ""; /** - * Creates a new UnionType instance using the specified properties. - * @function create - * @memberof flyteidl.core.UnionType - * @static - * @param {flyteidl.core.IUnionType=} [properties] Properties to set - * @returns {flyteidl.core.UnionType} UnionType instance + * NodeMetadata timeout. + * @member {google.protobuf.IDuration|null|undefined} timeout + * @memberof flyteidl.core.NodeMetadata + * @instance */ - UnionType.create = function create(properties) { - return new UnionType(properties); - }; + NodeMetadata.prototype.timeout = null; /** - * Encodes the specified UnionType message. Does not implicitly {@link flyteidl.core.UnionType.verify|verify} messages. - * @function encode - * @memberof flyteidl.core.UnionType - * @static - * @param {flyteidl.core.IUnionType} message UnionType message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * NodeMetadata retries. + * @member {flyteidl.core.IRetryStrategy|null|undefined} retries + * @memberof flyteidl.core.NodeMetadata + * @instance */ - UnionType.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.variants != null && message.variants.length) - for (var i = 0; i < message.variants.length; ++i) - $root.flyteidl.core.LiteralType.encode(message.variants[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; + NodeMetadata.prototype.retries = null; /** - * Decodes an UnionType message from the specified reader or buffer. - * @function decode - * @memberof flyteidl.core.UnionType - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.UnionType} UnionType - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * NodeMetadata interruptible. + * @member {boolean} interruptible + * @memberof flyteidl.core.NodeMetadata + * @instance */ - UnionType.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.UnionType(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.variants && message.variants.length)) - message.variants = []; - message.variants.push($root.flyteidl.core.LiteralType.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + NodeMetadata.prototype.interruptible = false; /** - * Verifies an UnionType message. - * @function verify - * @memberof flyteidl.core.UnionType - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not + * NodeMetadata cacheable. + * @member {boolean} cacheable + * @memberof flyteidl.core.NodeMetadata + * @instance */ - UnionType.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.variants != null && message.hasOwnProperty("variants")) { - if (!Array.isArray(message.variants)) - return "variants: array expected"; - for (var i = 0; i < message.variants.length; ++i) { - var error = $root.flyteidl.core.LiteralType.verify(message.variants[i]); - if (error) - return "variants." + error; - } - } - return null; - }; + NodeMetadata.prototype.cacheable = false; - return UnionType; - })(); + /** + * NodeMetadata cacheVersion. + * @member {string} cacheVersion + * @memberof flyteidl.core.NodeMetadata + * @instance + */ + NodeMetadata.prototype.cacheVersion = ""; - core.TypeStructure = (function() { + /** + * NodeMetadata cacheSerializable. + * @member {boolean} cacheSerializable + * @memberof flyteidl.core.NodeMetadata + * @instance + */ + NodeMetadata.prototype.cacheSerializable = false; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * Properties of a TypeStructure. - * @memberof flyteidl.core - * @interface ITypeStructure - * @property {string|null} [tag] TypeStructure tag - * @property {Object.|null} [dataclassType] TypeStructure dataclassType + * NodeMetadata interruptibleValue. + * @member {"interruptible"|undefined} interruptibleValue + * @memberof flyteidl.core.NodeMetadata + * @instance */ + Object.defineProperty(NodeMetadata.prototype, "interruptibleValue", { + get: $util.oneOfGetter($oneOfFields = ["interruptible"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * Constructs a new TypeStructure. - * @memberof flyteidl.core - * @classdesc Represents a TypeStructure. - * @implements ITypeStructure - * @constructor - * @param {flyteidl.core.ITypeStructure=} [properties] Properties to set + * NodeMetadata cacheableValue. + * @member {"cacheable"|undefined} cacheableValue + * @memberof flyteidl.core.NodeMetadata + * @instance */ - function TypeStructure(properties) { - this.dataclassType = {}; - 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]]; - } + Object.defineProperty(NodeMetadata.prototype, "cacheableValue", { + get: $util.oneOfGetter($oneOfFields = ["cacheable"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * TypeStructure tag. - * @member {string} tag - * @memberof flyteidl.core.TypeStructure + * NodeMetadata cacheVersionValue. + * @member {"cacheVersion"|undefined} cacheVersionValue + * @memberof flyteidl.core.NodeMetadata * @instance */ - TypeStructure.prototype.tag = ""; + Object.defineProperty(NodeMetadata.prototype, "cacheVersionValue", { + get: $util.oneOfGetter($oneOfFields = ["cacheVersion"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * TypeStructure dataclassType. - * @member {Object.} dataclassType - * @memberof flyteidl.core.TypeStructure + * NodeMetadata cacheSerializableValue. + * @member {"cacheSerializable"|undefined} cacheSerializableValue + * @memberof flyteidl.core.NodeMetadata * @instance */ - TypeStructure.prototype.dataclassType = $util.emptyObject; + Object.defineProperty(NodeMetadata.prototype, "cacheSerializableValue", { + get: $util.oneOfGetter($oneOfFields = ["cacheSerializable"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * Creates a new TypeStructure instance using the specified properties. + * Creates a new NodeMetadata instance using the specified properties. * @function create - * @memberof flyteidl.core.TypeStructure + * @memberof flyteidl.core.NodeMetadata * @static - * @param {flyteidl.core.ITypeStructure=} [properties] Properties to set - * @returns {flyteidl.core.TypeStructure} TypeStructure instance + * @param {flyteidl.core.INodeMetadata=} [properties] Properties to set + * @returns {flyteidl.core.NodeMetadata} NodeMetadata instance */ - TypeStructure.create = function create(properties) { - return new TypeStructure(properties); + NodeMetadata.create = function create(properties) { + return new NodeMetadata(properties); }; /** - * Encodes the specified TypeStructure message. Does not implicitly {@link flyteidl.core.TypeStructure.verify|verify} messages. + * Encodes the specified NodeMetadata message. Does not implicitly {@link flyteidl.core.NodeMetadata.verify|verify} messages. * @function encode - * @memberof flyteidl.core.TypeStructure + * @memberof flyteidl.core.NodeMetadata * @static - * @param {flyteidl.core.ITypeStructure} message TypeStructure message or plain object to encode + * @param {flyteidl.core.INodeMetadata} message NodeMetadata message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TypeStructure.encode = function encode(message, writer) { + NodeMetadata.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.tag != null && message.hasOwnProperty("tag")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.tag); - if (message.dataclassType != null && message.hasOwnProperty("dataclassType")) - for (var keys = Object.keys(message.dataclassType), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.flyteidl.core.LiteralType.encode(message.dataclassType[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.timeout != null && message.hasOwnProperty("timeout")) + $root.google.protobuf.Duration.encode(message.timeout, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.retries != null && message.hasOwnProperty("retries")) + $root.flyteidl.core.RetryStrategy.encode(message.retries, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.interruptible != null && message.hasOwnProperty("interruptible")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.interruptible); + if (message.cacheable != null && message.hasOwnProperty("cacheable")) + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.cacheable); + if (message.cacheVersion != null && message.hasOwnProperty("cacheVersion")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.cacheVersion); + if (message.cacheSerializable != null && message.hasOwnProperty("cacheSerializable")) + writer.uint32(/* id 9, wireType 0 =*/72).bool(message.cacheSerializable); return writer; }; /** - * Decodes a TypeStructure message from the specified reader or buffer. + * Decodes a NodeMetadata message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.TypeStructure + * @memberof flyteidl.core.NodeMetadata * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.TypeStructure} TypeStructure + * @returns {flyteidl.core.NodeMetadata} NodeMetadata * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TypeStructure.decode = function decode(reader, length) { + NodeMetadata.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.TypeStructure(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.NodeMetadata(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.tag = reader.string(); + message.name = reader.string(); break; - case 2: - reader.skip().pos++; - if (message.dataclassType === $util.emptyObject) - message.dataclassType = {}; - key = reader.string(); - reader.pos++; - message.dataclassType[key] = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + case 4: + message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + case 5: + message.retries = $root.flyteidl.core.RetryStrategy.decode(reader, reader.uint32()); + break; + case 6: + message.interruptible = reader.bool(); + break; + case 7: + message.cacheable = reader.bool(); + break; + case 8: + message.cacheVersion = reader.string(); + break; + case 9: + message.cacheSerializable = reader.bool(); break; default: reader.skipType(tag & 7); @@ -10818,53 +10897,75 @@ }; /** - * Verifies a TypeStructure message. + * Verifies a NodeMetadata message. * @function verify - * @memberof flyteidl.core.TypeStructure + * @memberof flyteidl.core.NodeMetadata * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TypeStructure.verify = function verify(message) { + NodeMetadata.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.tag != null && message.hasOwnProperty("tag")) - if (!$util.isString(message.tag)) - return "tag: string expected"; - if (message.dataclassType != null && message.hasOwnProperty("dataclassType")) { - if (!$util.isObject(message.dataclassType)) - return "dataclassType: object expected"; - var key = Object.keys(message.dataclassType); - for (var i = 0; i < key.length; ++i) { - var error = $root.flyteidl.core.LiteralType.verify(message.dataclassType[key[i]]); - if (error) - return "dataclassType." + error; - } + var properties = {}; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.timeout != null && message.hasOwnProperty("timeout")) { + var error = $root.google.protobuf.Duration.verify(message.timeout); + if (error) + return "timeout." + error; + } + if (message.retries != null && message.hasOwnProperty("retries")) { + var error = $root.flyteidl.core.RetryStrategy.verify(message.retries); + if (error) + return "retries." + error; + } + if (message.interruptible != null && message.hasOwnProperty("interruptible")) { + properties.interruptibleValue = 1; + if (typeof message.interruptible !== "boolean") + return "interruptible: boolean expected"; + } + if (message.cacheable != null && message.hasOwnProperty("cacheable")) { + properties.cacheableValue = 1; + if (typeof message.cacheable !== "boolean") + return "cacheable: boolean expected"; + } + if (message.cacheVersion != null && message.hasOwnProperty("cacheVersion")) { + properties.cacheVersionValue = 1; + if (!$util.isString(message.cacheVersion)) + return "cacheVersion: string expected"; + } + if (message.cacheSerializable != null && message.hasOwnProperty("cacheSerializable")) { + properties.cacheSerializableValue = 1; + if (typeof message.cacheSerializable !== "boolean") + return "cacheSerializable: boolean expected"; } return null; }; - return TypeStructure; + return NodeMetadata; })(); - core.TypeAnnotation = (function() { + core.Alias = (function() { /** - * Properties of a TypeAnnotation. + * Properties of an Alias. * @memberof flyteidl.core - * @interface ITypeAnnotation - * @property {google.protobuf.IStruct|null} [annotations] TypeAnnotation annotations + * @interface IAlias + * @property {string|null} ["var"] Alias var + * @property {string|null} [alias] Alias alias */ /** - * Constructs a new TypeAnnotation. + * Constructs a new Alias. * @memberof flyteidl.core - * @classdesc Represents a TypeAnnotation. - * @implements ITypeAnnotation + * @classdesc Represents an Alias. + * @implements IAlias * @constructor - * @param {flyteidl.core.ITypeAnnotation=} [properties] Properties to set + * @param {flyteidl.core.IAlias=} [properties] Properties to set */ - function TypeAnnotation(properties) { + function Alias(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -10872,62 +10973,75 @@ } /** - * TypeAnnotation annotations. - * @member {google.protobuf.IStruct|null|undefined} annotations - * @memberof flyteidl.core.TypeAnnotation + * Alias var. + * @member {string} var + * @memberof flyteidl.core.Alias * @instance */ - TypeAnnotation.prototype.annotations = null; + Alias.prototype["var"] = ""; /** - * Creates a new TypeAnnotation instance using the specified properties. + * Alias alias. + * @member {string} alias + * @memberof flyteidl.core.Alias + * @instance + */ + Alias.prototype.alias = ""; + + /** + * Creates a new Alias instance using the specified properties. * @function create - * @memberof flyteidl.core.TypeAnnotation + * @memberof flyteidl.core.Alias * @static - * @param {flyteidl.core.ITypeAnnotation=} [properties] Properties to set - * @returns {flyteidl.core.TypeAnnotation} TypeAnnotation instance + * @param {flyteidl.core.IAlias=} [properties] Properties to set + * @returns {flyteidl.core.Alias} Alias instance */ - TypeAnnotation.create = function create(properties) { - return new TypeAnnotation(properties); + Alias.create = function create(properties) { + return new Alias(properties); }; /** - * Encodes the specified TypeAnnotation message. Does not implicitly {@link flyteidl.core.TypeAnnotation.verify|verify} messages. + * Encodes the specified Alias message. Does not implicitly {@link flyteidl.core.Alias.verify|verify} messages. * @function encode - * @memberof flyteidl.core.TypeAnnotation + * @memberof flyteidl.core.Alias * @static - * @param {flyteidl.core.ITypeAnnotation} message TypeAnnotation message or plain object to encode + * @param {flyteidl.core.IAlias} message Alias message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TypeAnnotation.encode = function encode(message, writer) { + Alias.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.annotations != null && message.hasOwnProperty("annotations")) - $root.google.protobuf.Struct.encode(message.annotations, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message["var"] != null && message.hasOwnProperty("var")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message["var"]); + if (message.alias != null && message.hasOwnProperty("alias")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.alias); return writer; }; /** - * Decodes a TypeAnnotation message from the specified reader or buffer. + * Decodes an Alias message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.TypeAnnotation + * @memberof flyteidl.core.Alias * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.TypeAnnotation} TypeAnnotation + * @returns {flyteidl.core.Alias} Alias * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TypeAnnotation.decode = function decode(reader, length) { + Alias.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.TypeAnnotation(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Alias(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.annotations = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + message["var"] = reader.string(); + break; + case 2: + message.alias = reader.string(); break; default: reader.skipType(tag & 7); @@ -10938,55 +11052,58 @@ }; /** - * Verifies a TypeAnnotation message. + * Verifies an Alias message. * @function verify - * @memberof flyteidl.core.TypeAnnotation + * @memberof flyteidl.core.Alias * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TypeAnnotation.verify = function verify(message) { + Alias.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.annotations != null && message.hasOwnProperty("annotations")) { - var error = $root.google.protobuf.Struct.verify(message.annotations); - if (error) - return "annotations." + error; - } + if (message["var"] != null && message.hasOwnProperty("var")) + if (!$util.isString(message["var"])) + return "var: string expected"; + if (message.alias != null && message.hasOwnProperty("alias")) + if (!$util.isString(message.alias)) + return "alias: string expected"; return null; }; - return TypeAnnotation; + return Alias; })(); - core.LiteralType = (function() { - - /** - * Properties of a LiteralType. - * @memberof flyteidl.core - * @interface ILiteralType - * @property {flyteidl.core.SimpleType|null} [simple] LiteralType simple - * @property {flyteidl.core.ISchemaType|null} [schema] LiteralType schema - * @property {flyteidl.core.ILiteralType|null} [collectionType] LiteralType collectionType - * @property {flyteidl.core.ILiteralType|null} [mapValueType] LiteralType mapValueType - * @property {flyteidl.core.IBlobType|null} [blob] LiteralType blob - * @property {flyteidl.core.IEnumType|null} [enumType] LiteralType enumType - * @property {flyteidl.core.IStructuredDatasetType|null} [structuredDatasetType] LiteralType structuredDatasetType - * @property {flyteidl.core.IUnionType|null} [unionType] LiteralType unionType - * @property {google.protobuf.IStruct|null} [metadata] LiteralType metadata - * @property {flyteidl.core.ITypeAnnotation|null} [annotation] LiteralType annotation - * @property {flyteidl.core.ITypeStructure|null} [structure] LiteralType structure + core.Node = (function() { + + /** + * Properties of a Node. + * @memberof flyteidl.core + * @interface INode + * @property {string|null} [id] Node id + * @property {flyteidl.core.INodeMetadata|null} [metadata] Node metadata + * @property {Array.|null} [inputs] Node inputs + * @property {Array.|null} [upstreamNodeIds] Node upstreamNodeIds + * @property {Array.|null} [outputAliases] Node outputAliases + * @property {flyteidl.core.ITaskNode|null} [taskNode] Node taskNode + * @property {flyteidl.core.IWorkflowNode|null} [workflowNode] Node workflowNode + * @property {flyteidl.core.IBranchNode|null} [branchNode] Node branchNode + * @property {flyteidl.core.IGateNode|null} [gateNode] Node gateNode + * @property {flyteidl.core.IArrayNode|null} [arrayNode] Node arrayNode */ /** - * Constructs a new LiteralType. + * Constructs a new Node. * @memberof flyteidl.core - * @classdesc Represents a LiteralType. - * @implements ILiteralType + * @classdesc Represents a Node. + * @implements INode * @constructor - * @param {flyteidl.core.ILiteralType=} [properties] Properties to set + * @param {flyteidl.core.INode=} [properties] Properties to set */ - function LiteralType(properties) { + function Node(properties) { + this.inputs = []; + this.upstreamNodeIds = []; + this.outputAliases = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -10994,206 +11111,202 @@ } /** - * LiteralType simple. - * @member {flyteidl.core.SimpleType} simple - * @memberof flyteidl.core.LiteralType - * @instance - */ - LiteralType.prototype.simple = 0; - - /** - * LiteralType schema. - * @member {flyteidl.core.ISchemaType|null|undefined} schema - * @memberof flyteidl.core.LiteralType + * Node id. + * @member {string} id + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.schema = null; + Node.prototype.id = ""; /** - * LiteralType collectionType. - * @member {flyteidl.core.ILiteralType|null|undefined} collectionType - * @memberof flyteidl.core.LiteralType + * Node metadata. + * @member {flyteidl.core.INodeMetadata|null|undefined} metadata + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.collectionType = null; + Node.prototype.metadata = null; /** - * LiteralType mapValueType. - * @member {flyteidl.core.ILiteralType|null|undefined} mapValueType - * @memberof flyteidl.core.LiteralType + * Node inputs. + * @member {Array.} inputs + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.mapValueType = null; + Node.prototype.inputs = $util.emptyArray; /** - * LiteralType blob. - * @member {flyteidl.core.IBlobType|null|undefined} blob - * @memberof flyteidl.core.LiteralType + * Node upstreamNodeIds. + * @member {Array.} upstreamNodeIds + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.blob = null; + Node.prototype.upstreamNodeIds = $util.emptyArray; /** - * LiteralType enumType. - * @member {flyteidl.core.IEnumType|null|undefined} enumType - * @memberof flyteidl.core.LiteralType + * Node outputAliases. + * @member {Array.} outputAliases + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.enumType = null; + Node.prototype.outputAliases = $util.emptyArray; /** - * LiteralType structuredDatasetType. - * @member {flyteidl.core.IStructuredDatasetType|null|undefined} structuredDatasetType - * @memberof flyteidl.core.LiteralType + * Node taskNode. + * @member {flyteidl.core.ITaskNode|null|undefined} taskNode + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.structuredDatasetType = null; + Node.prototype.taskNode = null; /** - * LiteralType unionType. - * @member {flyteidl.core.IUnionType|null|undefined} unionType - * @memberof flyteidl.core.LiteralType + * Node workflowNode. + * @member {flyteidl.core.IWorkflowNode|null|undefined} workflowNode + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.unionType = null; + Node.prototype.workflowNode = null; /** - * LiteralType metadata. - * @member {google.protobuf.IStruct|null|undefined} metadata - * @memberof flyteidl.core.LiteralType + * Node branchNode. + * @member {flyteidl.core.IBranchNode|null|undefined} branchNode + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.metadata = null; + Node.prototype.branchNode = null; /** - * LiteralType annotation. - * @member {flyteidl.core.ITypeAnnotation|null|undefined} annotation - * @memberof flyteidl.core.LiteralType + * Node gateNode. + * @member {flyteidl.core.IGateNode|null|undefined} gateNode + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.annotation = null; + Node.prototype.gateNode = null; /** - * LiteralType structure. - * @member {flyteidl.core.ITypeStructure|null|undefined} structure - * @memberof flyteidl.core.LiteralType + * Node arrayNode. + * @member {flyteidl.core.IArrayNode|null|undefined} arrayNode + * @memberof flyteidl.core.Node * @instance */ - LiteralType.prototype.structure = null; + Node.prototype.arrayNode = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; /** - * LiteralType type. - * @member {"simple"|"schema"|"collectionType"|"mapValueType"|"blob"|"enumType"|"structuredDatasetType"|"unionType"|undefined} type - * @memberof flyteidl.core.LiteralType + * Node target. + * @member {"taskNode"|"workflowNode"|"branchNode"|"gateNode"|"arrayNode"|undefined} target + * @memberof flyteidl.core.Node * @instance */ - Object.defineProperty(LiteralType.prototype, "type", { - get: $util.oneOfGetter($oneOfFields = ["simple", "schema", "collectionType", "mapValueType", "blob", "enumType", "structuredDatasetType", "unionType"]), + Object.defineProperty(Node.prototype, "target", { + get: $util.oneOfGetter($oneOfFields = ["taskNode", "workflowNode", "branchNode", "gateNode", "arrayNode"]), set: $util.oneOfSetter($oneOfFields) }); /** - * Creates a new LiteralType instance using the specified properties. + * Creates a new Node instance using the specified properties. * @function create - * @memberof flyteidl.core.LiteralType + * @memberof flyteidl.core.Node * @static - * @param {flyteidl.core.ILiteralType=} [properties] Properties to set - * @returns {flyteidl.core.LiteralType} LiteralType instance + * @param {flyteidl.core.INode=} [properties] Properties to set + * @returns {flyteidl.core.Node} Node instance */ - LiteralType.create = function create(properties) { - return new LiteralType(properties); + Node.create = function create(properties) { + return new Node(properties); }; /** - * Encodes the specified LiteralType message. Does not implicitly {@link flyteidl.core.LiteralType.verify|verify} messages. + * Encodes the specified Node message. Does not implicitly {@link flyteidl.core.Node.verify|verify} messages. * @function encode - * @memberof flyteidl.core.LiteralType + * @memberof flyteidl.core.Node * @static - * @param {flyteidl.core.ILiteralType} message LiteralType message or plain object to encode + * @param {flyteidl.core.INode} message Node message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LiteralType.encode = function encode(message, writer) { + Node.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.simple != null && message.hasOwnProperty("simple")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.simple); - if (message.schema != null && message.hasOwnProperty("schema")) - $root.flyteidl.core.SchemaType.encode(message.schema, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.collectionType != null && message.hasOwnProperty("collectionType")) - $root.flyteidl.core.LiteralType.encode(message.collectionType, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.mapValueType != null && message.hasOwnProperty("mapValueType")) - $root.flyteidl.core.LiteralType.encode(message.mapValueType, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.blob != null && message.hasOwnProperty("blob")) - $root.flyteidl.core.BlobType.encode(message.blob, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.id); if (message.metadata != null && message.hasOwnProperty("metadata")) - $root.google.protobuf.Struct.encode(message.metadata, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.enumType != null && message.hasOwnProperty("enumType")) - $root.flyteidl.core.EnumType.encode(message.enumType, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.structuredDatasetType != null && message.hasOwnProperty("structuredDatasetType")) - $root.flyteidl.core.StructuredDatasetType.encode(message.structuredDatasetType, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.annotation != null && message.hasOwnProperty("annotation")) - $root.flyteidl.core.TypeAnnotation.encode(message.annotation, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.unionType != null && message.hasOwnProperty("unionType")) - $root.flyteidl.core.UnionType.encode(message.unionType, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); - if (message.structure != null && message.hasOwnProperty("structure")) - $root.flyteidl.core.TypeStructure.encode(message.structure, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + $root.flyteidl.core.NodeMetadata.encode(message.metadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.inputs != null && message.inputs.length) + for (var i = 0; i < message.inputs.length; ++i) + $root.flyteidl.core.Binding.encode(message.inputs[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.upstreamNodeIds != null && message.upstreamNodeIds.length) + for (var i = 0; i < message.upstreamNodeIds.length; ++i) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.upstreamNodeIds[i]); + if (message.outputAliases != null && message.outputAliases.length) + for (var i = 0; i < message.outputAliases.length; ++i) + $root.flyteidl.core.Alias.encode(message.outputAliases[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.taskNode != null && message.hasOwnProperty("taskNode")) + $root.flyteidl.core.TaskNode.encode(message.taskNode, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.workflowNode != null && message.hasOwnProperty("workflowNode")) + $root.flyteidl.core.WorkflowNode.encode(message.workflowNode, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.branchNode != null && message.hasOwnProperty("branchNode")) + $root.flyteidl.core.BranchNode.encode(message.branchNode, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.gateNode != null && message.hasOwnProperty("gateNode")) + $root.flyteidl.core.GateNode.encode(message.gateNode, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.arrayNode != null && message.hasOwnProperty("arrayNode")) + $root.flyteidl.core.ArrayNode.encode(message.arrayNode, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); return writer; }; /** - * Decodes a LiteralType message from the specified reader or buffer. + * Decodes a Node message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.LiteralType + * @memberof flyteidl.core.Node * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.LiteralType} LiteralType + * @returns {flyteidl.core.Node} Node * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LiteralType.decode = function decode(reader, length) { + Node.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.LiteralType(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Node(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.simple = reader.int32(); + message.id = reader.string(); break; case 2: - message.schema = $root.flyteidl.core.SchemaType.decode(reader, reader.uint32()); + message.metadata = $root.flyteidl.core.NodeMetadata.decode(reader, reader.uint32()); break; case 3: - message.collectionType = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + if (!(message.inputs && message.inputs.length)) + message.inputs = []; + message.inputs.push($root.flyteidl.core.Binding.decode(reader, reader.uint32())); break; case 4: - message.mapValueType = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); + if (!(message.upstreamNodeIds && message.upstreamNodeIds.length)) + message.upstreamNodeIds = []; + message.upstreamNodeIds.push(reader.string()); break; case 5: - message.blob = $root.flyteidl.core.BlobType.decode(reader, reader.uint32()); + if (!(message.outputAliases && message.outputAliases.length)) + message.outputAliases = []; + message.outputAliases.push($root.flyteidl.core.Alias.decode(reader, reader.uint32())); + break; + case 6: + message.taskNode = $root.flyteidl.core.TaskNode.decode(reader, reader.uint32()); break; case 7: - message.enumType = $root.flyteidl.core.EnumType.decode(reader, reader.uint32()); + message.workflowNode = $root.flyteidl.core.WorkflowNode.decode(reader, reader.uint32()); break; case 8: - message.structuredDatasetType = $root.flyteidl.core.StructuredDatasetType.decode(reader, reader.uint32()); - break; - case 10: - message.unionType = $root.flyteidl.core.UnionType.decode(reader, reader.uint32()); - break; - case 6: - message.metadata = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + message.branchNode = $root.flyteidl.core.BranchNode.decode(reader, reader.uint32()); break; case 9: - message.annotation = $root.flyteidl.core.TypeAnnotation.decode(reader, reader.uint32()); + message.gateNode = $root.flyteidl.core.GateNode.decode(reader, reader.uint32()); break; - case 11: - message.structure = $root.flyteidl.core.TypeStructure.decode(reader, reader.uint32()); + case 10: + message.arrayNode = $root.flyteidl.core.ArrayNode.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -11204,147 +11317,299 @@ }; /** - * Verifies a LiteralType message. + * Verifies a Node message. * @function verify - * @memberof flyteidl.core.LiteralType + * @memberof flyteidl.core.Node * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LiteralType.verify = function verify(message) { + Node.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.simple != null && message.hasOwnProperty("simple")) { - properties.type = 1; - switch (message.simple) { - default: - return "simple: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - break; - } + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isString(message.id)) + return "id: string expected"; + if (message.metadata != null && message.hasOwnProperty("metadata")) { + var error = $root.flyteidl.core.NodeMetadata.verify(message.metadata); + if (error) + return "metadata." + error; } - if (message.schema != null && message.hasOwnProperty("schema")) { - if (properties.type === 1) - return "type: multiple values"; - properties.type = 1; - { - var error = $root.flyteidl.core.SchemaType.verify(message.schema); + if (message.inputs != null && message.hasOwnProperty("inputs")) { + if (!Array.isArray(message.inputs)) + return "inputs: array expected"; + for (var i = 0; i < message.inputs.length; ++i) { + var error = $root.flyteidl.core.Binding.verify(message.inputs[i]); if (error) - return "schema." + error; + return "inputs." + error; } } - if (message.collectionType != null && message.hasOwnProperty("collectionType")) { - if (properties.type === 1) - return "type: multiple values"; - properties.type = 1; - { - var error = $root.flyteidl.core.LiteralType.verify(message.collectionType); + if (message.upstreamNodeIds != null && message.hasOwnProperty("upstreamNodeIds")) { + if (!Array.isArray(message.upstreamNodeIds)) + return "upstreamNodeIds: array expected"; + for (var i = 0; i < message.upstreamNodeIds.length; ++i) + if (!$util.isString(message.upstreamNodeIds[i])) + return "upstreamNodeIds: string[] expected"; + } + if (message.outputAliases != null && message.hasOwnProperty("outputAliases")) { + if (!Array.isArray(message.outputAliases)) + return "outputAliases: array expected"; + for (var i = 0; i < message.outputAliases.length; ++i) { + var error = $root.flyteidl.core.Alias.verify(message.outputAliases[i]); if (error) - return "collectionType." + error; + return "outputAliases." + error; } } - if (message.mapValueType != null && message.hasOwnProperty("mapValueType")) { - if (properties.type === 1) - return "type: multiple values"; - properties.type = 1; + if (message.taskNode != null && message.hasOwnProperty("taskNode")) { + properties.target = 1; { - var error = $root.flyteidl.core.LiteralType.verify(message.mapValueType); + var error = $root.flyteidl.core.TaskNode.verify(message.taskNode); if (error) - return "mapValueType." + error; + return "taskNode." + error; } } - if (message.blob != null && message.hasOwnProperty("blob")) { - if (properties.type === 1) - return "type: multiple values"; - properties.type = 1; + if (message.workflowNode != null && message.hasOwnProperty("workflowNode")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; { - var error = $root.flyteidl.core.BlobType.verify(message.blob); + var error = $root.flyteidl.core.WorkflowNode.verify(message.workflowNode); if (error) - return "blob." + error; + return "workflowNode." + error; } } - if (message.enumType != null && message.hasOwnProperty("enumType")) { - if (properties.type === 1) - return "type: multiple values"; - properties.type = 1; + if (message.branchNode != null && message.hasOwnProperty("branchNode")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; { - var error = $root.flyteidl.core.EnumType.verify(message.enumType); + var error = $root.flyteidl.core.BranchNode.verify(message.branchNode); if (error) - return "enumType." + error; + return "branchNode." + error; } } - if (message.structuredDatasetType != null && message.hasOwnProperty("structuredDatasetType")) { - if (properties.type === 1) - return "type: multiple values"; - properties.type = 1; + if (message.gateNode != null && message.hasOwnProperty("gateNode")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; { - var error = $root.flyteidl.core.StructuredDatasetType.verify(message.structuredDatasetType); + var error = $root.flyteidl.core.GateNode.verify(message.gateNode); if (error) - return "structuredDatasetType." + error; + return "gateNode." + error; } } - if (message.unionType != null && message.hasOwnProperty("unionType")) { - if (properties.type === 1) - return "type: multiple values"; - properties.type = 1; + if (message.arrayNode != null && message.hasOwnProperty("arrayNode")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; { - var error = $root.flyteidl.core.UnionType.verify(message.unionType); + var error = $root.flyteidl.core.ArrayNode.verify(message.arrayNode); if (error) - return "unionType." + error; + return "arrayNode." + error; } } - if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.protobuf.Struct.verify(message.metadata); - if (error) - return "metadata." + error; - } - if (message.annotation != null && message.hasOwnProperty("annotation")) { - var error = $root.flyteidl.core.TypeAnnotation.verify(message.annotation); - if (error) - return "annotation." + error; + return null; + }; + + return Node; + })(); + + core.WorkflowMetadata = (function() { + + /** + * Properties of a WorkflowMetadata. + * @memberof flyteidl.core + * @interface IWorkflowMetadata + * @property {flyteidl.core.IQualityOfService|null} [qualityOfService] WorkflowMetadata qualityOfService + * @property {flyteidl.core.WorkflowMetadata.OnFailurePolicy|null} [onFailure] WorkflowMetadata onFailure + * @property {Object.|null} [tags] WorkflowMetadata tags + */ + + /** + * Constructs a new WorkflowMetadata. + * @memberof flyteidl.core + * @classdesc Represents a WorkflowMetadata. + * @implements IWorkflowMetadata + * @constructor + * @param {flyteidl.core.IWorkflowMetadata=} [properties] Properties to set + */ + function WorkflowMetadata(properties) { + this.tags = {}; + 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]]; + } + + /** + * WorkflowMetadata qualityOfService. + * @member {flyteidl.core.IQualityOfService|null|undefined} qualityOfService + * @memberof flyteidl.core.WorkflowMetadata + * @instance + */ + WorkflowMetadata.prototype.qualityOfService = null; + + /** + * WorkflowMetadata onFailure. + * @member {flyteidl.core.WorkflowMetadata.OnFailurePolicy} onFailure + * @memberof flyteidl.core.WorkflowMetadata + * @instance + */ + WorkflowMetadata.prototype.onFailure = 0; + + /** + * WorkflowMetadata tags. + * @member {Object.} tags + * @memberof flyteidl.core.WorkflowMetadata + * @instance + */ + WorkflowMetadata.prototype.tags = $util.emptyObject; + + /** + * Creates a new WorkflowMetadata instance using the specified properties. + * @function create + * @memberof flyteidl.core.WorkflowMetadata + * @static + * @param {flyteidl.core.IWorkflowMetadata=} [properties] Properties to set + * @returns {flyteidl.core.WorkflowMetadata} WorkflowMetadata instance + */ + WorkflowMetadata.create = function create(properties) { + return new WorkflowMetadata(properties); + }; + + /** + * Encodes the specified WorkflowMetadata message. Does not implicitly {@link flyteidl.core.WorkflowMetadata.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.WorkflowMetadata + * @static + * @param {flyteidl.core.IWorkflowMetadata} message WorkflowMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WorkflowMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) + $root.flyteidl.core.QualityOfService.encode(message.qualityOfService, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.onFailure != null && message.hasOwnProperty("onFailure")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.onFailure); + if (message.tags != null && message.hasOwnProperty("tags")) + for (var keys = Object.keys(message.tags), i = 0; i < keys.length; ++i) + writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.tags[keys[i]]).ldelim(); + return writer; + }; + + /** + * Decodes a WorkflowMetadata message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.WorkflowMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.WorkflowMetadata} WorkflowMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WorkflowMetadata.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.WorkflowMetadata(), key; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.qualityOfService = $root.flyteidl.core.QualityOfService.decode(reader, reader.uint32()); + break; + case 2: + message.onFailure = reader.int32(); + break; + case 3: + reader.skip().pos++; + if (message.tags === $util.emptyObject) + message.tags = {}; + key = reader.string(); + reader.pos++; + message.tags[key] = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } } - if (message.structure != null && message.hasOwnProperty("structure")) { - var error = $root.flyteidl.core.TypeStructure.verify(message.structure); + return message; + }; + + /** + * Verifies a WorkflowMetadata message. + * @function verify + * @memberof flyteidl.core.WorkflowMetadata + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + WorkflowMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) { + var error = $root.flyteidl.core.QualityOfService.verify(message.qualityOfService); if (error) - return "structure." + error; + return "qualityOfService." + error; + } + if (message.onFailure != null && message.hasOwnProperty("onFailure")) + switch (message.onFailure) { + default: + return "onFailure: enum value expected"; + case 0: + case 1: + break; + } + if (message.tags != null && message.hasOwnProperty("tags")) { + if (!$util.isObject(message.tags)) + return "tags: object expected"; + var key = Object.keys(message.tags); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.tags[key[i]])) + return "tags: string{k:string} expected"; } return null; }; - return LiteralType; + /** + * OnFailurePolicy enum. + * @name flyteidl.core.WorkflowMetadata.OnFailurePolicy + * @enum {string} + * @property {number} FAIL_IMMEDIATELY=0 FAIL_IMMEDIATELY value + * @property {number} FAIL_AFTER_EXECUTABLE_NODES_COMPLETE=1 FAIL_AFTER_EXECUTABLE_NODES_COMPLETE value + */ + WorkflowMetadata.OnFailurePolicy = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "FAIL_IMMEDIATELY"] = 0; + values[valuesById[1] = "FAIL_AFTER_EXECUTABLE_NODES_COMPLETE"] = 1; + return values; + })(); + + return WorkflowMetadata; })(); - core.OutputReference = (function() { + core.WorkflowMetadataDefaults = (function() { /** - * Properties of an OutputReference. + * Properties of a WorkflowMetadataDefaults. * @memberof flyteidl.core - * @interface IOutputReference - * @property {string|null} [nodeId] OutputReference nodeId - * @property {string|null} ["var"] OutputReference var - * @property {Array.|null} [attrPath] OutputReference attrPath + * @interface IWorkflowMetadataDefaults + * @property {boolean|null} [interruptible] WorkflowMetadataDefaults interruptible */ /** - * Constructs a new OutputReference. + * Constructs a new WorkflowMetadataDefaults. * @memberof flyteidl.core - * @classdesc Represents an OutputReference. - * @implements IOutputReference + * @classdesc Represents a WorkflowMetadataDefaults. + * @implements IWorkflowMetadataDefaults * @constructor - * @param {flyteidl.core.IOutputReference=} [properties] Properties to set + * @param {flyteidl.core.IWorkflowMetadataDefaults=} [properties] Properties to set */ - function OutputReference(properties) { - this.attrPath = []; + function WorkflowMetadataDefaults(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -11352,91 +11617,62 @@ } /** - * OutputReference nodeId. - * @member {string} nodeId - * @memberof flyteidl.core.OutputReference - * @instance - */ - OutputReference.prototype.nodeId = ""; - - /** - * OutputReference var. - * @member {string} var - * @memberof flyteidl.core.OutputReference - * @instance - */ - OutputReference.prototype["var"] = ""; - - /** - * OutputReference attrPath. - * @member {Array.} attrPath - * @memberof flyteidl.core.OutputReference + * WorkflowMetadataDefaults interruptible. + * @member {boolean} interruptible + * @memberof flyteidl.core.WorkflowMetadataDefaults * @instance */ - OutputReference.prototype.attrPath = $util.emptyArray; + WorkflowMetadataDefaults.prototype.interruptible = false; /** - * Creates a new OutputReference instance using the specified properties. + * Creates a new WorkflowMetadataDefaults instance using the specified properties. * @function create - * @memberof flyteidl.core.OutputReference + * @memberof flyteidl.core.WorkflowMetadataDefaults * @static - * @param {flyteidl.core.IOutputReference=} [properties] Properties to set - * @returns {flyteidl.core.OutputReference} OutputReference instance + * @param {flyteidl.core.IWorkflowMetadataDefaults=} [properties] Properties to set + * @returns {flyteidl.core.WorkflowMetadataDefaults} WorkflowMetadataDefaults instance */ - OutputReference.create = function create(properties) { - return new OutputReference(properties); + WorkflowMetadataDefaults.create = function create(properties) { + return new WorkflowMetadataDefaults(properties); }; /** - * Encodes the specified OutputReference message. Does not implicitly {@link flyteidl.core.OutputReference.verify|verify} messages. + * Encodes the specified WorkflowMetadataDefaults message. Does not implicitly {@link flyteidl.core.WorkflowMetadataDefaults.verify|verify} messages. * @function encode - * @memberof flyteidl.core.OutputReference + * @memberof flyteidl.core.WorkflowMetadataDefaults * @static - * @param {flyteidl.core.IOutputReference} message OutputReference message or plain object to encode + * @param {flyteidl.core.IWorkflowMetadataDefaults} message WorkflowMetadataDefaults message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OutputReference.encode = function encode(message, writer) { + WorkflowMetadataDefaults.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.nodeId != null && message.hasOwnProperty("nodeId")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.nodeId); - if (message["var"] != null && message.hasOwnProperty("var")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message["var"]); - if (message.attrPath != null && message.attrPath.length) - for (var i = 0; i < message.attrPath.length; ++i) - $root.flyteidl.core.PromiseAttribute.encode(message.attrPath[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.interruptible != null && message.hasOwnProperty("interruptible")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.interruptible); return writer; }; /** - * Decodes an OutputReference message from the specified reader or buffer. + * Decodes a WorkflowMetadataDefaults message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.OutputReference + * @memberof flyteidl.core.WorkflowMetadataDefaults * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.OutputReference} OutputReference + * @returns {flyteidl.core.WorkflowMetadataDefaults} WorkflowMetadataDefaults * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - OutputReference.decode = function decode(reader, length) { + WorkflowMetadataDefaults.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.OutputReference(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.WorkflowMetadataDefaults(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.nodeId = reader.string(); - break; - case 2: - message["var"] = reader.string(); - break; - case 3: - if (!(message.attrPath && message.attrPath.length)) - message.attrPath = []; - message.attrPath.push($root.flyteidl.core.PromiseAttribute.decode(reader, reader.uint32())); + message.interruptible = reader.bool(); break; default: reader.skipType(tag & 7); @@ -11447,56 +11683,51 @@ }; /** - * Verifies an OutputReference message. + * Verifies a WorkflowMetadataDefaults message. * @function verify - * @memberof flyteidl.core.OutputReference + * @memberof flyteidl.core.WorkflowMetadataDefaults * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - OutputReference.verify = function verify(message) { + WorkflowMetadataDefaults.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.nodeId != null && message.hasOwnProperty("nodeId")) - if (!$util.isString(message.nodeId)) - return "nodeId: string expected"; - if (message["var"] != null && message.hasOwnProperty("var")) - if (!$util.isString(message["var"])) - return "var: string expected"; - if (message.attrPath != null && message.hasOwnProperty("attrPath")) { - if (!Array.isArray(message.attrPath)) - return "attrPath: array expected"; - for (var i = 0; i < message.attrPath.length; ++i) { - var error = $root.flyteidl.core.PromiseAttribute.verify(message.attrPath[i]); - if (error) - return "attrPath." + error; - } - } + if (message.interruptible != null && message.hasOwnProperty("interruptible")) + if (typeof message.interruptible !== "boolean") + return "interruptible: boolean expected"; return null; }; - return OutputReference; + return WorkflowMetadataDefaults; })(); - core.PromiseAttribute = (function() { + core.WorkflowTemplate = (function() { /** - * Properties of a PromiseAttribute. + * Properties of a WorkflowTemplate. * @memberof flyteidl.core - * @interface IPromiseAttribute - * @property {string|null} [stringValue] PromiseAttribute stringValue - * @property {number|null} [intValue] PromiseAttribute intValue + * @interface IWorkflowTemplate + * @property {flyteidl.core.IIdentifier|null} [id] WorkflowTemplate id + * @property {flyteidl.core.IWorkflowMetadata|null} [metadata] WorkflowTemplate metadata + * @property {flyteidl.core.ITypedInterface|null} ["interface"] WorkflowTemplate interface + * @property {Array.|null} [nodes] WorkflowTemplate nodes + * @property {Array.|null} [outputs] WorkflowTemplate outputs + * @property {flyteidl.core.INode|null} [failureNode] WorkflowTemplate failureNode + * @property {flyteidl.core.IWorkflowMetadataDefaults|null} [metadataDefaults] WorkflowTemplate metadataDefaults */ /** - * Constructs a new PromiseAttribute. + * Constructs a new WorkflowTemplate. * @memberof flyteidl.core - * @classdesc Represents a PromiseAttribute. - * @implements IPromiseAttribute + * @classdesc Represents a WorkflowTemplate. + * @implements IWorkflowTemplate * @constructor - * @param {flyteidl.core.IPromiseAttribute=} [properties] Properties to set + * @param {flyteidl.core.IWorkflowTemplate=} [properties] Properties to set */ - function PromiseAttribute(properties) { + function WorkflowTemplate(properties) { + this.nodes = []; + this.outputs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -11504,89 +11735,146 @@ } /** - * PromiseAttribute stringValue. - * @member {string} stringValue - * @memberof flyteidl.core.PromiseAttribute + * WorkflowTemplate id. + * @member {flyteidl.core.IIdentifier|null|undefined} id + * @memberof flyteidl.core.WorkflowTemplate * @instance */ - PromiseAttribute.prototype.stringValue = ""; + WorkflowTemplate.prototype.id = null; /** - * PromiseAttribute intValue. - * @member {number} intValue - * @memberof flyteidl.core.PromiseAttribute + * WorkflowTemplate metadata. + * @member {flyteidl.core.IWorkflowMetadata|null|undefined} metadata + * @memberof flyteidl.core.WorkflowTemplate * @instance */ - PromiseAttribute.prototype.intValue = 0; + WorkflowTemplate.prototype.metadata = null; - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + /** + * WorkflowTemplate interface. + * @member {flyteidl.core.ITypedInterface|null|undefined} interface + * @memberof flyteidl.core.WorkflowTemplate + * @instance + */ + WorkflowTemplate.prototype["interface"] = null; /** - * PromiseAttribute value. - * @member {"stringValue"|"intValue"|undefined} value - * @memberof flyteidl.core.PromiseAttribute + * WorkflowTemplate nodes. + * @member {Array.} nodes + * @memberof flyteidl.core.WorkflowTemplate * @instance */ - Object.defineProperty(PromiseAttribute.prototype, "value", { - get: $util.oneOfGetter($oneOfFields = ["stringValue", "intValue"]), - set: $util.oneOfSetter($oneOfFields) - }); + WorkflowTemplate.prototype.nodes = $util.emptyArray; /** - * Creates a new PromiseAttribute instance using the specified properties. + * WorkflowTemplate outputs. + * @member {Array.} outputs + * @memberof flyteidl.core.WorkflowTemplate + * @instance + */ + WorkflowTemplate.prototype.outputs = $util.emptyArray; + + /** + * WorkflowTemplate failureNode. + * @member {flyteidl.core.INode|null|undefined} failureNode + * @memberof flyteidl.core.WorkflowTemplate + * @instance + */ + WorkflowTemplate.prototype.failureNode = null; + + /** + * WorkflowTemplate metadataDefaults. + * @member {flyteidl.core.IWorkflowMetadataDefaults|null|undefined} metadataDefaults + * @memberof flyteidl.core.WorkflowTemplate + * @instance + */ + WorkflowTemplate.prototype.metadataDefaults = null; + + /** + * Creates a new WorkflowTemplate instance using the specified properties. * @function create - * @memberof flyteidl.core.PromiseAttribute + * @memberof flyteidl.core.WorkflowTemplate * @static - * @param {flyteidl.core.IPromiseAttribute=} [properties] Properties to set - * @returns {flyteidl.core.PromiseAttribute} PromiseAttribute instance + * @param {flyteidl.core.IWorkflowTemplate=} [properties] Properties to set + * @returns {flyteidl.core.WorkflowTemplate} WorkflowTemplate instance */ - PromiseAttribute.create = function create(properties) { - return new PromiseAttribute(properties); + WorkflowTemplate.create = function create(properties) { + return new WorkflowTemplate(properties); }; /** - * Encodes the specified PromiseAttribute message. Does not implicitly {@link flyteidl.core.PromiseAttribute.verify|verify} messages. + * Encodes the specified WorkflowTemplate message. Does not implicitly {@link flyteidl.core.WorkflowTemplate.verify|verify} messages. * @function encode - * @memberof flyteidl.core.PromiseAttribute + * @memberof flyteidl.core.WorkflowTemplate * @static - * @param {flyteidl.core.IPromiseAttribute} message PromiseAttribute message or plain object to encode + * @param {flyteidl.core.IWorkflowTemplate} message WorkflowTemplate message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PromiseAttribute.encode = function encode(message, writer) { + WorkflowTemplate.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.stringValue != null && message.hasOwnProperty("stringValue")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.stringValue); - if (message.intValue != null && message.hasOwnProperty("intValue")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.intValue); + if (message.id != null && message.hasOwnProperty("id")) + $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.metadata != null && message.hasOwnProperty("metadata")) + $root.flyteidl.core.WorkflowMetadata.encode(message.metadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message["interface"] != null && message.hasOwnProperty("interface")) + $root.flyteidl.core.TypedInterface.encode(message["interface"], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.nodes != null && message.nodes.length) + for (var i = 0; i < message.nodes.length; ++i) + $root.flyteidl.core.Node.encode(message.nodes[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.outputs != null && message.outputs.length) + for (var i = 0; i < message.outputs.length; ++i) + $root.flyteidl.core.Binding.encode(message.outputs[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.failureNode != null && message.hasOwnProperty("failureNode")) + $root.flyteidl.core.Node.encode(message.failureNode, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.metadataDefaults != null && message.hasOwnProperty("metadataDefaults")) + $root.flyteidl.core.WorkflowMetadataDefaults.encode(message.metadataDefaults, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; /** - * Decodes a PromiseAttribute message from the specified reader or buffer. + * Decodes a WorkflowTemplate message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.PromiseAttribute + * @memberof flyteidl.core.WorkflowTemplate * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.PromiseAttribute} PromiseAttribute + * @returns {flyteidl.core.WorkflowTemplate} WorkflowTemplate * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PromiseAttribute.decode = function decode(reader, length) { + WorkflowTemplate.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.PromiseAttribute(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.WorkflowTemplate(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.stringValue = reader.string(); + message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); break; case 2: - message.intValue = reader.int32(); + message.metadata = $root.flyteidl.core.WorkflowMetadata.decode(reader, reader.uint32()); + break; + case 3: + message["interface"] = $root.flyteidl.core.TypedInterface.decode(reader, reader.uint32()); + break; + case 4: + if (!(message.nodes && message.nodes.length)) + message.nodes = []; + message.nodes.push($root.flyteidl.core.Node.decode(reader, reader.uint32())); + break; + case 5: + if (!(message.outputs && message.outputs.length)) + message.outputs = []; + message.outputs.push($root.flyteidl.core.Binding.decode(reader, reader.uint32())); + break; + case 6: + message.failureNode = $root.flyteidl.core.Node.decode(reader, reader.uint32()); + break; + case 7: + message.metadataDefaults = $root.flyteidl.core.WorkflowMetadataDefaults.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -11597,54 +11885,84 @@ }; /** - * Verifies a PromiseAttribute message. + * Verifies a WorkflowTemplate message. * @function verify - * @memberof flyteidl.core.PromiseAttribute + * @memberof flyteidl.core.WorkflowTemplate * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PromiseAttribute.verify = function verify(message) { + WorkflowTemplate.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { - properties.value = 1; - if (!$util.isString(message.stringValue)) - return "stringValue: string expected"; + if (message.id != null && message.hasOwnProperty("id")) { + var error = $root.flyteidl.core.Identifier.verify(message.id); + if (error) + return "id." + error; } - if (message.intValue != null && message.hasOwnProperty("intValue")) { - if (properties.value === 1) - return "value: multiple values"; - properties.value = 1; - if (!$util.isInteger(message.intValue)) - return "intValue: integer expected"; + if (message.metadata != null && message.hasOwnProperty("metadata")) { + var error = $root.flyteidl.core.WorkflowMetadata.verify(message.metadata); + if (error) + return "metadata." + error; + } + if (message["interface"] != null && message.hasOwnProperty("interface")) { + var error = $root.flyteidl.core.TypedInterface.verify(message["interface"]); + if (error) + return "interface." + error; + } + if (message.nodes != null && message.hasOwnProperty("nodes")) { + if (!Array.isArray(message.nodes)) + return "nodes: array expected"; + for (var i = 0; i < message.nodes.length; ++i) { + var error = $root.flyteidl.core.Node.verify(message.nodes[i]); + if (error) + return "nodes." + error; + } + } + if (message.outputs != null && message.hasOwnProperty("outputs")) { + if (!Array.isArray(message.outputs)) + return "outputs: array expected"; + for (var i = 0; i < message.outputs.length; ++i) { + var error = $root.flyteidl.core.Binding.verify(message.outputs[i]); + if (error) + return "outputs." + error; + } + } + if (message.failureNode != null && message.hasOwnProperty("failureNode")) { + var error = $root.flyteidl.core.Node.verify(message.failureNode); + if (error) + return "failureNode." + error; + } + if (message.metadataDefaults != null && message.hasOwnProperty("metadataDefaults")) { + var error = $root.flyteidl.core.WorkflowMetadataDefaults.verify(message.metadataDefaults); + if (error) + return "metadataDefaults." + error; } return null; }; - return PromiseAttribute; + return WorkflowTemplate; })(); - core.Error = (function() { + core.TaskNodeOverrides = (function() { /** - * Properties of an Error. + * Properties of a TaskNodeOverrides. * @memberof flyteidl.core - * @interface IError - * @property {string|null} [failedNodeId] Error failedNodeId - * @property {string|null} [message] Error message + * @interface ITaskNodeOverrides + * @property {flyteidl.core.IResources|null} [resources] TaskNodeOverrides resources + * @property {flyteidl.core.IExtendedResources|null} [extendedResources] TaskNodeOverrides extendedResources */ /** - * Constructs a new Error. + * Constructs a new TaskNodeOverrides. * @memberof flyteidl.core - * @classdesc Represents an Error. - * @implements IError + * @classdesc Represents a TaskNodeOverrides. + * @implements ITaskNodeOverrides * @constructor - * @param {flyteidl.core.IError=} [properties] Properties to set + * @param {flyteidl.core.ITaskNodeOverrides=} [properties] Properties to set */ - function Error(properties) { + function TaskNodeOverrides(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -11652,75 +11970,75 @@ } /** - * Error failedNodeId. - * @member {string} failedNodeId - * @memberof flyteidl.core.Error + * TaskNodeOverrides resources. + * @member {flyteidl.core.IResources|null|undefined} resources + * @memberof flyteidl.core.TaskNodeOverrides * @instance */ - Error.prototype.failedNodeId = ""; + TaskNodeOverrides.prototype.resources = null; /** - * Error message. - * @member {string} message - * @memberof flyteidl.core.Error + * TaskNodeOverrides extendedResources. + * @member {flyteidl.core.IExtendedResources|null|undefined} extendedResources + * @memberof flyteidl.core.TaskNodeOverrides * @instance */ - Error.prototype.message = ""; + TaskNodeOverrides.prototype.extendedResources = null; /** - * Creates a new Error instance using the specified properties. + * Creates a new TaskNodeOverrides instance using the specified properties. * @function create - * @memberof flyteidl.core.Error + * @memberof flyteidl.core.TaskNodeOverrides * @static - * @param {flyteidl.core.IError=} [properties] Properties to set - * @returns {flyteidl.core.Error} Error instance + * @param {flyteidl.core.ITaskNodeOverrides=} [properties] Properties to set + * @returns {flyteidl.core.TaskNodeOverrides} TaskNodeOverrides instance */ - Error.create = function create(properties) { - return new Error(properties); + TaskNodeOverrides.create = function create(properties) { + return new TaskNodeOverrides(properties); }; /** - * Encodes the specified Error message. Does not implicitly {@link flyteidl.core.Error.verify|verify} messages. + * Encodes the specified TaskNodeOverrides message. Does not implicitly {@link flyteidl.core.TaskNodeOverrides.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Error + * @memberof flyteidl.core.TaskNodeOverrides * @static - * @param {flyteidl.core.IError} message Error message or plain object to encode + * @param {flyteidl.core.ITaskNodeOverrides} message TaskNodeOverrides message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Error.encode = function encode(message, writer) { + TaskNodeOverrides.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.failedNodeId != null && message.hasOwnProperty("failedNodeId")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.failedNodeId); - if (message.message != null && message.hasOwnProperty("message")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.message); + if (message.resources != null && message.hasOwnProperty("resources")) + $root.flyteidl.core.Resources.encode(message.resources, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.extendedResources != null && message.hasOwnProperty("extendedResources")) + $root.flyteidl.core.ExtendedResources.encode(message.extendedResources, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes an Error message from the specified reader or buffer. + * Decodes a TaskNodeOverrides message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Error + * @memberof flyteidl.core.TaskNodeOverrides * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Error} Error + * @returns {flyteidl.core.TaskNodeOverrides} TaskNodeOverrides * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Error.decode = function decode(reader, length) { + TaskNodeOverrides.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.Error(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.TaskNodeOverrides(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.failedNodeId = reader.string(); + message.resources = $root.flyteidl.core.Resources.decode(reader, reader.uint32()); break; case 2: - message.message = reader.string(); + message.extendedResources = $root.flyteidl.core.ExtendedResources.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -11731,45 +12049,51 @@ }; /** - * Verifies an Error message. + * Verifies a TaskNodeOverrides message. * @function verify - * @memberof flyteidl.core.Error + * @memberof flyteidl.core.TaskNodeOverrides * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Error.verify = function verify(message) { + TaskNodeOverrides.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.failedNodeId != null && message.hasOwnProperty("failedNodeId")) - if (!$util.isString(message.failedNodeId)) - return "failedNodeId: string expected"; - if (message.message != null && message.hasOwnProperty("message")) - if (!$util.isString(message.message)) - return "message: string expected"; + if (message.resources != null && message.hasOwnProperty("resources")) { + var error = $root.flyteidl.core.Resources.verify(message.resources); + if (error) + return "resources." + error; + } + if (message.extendedResources != null && message.hasOwnProperty("extendedResources")) { + var error = $root.flyteidl.core.ExtendedResources.verify(message.extendedResources); + if (error) + return "extendedResources." + error; + } return null; }; - return Error; + return TaskNodeOverrides; })(); - core.WorkflowExecution = (function() { + core.LaunchPlanTemplate = (function() { /** - * Properties of a WorkflowExecution. + * Properties of a LaunchPlanTemplate. * @memberof flyteidl.core - * @interface IWorkflowExecution + * @interface ILaunchPlanTemplate + * @property {flyteidl.core.IIdentifier|null} [id] LaunchPlanTemplate id + * @property {flyteidl.core.ITypedInterface|null} ["interface"] LaunchPlanTemplate interface */ /** - * Constructs a new WorkflowExecution. + * Constructs a new LaunchPlanTemplate. * @memberof flyteidl.core - * @classdesc Represents a WorkflowExecution. - * @implements IWorkflowExecution + * @classdesc Represents a LaunchPlanTemplate. + * @implements ILaunchPlanTemplate * @constructor - * @param {flyteidl.core.IWorkflowExecution=} [properties] Properties to set + * @param {flyteidl.core.ILaunchPlanTemplate=} [properties] Properties to set */ - function WorkflowExecution(properties) { + function LaunchPlanTemplate(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -11777,50 +12101,76 @@ } /** - * Creates a new WorkflowExecution instance using the specified properties. + * LaunchPlanTemplate id. + * @member {flyteidl.core.IIdentifier|null|undefined} id + * @memberof flyteidl.core.LaunchPlanTemplate + * @instance + */ + LaunchPlanTemplate.prototype.id = null; + + /** + * LaunchPlanTemplate interface. + * @member {flyteidl.core.ITypedInterface|null|undefined} interface + * @memberof flyteidl.core.LaunchPlanTemplate + * @instance + */ + LaunchPlanTemplate.prototype["interface"] = null; + + /** + * Creates a new LaunchPlanTemplate instance using the specified properties. * @function create - * @memberof flyteidl.core.WorkflowExecution + * @memberof flyteidl.core.LaunchPlanTemplate * @static - * @param {flyteidl.core.IWorkflowExecution=} [properties] Properties to set - * @returns {flyteidl.core.WorkflowExecution} WorkflowExecution instance + * @param {flyteidl.core.ILaunchPlanTemplate=} [properties] Properties to set + * @returns {flyteidl.core.LaunchPlanTemplate} LaunchPlanTemplate instance */ - WorkflowExecution.create = function create(properties) { - return new WorkflowExecution(properties); + LaunchPlanTemplate.create = function create(properties) { + return new LaunchPlanTemplate(properties); }; /** - * Encodes the specified WorkflowExecution message. Does not implicitly {@link flyteidl.core.WorkflowExecution.verify|verify} messages. + * Encodes the specified LaunchPlanTemplate message. Does not implicitly {@link flyteidl.core.LaunchPlanTemplate.verify|verify} messages. * @function encode - * @memberof flyteidl.core.WorkflowExecution + * @memberof flyteidl.core.LaunchPlanTemplate * @static - * @param {flyteidl.core.IWorkflowExecution} message WorkflowExecution message or plain object to encode + * @param {flyteidl.core.ILaunchPlanTemplate} message LaunchPlanTemplate message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - WorkflowExecution.encode = function encode(message, writer) { + LaunchPlanTemplate.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message["interface"] != null && message.hasOwnProperty("interface")) + $root.flyteidl.core.TypedInterface.encode(message["interface"], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a WorkflowExecution message from the specified reader or buffer. + * Decodes a LaunchPlanTemplate message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.WorkflowExecution + * @memberof flyteidl.core.LaunchPlanTemplate * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.WorkflowExecution} WorkflowExecution + * @returns {flyteidl.core.LaunchPlanTemplate} LaunchPlanTemplate * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - WorkflowExecution.decode = function decode(reader, length) { + LaunchPlanTemplate.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.WorkflowExecution(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.LaunchPlanTemplate(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: + message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); + break; + case 2: + message["interface"] = $root.flyteidl.core.TypedInterface.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -11830,69 +12180,52 @@ }; /** - * Verifies a WorkflowExecution message. + * Verifies a LaunchPlanTemplate message. * @function verify - * @memberof flyteidl.core.WorkflowExecution + * @memberof flyteidl.core.LaunchPlanTemplate * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - WorkflowExecution.verify = function verify(message) { + LaunchPlanTemplate.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) { + var error = $root.flyteidl.core.Identifier.verify(message.id); + if (error) + return "id." + error; + } + if (message["interface"] != null && message.hasOwnProperty("interface")) { + var error = $root.flyteidl.core.TypedInterface.verify(message["interface"]); + if (error) + return "interface." + error; + } return null; }; - /** - * Phase enum. - * @name flyteidl.core.WorkflowExecution.Phase - * @enum {string} - * @property {number} UNDEFINED=0 UNDEFINED value - * @property {number} QUEUED=1 QUEUED value - * @property {number} RUNNING=2 RUNNING value - * @property {number} SUCCEEDING=3 SUCCEEDING value - * @property {number} SUCCEEDED=4 SUCCEEDED value - * @property {number} FAILING=5 FAILING value - * @property {number} FAILED=6 FAILED value - * @property {number} ABORTED=7 ABORTED value - * @property {number} TIMED_OUT=8 TIMED_OUT value - * @property {number} ABORTING=9 ABORTING value - */ - WorkflowExecution.Phase = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "UNDEFINED"] = 0; - values[valuesById[1] = "QUEUED"] = 1; - values[valuesById[2] = "RUNNING"] = 2; - values[valuesById[3] = "SUCCEEDING"] = 3; - values[valuesById[4] = "SUCCEEDED"] = 4; - values[valuesById[5] = "FAILING"] = 5; - values[valuesById[6] = "FAILED"] = 6; - values[valuesById[7] = "ABORTED"] = 7; - values[valuesById[8] = "TIMED_OUT"] = 8; - values[valuesById[9] = "ABORTING"] = 9; - return values; - })(); - - return WorkflowExecution; + return LaunchPlanTemplate; })(); - core.NodeExecution = (function() { + core.ComparisonExpression = (function() { /** - * Properties of a NodeExecution. + * Properties of a ComparisonExpression. * @memberof flyteidl.core - * @interface INodeExecution + * @interface IComparisonExpression + * @property {flyteidl.core.ComparisonExpression.Operator|null} [operator] ComparisonExpression operator + * @property {flyteidl.core.IOperand|null} [leftValue] ComparisonExpression leftValue + * @property {flyteidl.core.IOperand|null} [rightValue] ComparisonExpression rightValue */ /** - * Constructs a new NodeExecution. + * Constructs a new ComparisonExpression. * @memberof flyteidl.core - * @classdesc Represents a NodeExecution. - * @implements INodeExecution + * @classdesc Represents a ComparisonExpression. + * @implements IComparisonExpression * @constructor - * @param {flyteidl.core.INodeExecution=} [properties] Properties to set + * @param {flyteidl.core.IComparisonExpression=} [properties] Properties to set */ - function NodeExecution(properties) { + function ComparisonExpression(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -11900,50 +12233,89 @@ } /** - * Creates a new NodeExecution instance using the specified properties. + * ComparisonExpression operator. + * @member {flyteidl.core.ComparisonExpression.Operator} operator + * @memberof flyteidl.core.ComparisonExpression + * @instance + */ + ComparisonExpression.prototype.operator = 0; + + /** + * ComparisonExpression leftValue. + * @member {flyteidl.core.IOperand|null|undefined} leftValue + * @memberof flyteidl.core.ComparisonExpression + * @instance + */ + ComparisonExpression.prototype.leftValue = null; + + /** + * ComparisonExpression rightValue. + * @member {flyteidl.core.IOperand|null|undefined} rightValue + * @memberof flyteidl.core.ComparisonExpression + * @instance + */ + ComparisonExpression.prototype.rightValue = null; + + /** + * Creates a new ComparisonExpression instance using the specified properties. * @function create - * @memberof flyteidl.core.NodeExecution + * @memberof flyteidl.core.ComparisonExpression * @static - * @param {flyteidl.core.INodeExecution=} [properties] Properties to set - * @returns {flyteidl.core.NodeExecution} NodeExecution instance + * @param {flyteidl.core.IComparisonExpression=} [properties] Properties to set + * @returns {flyteidl.core.ComparisonExpression} ComparisonExpression instance */ - NodeExecution.create = function create(properties) { - return new NodeExecution(properties); + ComparisonExpression.create = function create(properties) { + return new ComparisonExpression(properties); }; /** - * Encodes the specified NodeExecution message. Does not implicitly {@link flyteidl.core.NodeExecution.verify|verify} messages. + * Encodes the specified ComparisonExpression message. Does not implicitly {@link flyteidl.core.ComparisonExpression.verify|verify} messages. * @function encode - * @memberof flyteidl.core.NodeExecution + * @memberof flyteidl.core.ComparisonExpression * @static - * @param {flyteidl.core.INodeExecution} message NodeExecution message or plain object to encode + * @param {flyteidl.core.IComparisonExpression} message ComparisonExpression message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - NodeExecution.encode = function encode(message, writer) { + ComparisonExpression.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.operator != null && message.hasOwnProperty("operator")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.operator); + if (message.leftValue != null && message.hasOwnProperty("leftValue")) + $root.flyteidl.core.Operand.encode(message.leftValue, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.rightValue != null && message.hasOwnProperty("rightValue")) + $root.flyteidl.core.Operand.encode(message.rightValue, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Decodes a NodeExecution message from the specified reader or buffer. + * Decodes a ComparisonExpression message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.NodeExecution + * @memberof flyteidl.core.ComparisonExpression * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.NodeExecution} NodeExecution + * @returns {flyteidl.core.ComparisonExpression} ComparisonExpression * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - NodeExecution.decode = function decode(reader, length) { + ComparisonExpression.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.NodeExecution(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.ComparisonExpression(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: + message.operator = reader.int32(); + break; + case 2: + message.leftValue = $root.flyteidl.core.Operand.decode(reader, reader.uint32()); + break; + case 3: + message.rightValue = $root.flyteidl.core.Operand.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -11953,71 +12325,86 @@ }; /** - * Verifies a NodeExecution message. + * Verifies a ComparisonExpression message. * @function verify - * @memberof flyteidl.core.NodeExecution + * @memberof flyteidl.core.ComparisonExpression * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - NodeExecution.verify = function verify(message) { + ComparisonExpression.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.operator != null && message.hasOwnProperty("operator")) + switch (message.operator) { + default: + return "operator: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + break; + } + if (message.leftValue != null && message.hasOwnProperty("leftValue")) { + var error = $root.flyteidl.core.Operand.verify(message.leftValue); + if (error) + return "leftValue." + error; + } + if (message.rightValue != null && message.hasOwnProperty("rightValue")) { + var error = $root.flyteidl.core.Operand.verify(message.rightValue); + if (error) + return "rightValue." + error; + } return null; }; /** - * Phase enum. - * @name flyteidl.core.NodeExecution.Phase + * Operator enum. + * @name flyteidl.core.ComparisonExpression.Operator * @enum {string} - * @property {number} UNDEFINED=0 UNDEFINED value - * @property {number} QUEUED=1 QUEUED value - * @property {number} RUNNING=2 RUNNING value - * @property {number} SUCCEEDED=3 SUCCEEDED value - * @property {number} FAILING=4 FAILING value - * @property {number} FAILED=5 FAILED value - * @property {number} ABORTED=6 ABORTED value - * @property {number} SKIPPED=7 SKIPPED value - * @property {number} TIMED_OUT=8 TIMED_OUT value - * @property {number} DYNAMIC_RUNNING=9 DYNAMIC_RUNNING value - * @property {number} RECOVERED=10 RECOVERED value + * @property {number} EQ=0 EQ value + * @property {number} NEQ=1 NEQ value + * @property {number} GT=2 GT value + * @property {number} GTE=3 GTE value + * @property {number} LT=4 LT value + * @property {number} LTE=5 LTE value */ - NodeExecution.Phase = (function() { + ComparisonExpression.Operator = (function() { var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "UNDEFINED"] = 0; - values[valuesById[1] = "QUEUED"] = 1; - values[valuesById[2] = "RUNNING"] = 2; - values[valuesById[3] = "SUCCEEDED"] = 3; - values[valuesById[4] = "FAILING"] = 4; - values[valuesById[5] = "FAILED"] = 5; - values[valuesById[6] = "ABORTED"] = 6; - values[valuesById[7] = "SKIPPED"] = 7; - values[valuesById[8] = "TIMED_OUT"] = 8; - values[valuesById[9] = "DYNAMIC_RUNNING"] = 9; - values[valuesById[10] = "RECOVERED"] = 10; + values[valuesById[0] = "EQ"] = 0; + values[valuesById[1] = "NEQ"] = 1; + values[valuesById[2] = "GT"] = 2; + values[valuesById[3] = "GTE"] = 3; + values[valuesById[4] = "LT"] = 4; + values[valuesById[5] = "LTE"] = 5; return values; })(); - return NodeExecution; + return ComparisonExpression; })(); - core.TaskExecution = (function() { + core.Operand = (function() { /** - * Properties of a TaskExecution. + * Properties of an Operand. * @memberof flyteidl.core - * @interface ITaskExecution + * @interface IOperand + * @property {flyteidl.core.IPrimitive|null} [primitive] Operand primitive + * @property {string|null} ["var"] Operand var + * @property {flyteidl.core.IScalar|null} [scalar] Operand scalar */ /** - * Constructs a new TaskExecution. + * Constructs a new Operand. * @memberof flyteidl.core - * @classdesc Represents a TaskExecution. - * @implements ITaskExecution + * @classdesc Represents an Operand. + * @implements IOperand * @constructor - * @param {flyteidl.core.ITaskExecution=} [properties] Properties to set + * @param {flyteidl.core.IOperand=} [properties] Properties to set */ - function TaskExecution(properties) { + function Operand(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -12025,50 +12412,103 @@ } /** - * Creates a new TaskExecution instance using the specified properties. + * Operand primitive. + * @member {flyteidl.core.IPrimitive|null|undefined} primitive + * @memberof flyteidl.core.Operand + * @instance + */ + Operand.prototype.primitive = null; + + /** + * Operand var. + * @member {string} var + * @memberof flyteidl.core.Operand + * @instance + */ + Operand.prototype["var"] = ""; + + /** + * Operand scalar. + * @member {flyteidl.core.IScalar|null|undefined} scalar + * @memberof flyteidl.core.Operand + * @instance + */ + Operand.prototype.scalar = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Operand val. + * @member {"primitive"|"var"|"scalar"|undefined} val + * @memberof flyteidl.core.Operand + * @instance + */ + Object.defineProperty(Operand.prototype, "val", { + get: $util.oneOfGetter($oneOfFields = ["primitive", "var", "scalar"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Operand instance using the specified properties. * @function create - * @memberof flyteidl.core.TaskExecution + * @memberof flyteidl.core.Operand * @static - * @param {flyteidl.core.ITaskExecution=} [properties] Properties to set - * @returns {flyteidl.core.TaskExecution} TaskExecution instance + * @param {flyteidl.core.IOperand=} [properties] Properties to set + * @returns {flyteidl.core.Operand} Operand instance */ - TaskExecution.create = function create(properties) { - return new TaskExecution(properties); + Operand.create = function create(properties) { + return new Operand(properties); }; /** - * Encodes the specified TaskExecution message. Does not implicitly {@link flyteidl.core.TaskExecution.verify|verify} messages. + * Encodes the specified Operand message. Does not implicitly {@link flyteidl.core.Operand.verify|verify} messages. * @function encode - * @memberof flyteidl.core.TaskExecution + * @memberof flyteidl.core.Operand * @static - * @param {flyteidl.core.ITaskExecution} message TaskExecution message or plain object to encode + * @param {flyteidl.core.IOperand} message Operand message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TaskExecution.encode = function encode(message, writer) { + Operand.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.primitive != null && message.hasOwnProperty("primitive")) + $root.flyteidl.core.Primitive.encode(message.primitive, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message["var"] != null && message.hasOwnProperty("var")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message["var"]); + if (message.scalar != null && message.hasOwnProperty("scalar")) + $root.flyteidl.core.Scalar.encode(message.scalar, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Decodes a TaskExecution message from the specified reader or buffer. + * Decodes an Operand message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.TaskExecution + * @memberof flyteidl.core.Operand * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.TaskExecution} TaskExecution + * @returns {flyteidl.core.Operand} Operand * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TaskExecution.decode = function decode(reader, length) { + Operand.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.TaskExecution(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Operand(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: + message.primitive = $root.flyteidl.core.Primitive.decode(reader, reader.uint32()); + break; + case 2: + message["var"] = reader.string(); + break; + case 3: + message.scalar = $root.flyteidl.core.Scalar.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -12078,69 +12518,67 @@ }; /** - * Verifies a TaskExecution message. + * Verifies an Operand message. * @function verify - * @memberof flyteidl.core.TaskExecution + * @memberof flyteidl.core.Operand * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TaskExecution.verify = function verify(message) { + Operand.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + var properties = {}; + if (message.primitive != null && message.hasOwnProperty("primitive")) { + properties.val = 1; + { + var error = $root.flyteidl.core.Primitive.verify(message.primitive); + if (error) + return "primitive." + error; + } + } + if (message["var"] != null && message.hasOwnProperty("var")) { + if (properties.val === 1) + return "val: multiple values"; + properties.val = 1; + if (!$util.isString(message["var"])) + return "var: string expected"; + } + if (message.scalar != null && message.hasOwnProperty("scalar")) { + if (properties.val === 1) + return "val: multiple values"; + properties.val = 1; + { + var error = $root.flyteidl.core.Scalar.verify(message.scalar); + if (error) + return "scalar." + error; + } + } return null; }; - /** - * Phase enum. - * @name flyteidl.core.TaskExecution.Phase - * @enum {string} - * @property {number} UNDEFINED=0 UNDEFINED value - * @property {number} QUEUED=1 QUEUED value - * @property {number} RUNNING=2 RUNNING value - * @property {number} SUCCEEDED=3 SUCCEEDED value - * @property {number} ABORTED=4 ABORTED value - * @property {number} FAILED=5 FAILED value - * @property {number} INITIALIZING=6 INITIALIZING value - * @property {number} WAITING_FOR_RESOURCES=7 WAITING_FOR_RESOURCES value - */ - TaskExecution.Phase = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "UNDEFINED"] = 0; - values[valuesById[1] = "QUEUED"] = 1; - values[valuesById[2] = "RUNNING"] = 2; - values[valuesById[3] = "SUCCEEDED"] = 3; - values[valuesById[4] = "ABORTED"] = 4; - values[valuesById[5] = "FAILED"] = 5; - values[valuesById[6] = "INITIALIZING"] = 6; - values[valuesById[7] = "WAITING_FOR_RESOURCES"] = 7; - return values; - })(); - - return TaskExecution; + return Operand; })(); - core.ExecutionError = (function() { + core.BooleanExpression = (function() { /** - * Properties of an ExecutionError. + * Properties of a BooleanExpression. * @memberof flyteidl.core - * @interface IExecutionError - * @property {string|null} [code] ExecutionError code - * @property {string|null} [message] ExecutionError message - * @property {string|null} [errorUri] ExecutionError errorUri - * @property {flyteidl.core.ExecutionError.ErrorKind|null} [kind] ExecutionError kind + * @interface IBooleanExpression + * @property {flyteidl.core.IConjunctionExpression|null} [conjunction] BooleanExpression conjunction + * @property {flyteidl.core.IComparisonExpression|null} [comparison] BooleanExpression comparison */ /** - * Constructs a new ExecutionError. + * Constructs a new BooleanExpression. * @memberof flyteidl.core - * @classdesc Represents an ExecutionError. - * @implements IExecutionError + * @classdesc Represents a BooleanExpression. + * @implements IBooleanExpression * @constructor - * @param {flyteidl.core.IExecutionError=} [properties] Properties to set + * @param {flyteidl.core.IBooleanExpression=} [properties] Properties to set */ - function ExecutionError(properties) { + function BooleanExpression(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -12148,182 +12586,154 @@ } /** - * ExecutionError code. - * @member {string} code - * @memberof flyteidl.core.ExecutionError + * BooleanExpression conjunction. + * @member {flyteidl.core.IConjunctionExpression|null|undefined} conjunction + * @memberof flyteidl.core.BooleanExpression * @instance */ - ExecutionError.prototype.code = ""; + BooleanExpression.prototype.conjunction = null; /** - * ExecutionError message. - * @member {string} message - * @memberof flyteidl.core.ExecutionError + * BooleanExpression comparison. + * @member {flyteidl.core.IComparisonExpression|null|undefined} comparison + * @memberof flyteidl.core.BooleanExpression * @instance */ - ExecutionError.prototype.message = ""; + BooleanExpression.prototype.comparison = null; - /** - * ExecutionError errorUri. - * @member {string} errorUri - * @memberof flyteidl.core.ExecutionError - * @instance - */ - ExecutionError.prototype.errorUri = ""; + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * ExecutionError kind. - * @member {flyteidl.core.ExecutionError.ErrorKind} kind - * @memberof flyteidl.core.ExecutionError + * BooleanExpression expr. + * @member {"conjunction"|"comparison"|undefined} expr + * @memberof flyteidl.core.BooleanExpression * @instance */ - ExecutionError.prototype.kind = 0; + Object.defineProperty(BooleanExpression.prototype, "expr", { + get: $util.oneOfGetter($oneOfFields = ["conjunction", "comparison"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * Creates a new ExecutionError instance using the specified properties. + * Creates a new BooleanExpression instance using the specified properties. * @function create - * @memberof flyteidl.core.ExecutionError + * @memberof flyteidl.core.BooleanExpression * @static - * @param {flyteidl.core.IExecutionError=} [properties] Properties to set - * @returns {flyteidl.core.ExecutionError} ExecutionError instance + * @param {flyteidl.core.IBooleanExpression=} [properties] Properties to set + * @returns {flyteidl.core.BooleanExpression} BooleanExpression instance */ - ExecutionError.create = function create(properties) { - return new ExecutionError(properties); + BooleanExpression.create = function create(properties) { + return new BooleanExpression(properties); }; /** - * Encodes the specified ExecutionError message. Does not implicitly {@link flyteidl.core.ExecutionError.verify|verify} messages. + * Encodes the specified BooleanExpression message. Does not implicitly {@link flyteidl.core.BooleanExpression.verify|verify} messages. * @function encode - * @memberof flyteidl.core.ExecutionError + * @memberof flyteidl.core.BooleanExpression * @static - * @param {flyteidl.core.IExecutionError} message ExecutionError message or plain object to encode + * @param {flyteidl.core.IBooleanExpression} message BooleanExpression message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExecutionError.encode = function encode(message, writer) { + BooleanExpression.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.code != null && message.hasOwnProperty("code")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.code); - if (message.message != null && message.hasOwnProperty("message")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.message); - if (message.errorUri != null && message.hasOwnProperty("errorUri")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.errorUri); - if (message.kind != null && message.hasOwnProperty("kind")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.kind); + if (message.conjunction != null && message.hasOwnProperty("conjunction")) + $root.flyteidl.core.ConjunctionExpression.encode(message.conjunction, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.comparison != null && message.hasOwnProperty("comparison")) + $root.flyteidl.core.ComparisonExpression.encode(message.comparison, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes an ExecutionError message from the specified reader or buffer. + * Decodes a BooleanExpression message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.ExecutionError + * @memberof flyteidl.core.BooleanExpression * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.ExecutionError} ExecutionError + * @returns {flyteidl.core.BooleanExpression} BooleanExpression * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ExecutionError.decode = function decode(reader, length) { + BooleanExpression.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.ExecutionError(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.BooleanExpression(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.code = reader.string(); + message.conjunction = $root.flyteidl.core.ConjunctionExpression.decode(reader, reader.uint32()); break; case 2: - message.message = reader.string(); - break; - case 3: - message.errorUri = reader.string(); - break; - case 4: - message.kind = reader.int32(); + message.comparison = $root.flyteidl.core.ComparisonExpression.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); break; } - } - return message; - }; - - /** - * Verifies an ExecutionError message. - * @function verify - * @memberof flyteidl.core.ExecutionError - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ExecutionError.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.code != null && message.hasOwnProperty("code")) - if (!$util.isString(message.code)) - return "code: string expected"; - if (message.message != null && message.hasOwnProperty("message")) - if (!$util.isString(message.message)) - return "message: string expected"; - if (message.errorUri != null && message.hasOwnProperty("errorUri")) - if (!$util.isString(message.errorUri)) - return "errorUri: string expected"; - if (message.kind != null && message.hasOwnProperty("kind")) - switch (message.kind) { - default: - return "kind: enum value expected"; - case 0: - case 1: - case 2: - break; - } - return null; + } + return message; }; /** - * ErrorKind enum. - * @name flyteidl.core.ExecutionError.ErrorKind - * @enum {string} - * @property {number} UNKNOWN=0 UNKNOWN value - * @property {number} USER=1 USER value - * @property {number} SYSTEM=2 SYSTEM value + * Verifies a BooleanExpression message. + * @function verify + * @memberof flyteidl.core.BooleanExpression + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ExecutionError.ErrorKind = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "UNKNOWN"] = 0; - values[valuesById[1] = "USER"] = 1; - values[valuesById[2] = "SYSTEM"] = 2; - return values; - })(); + BooleanExpression.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.conjunction != null && message.hasOwnProperty("conjunction")) { + properties.expr = 1; + { + var error = $root.flyteidl.core.ConjunctionExpression.verify(message.conjunction); + if (error) + return "conjunction." + error; + } + } + if (message.comparison != null && message.hasOwnProperty("comparison")) { + if (properties.expr === 1) + return "expr: multiple values"; + properties.expr = 1; + { + var error = $root.flyteidl.core.ComparisonExpression.verify(message.comparison); + if (error) + return "comparison." + error; + } + } + return null; + }; - return ExecutionError; + return BooleanExpression; })(); - core.TaskLog = (function() { + core.ConjunctionExpression = (function() { /** - * Properties of a TaskLog. + * Properties of a ConjunctionExpression. * @memberof flyteidl.core - * @interface ITaskLog - * @property {string|null} [uri] TaskLog uri - * @property {string|null} [name] TaskLog name - * @property {flyteidl.core.TaskLog.MessageFormat|null} [messageFormat] TaskLog messageFormat - * @property {google.protobuf.IDuration|null} [ttl] TaskLog ttl + * @interface IConjunctionExpression + * @property {flyteidl.core.ConjunctionExpression.LogicalOperator|null} [operator] ConjunctionExpression operator + * @property {flyteidl.core.IBooleanExpression|null} [leftExpression] ConjunctionExpression leftExpression + * @property {flyteidl.core.IBooleanExpression|null} [rightExpression] ConjunctionExpression rightExpression */ /** - * Constructs a new TaskLog. + * Constructs a new ConjunctionExpression. * @memberof flyteidl.core - * @classdesc Represents a TaskLog. - * @implements ITaskLog + * @classdesc Represents a ConjunctionExpression. + * @implements IConjunctionExpression * @constructor - * @param {flyteidl.core.ITaskLog=} [properties] Properties to set + * @param {flyteidl.core.IConjunctionExpression=} [properties] Properties to set */ - function TaskLog(properties) { + function ConjunctionExpression(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -12331,101 +12741,88 @@ } /** - * TaskLog uri. - * @member {string} uri - * @memberof flyteidl.core.TaskLog - * @instance - */ - TaskLog.prototype.uri = ""; - - /** - * TaskLog name. - * @member {string} name - * @memberof flyteidl.core.TaskLog + * ConjunctionExpression operator. + * @member {flyteidl.core.ConjunctionExpression.LogicalOperator} operator + * @memberof flyteidl.core.ConjunctionExpression * @instance */ - TaskLog.prototype.name = ""; + ConjunctionExpression.prototype.operator = 0; /** - * TaskLog messageFormat. - * @member {flyteidl.core.TaskLog.MessageFormat} messageFormat - * @memberof flyteidl.core.TaskLog + * ConjunctionExpression leftExpression. + * @member {flyteidl.core.IBooleanExpression|null|undefined} leftExpression + * @memberof flyteidl.core.ConjunctionExpression * @instance */ - TaskLog.prototype.messageFormat = 0; + ConjunctionExpression.prototype.leftExpression = null; /** - * TaskLog ttl. - * @member {google.protobuf.IDuration|null|undefined} ttl - * @memberof flyteidl.core.TaskLog + * ConjunctionExpression rightExpression. + * @member {flyteidl.core.IBooleanExpression|null|undefined} rightExpression + * @memberof flyteidl.core.ConjunctionExpression * @instance */ - TaskLog.prototype.ttl = null; + ConjunctionExpression.prototype.rightExpression = null; /** - * Creates a new TaskLog instance using the specified properties. + * Creates a new ConjunctionExpression instance using the specified properties. * @function create - * @memberof flyteidl.core.TaskLog + * @memberof flyteidl.core.ConjunctionExpression * @static - * @param {flyteidl.core.ITaskLog=} [properties] Properties to set - * @returns {flyteidl.core.TaskLog} TaskLog instance + * @param {flyteidl.core.IConjunctionExpression=} [properties] Properties to set + * @returns {flyteidl.core.ConjunctionExpression} ConjunctionExpression instance */ - TaskLog.create = function create(properties) { - return new TaskLog(properties); + ConjunctionExpression.create = function create(properties) { + return new ConjunctionExpression(properties); }; /** - * Encodes the specified TaskLog message. Does not implicitly {@link flyteidl.core.TaskLog.verify|verify} messages. + * Encodes the specified ConjunctionExpression message. Does not implicitly {@link flyteidl.core.ConjunctionExpression.verify|verify} messages. * @function encode - * @memberof flyteidl.core.TaskLog + * @memberof flyteidl.core.ConjunctionExpression * @static - * @param {flyteidl.core.ITaskLog} message TaskLog message or plain object to encode + * @param {flyteidl.core.IConjunctionExpression} message ConjunctionExpression message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TaskLog.encode = function encode(message, writer) { + ConjunctionExpression.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.uri != null && message.hasOwnProperty("uri")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.uri); - if (message.name != null && message.hasOwnProperty("name")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); - if (message.messageFormat != null && message.hasOwnProperty("messageFormat")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.messageFormat); - if (message.ttl != null && message.hasOwnProperty("ttl")) - $root.google.protobuf.Duration.encode(message.ttl, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.operator != null && message.hasOwnProperty("operator")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.operator); + if (message.leftExpression != null && message.hasOwnProperty("leftExpression")) + $root.flyteidl.core.BooleanExpression.encode(message.leftExpression, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.rightExpression != null && message.hasOwnProperty("rightExpression")) + $root.flyteidl.core.BooleanExpression.encode(message.rightExpression, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Decodes a TaskLog message from the specified reader or buffer. + * Decodes a ConjunctionExpression message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.TaskLog + * @memberof flyteidl.core.ConjunctionExpression * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.TaskLog} TaskLog + * @returns {flyteidl.core.ConjunctionExpression} ConjunctionExpression * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TaskLog.decode = function decode(reader, length) { + ConjunctionExpression.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.TaskLog(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.ConjunctionExpression(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.uri = reader.string(); + message.operator = reader.int32(); break; case 2: - message.name = reader.string(); + message.leftExpression = $root.flyteidl.core.BooleanExpression.decode(reader, reader.uint32()); break; case 3: - message.messageFormat = reader.int32(); - break; - case 4: - message.ttl = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.rightExpression = $root.flyteidl.core.BooleanExpression.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -12436,76 +12833,71 @@ }; /** - * Verifies a TaskLog message. + * Verifies a ConjunctionExpression message. * @function verify - * @memberof flyteidl.core.TaskLog + * @memberof flyteidl.core.ConjunctionExpression * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TaskLog.verify = function verify(message) { + ConjunctionExpression.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.uri != null && message.hasOwnProperty("uri")) - if (!$util.isString(message.uri)) - return "uri: string expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.messageFormat != null && message.hasOwnProperty("messageFormat")) - switch (message.messageFormat) { + if (message.operator != null && message.hasOwnProperty("operator")) + switch (message.operator) { default: - return "messageFormat: enum value expected"; + return "operator: enum value expected"; case 0: case 1: - case 2: break; } - if (message.ttl != null && message.hasOwnProperty("ttl")) { - var error = $root.google.protobuf.Duration.verify(message.ttl); + if (message.leftExpression != null && message.hasOwnProperty("leftExpression")) { + var error = $root.flyteidl.core.BooleanExpression.verify(message.leftExpression); if (error) - return "ttl." + error; + return "leftExpression." + error; + } + if (message.rightExpression != null && message.hasOwnProperty("rightExpression")) { + var error = $root.flyteidl.core.BooleanExpression.verify(message.rightExpression); + if (error) + return "rightExpression." + error; } return null; }; /** - * MessageFormat enum. - * @name flyteidl.core.TaskLog.MessageFormat + * LogicalOperator enum. + * @name flyteidl.core.ConjunctionExpression.LogicalOperator * @enum {string} - * @property {number} UNKNOWN=0 UNKNOWN value - * @property {number} CSV=1 CSV value - * @property {number} JSON=2 JSON value + * @property {number} AND=0 AND value + * @property {number} OR=1 OR value */ - TaskLog.MessageFormat = (function() { + ConjunctionExpression.LogicalOperator = (function() { var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "UNKNOWN"] = 0; - values[valuesById[1] = "CSV"] = 1; - values[valuesById[2] = "JSON"] = 2; + values[valuesById[0] = "AND"] = 0; + values[valuesById[1] = "OR"] = 1; return values; })(); - return TaskLog; + return ConjunctionExpression; })(); - core.QualityOfServiceSpec = (function() { + core.WorkflowExecution = (function() { /** - * Properties of a QualityOfServiceSpec. + * Properties of a WorkflowExecution. * @memberof flyteidl.core - * @interface IQualityOfServiceSpec - * @property {google.protobuf.IDuration|null} [queueingBudget] QualityOfServiceSpec queueingBudget + * @interface IWorkflowExecution */ /** - * Constructs a new QualityOfServiceSpec. + * Constructs a new WorkflowExecution. * @memberof flyteidl.core - * @classdesc Represents a QualityOfServiceSpec. - * @implements IQualityOfServiceSpec + * @classdesc Represents a WorkflowExecution. + * @implements IWorkflowExecution * @constructor - * @param {flyteidl.core.IQualityOfServiceSpec=} [properties] Properties to set + * @param {flyteidl.core.IWorkflowExecution=} [properties] Properties to set */ - function QualityOfServiceSpec(properties) { + function WorkflowExecution(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -12513,63 +12905,50 @@ } /** - * QualityOfServiceSpec queueingBudget. - * @member {google.protobuf.IDuration|null|undefined} queueingBudget - * @memberof flyteidl.core.QualityOfServiceSpec - * @instance - */ - QualityOfServiceSpec.prototype.queueingBudget = null; - - /** - * Creates a new QualityOfServiceSpec instance using the specified properties. + * Creates a new WorkflowExecution instance using the specified properties. * @function create - * @memberof flyteidl.core.QualityOfServiceSpec + * @memberof flyteidl.core.WorkflowExecution * @static - * @param {flyteidl.core.IQualityOfServiceSpec=} [properties] Properties to set - * @returns {flyteidl.core.QualityOfServiceSpec} QualityOfServiceSpec instance + * @param {flyteidl.core.IWorkflowExecution=} [properties] Properties to set + * @returns {flyteidl.core.WorkflowExecution} WorkflowExecution instance */ - QualityOfServiceSpec.create = function create(properties) { - return new QualityOfServiceSpec(properties); + WorkflowExecution.create = function create(properties) { + return new WorkflowExecution(properties); }; /** - * Encodes the specified QualityOfServiceSpec message. Does not implicitly {@link flyteidl.core.QualityOfServiceSpec.verify|verify} messages. + * Encodes the specified WorkflowExecution message. Does not implicitly {@link flyteidl.core.WorkflowExecution.verify|verify} messages. * @function encode - * @memberof flyteidl.core.QualityOfServiceSpec + * @memberof flyteidl.core.WorkflowExecution * @static - * @param {flyteidl.core.IQualityOfServiceSpec} message QualityOfServiceSpec message or plain object to encode + * @param {flyteidl.core.IWorkflowExecution} message WorkflowExecution message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - QualityOfServiceSpec.encode = function encode(message, writer) { + WorkflowExecution.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.queueingBudget != null && message.hasOwnProperty("queueingBudget")) - $root.google.protobuf.Duration.encode(message.queueingBudget, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a QualityOfServiceSpec message from the specified reader or buffer. + * Decodes a WorkflowExecution message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.QualityOfServiceSpec + * @memberof flyteidl.core.WorkflowExecution * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.QualityOfServiceSpec} QualityOfServiceSpec + * @returns {flyteidl.core.WorkflowExecution} WorkflowExecution * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - QualityOfServiceSpec.decode = function decode(reader, length) { + WorkflowExecution.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.QualityOfServiceSpec(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.WorkflowExecution(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.queueingBudget = $root.google.protobuf.Duration.decode(reader, reader.uint32()); - break; default: reader.skipType(tag & 7); break; @@ -12579,46 +12958,69 @@ }; /** - * Verifies a QualityOfServiceSpec message. + * Verifies a WorkflowExecution message. * @function verify - * @memberof flyteidl.core.QualityOfServiceSpec + * @memberof flyteidl.core.WorkflowExecution * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - QualityOfServiceSpec.verify = function verify(message) { + WorkflowExecution.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.queueingBudget != null && message.hasOwnProperty("queueingBudget")) { - var error = $root.google.protobuf.Duration.verify(message.queueingBudget); - if (error) - return "queueingBudget." + error; - } return null; }; - return QualityOfServiceSpec; + /** + * Phase enum. + * @name flyteidl.core.WorkflowExecution.Phase + * @enum {string} + * @property {number} UNDEFINED=0 UNDEFINED value + * @property {number} QUEUED=1 QUEUED value + * @property {number} RUNNING=2 RUNNING value + * @property {number} SUCCEEDING=3 SUCCEEDING value + * @property {number} SUCCEEDED=4 SUCCEEDED value + * @property {number} FAILING=5 FAILING value + * @property {number} FAILED=6 FAILED value + * @property {number} ABORTED=7 ABORTED value + * @property {number} TIMED_OUT=8 TIMED_OUT value + * @property {number} ABORTING=9 ABORTING value + */ + WorkflowExecution.Phase = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNDEFINED"] = 0; + values[valuesById[1] = "QUEUED"] = 1; + values[valuesById[2] = "RUNNING"] = 2; + values[valuesById[3] = "SUCCEEDING"] = 3; + values[valuesById[4] = "SUCCEEDED"] = 4; + values[valuesById[5] = "FAILING"] = 5; + values[valuesById[6] = "FAILED"] = 6; + values[valuesById[7] = "ABORTED"] = 7; + values[valuesById[8] = "TIMED_OUT"] = 8; + values[valuesById[9] = "ABORTING"] = 9; + return values; + })(); + + return WorkflowExecution; })(); - core.QualityOfService = (function() { + core.NodeExecution = (function() { /** - * Properties of a QualityOfService. + * Properties of a NodeExecution. * @memberof flyteidl.core - * @interface IQualityOfService - * @property {flyteidl.core.QualityOfService.Tier|null} [tier] QualityOfService tier - * @property {flyteidl.core.IQualityOfServiceSpec|null} [spec] QualityOfService spec + * @interface INodeExecution */ /** - * Constructs a new QualityOfService. + * Constructs a new NodeExecution. * @memberof flyteidl.core - * @classdesc Represents a QualityOfService. - * @implements IQualityOfService + * @classdesc Represents a NodeExecution. + * @implements INodeExecution * @constructor - * @param {flyteidl.core.IQualityOfService=} [properties] Properties to set + * @param {flyteidl.core.INodeExecution=} [properties] Properties to set */ - function QualityOfService(properties) { + function NodeExecution(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -12626,90 +13028,50 @@ } /** - * QualityOfService tier. - * @member {flyteidl.core.QualityOfService.Tier} tier - * @memberof flyteidl.core.QualityOfService - * @instance - */ - QualityOfService.prototype.tier = 0; - - /** - * QualityOfService spec. - * @member {flyteidl.core.IQualityOfServiceSpec|null|undefined} spec - * @memberof flyteidl.core.QualityOfService - * @instance - */ - QualityOfService.prototype.spec = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * QualityOfService designation. - * @member {"tier"|"spec"|undefined} designation - * @memberof flyteidl.core.QualityOfService - * @instance - */ - Object.defineProperty(QualityOfService.prototype, "designation", { - get: $util.oneOfGetter($oneOfFields = ["tier", "spec"]), - set: $util.oneOfSetter($oneOfFields) - }); - - /** - * Creates a new QualityOfService instance using the specified properties. + * Creates a new NodeExecution instance using the specified properties. * @function create - * @memberof flyteidl.core.QualityOfService + * @memberof flyteidl.core.NodeExecution * @static - * @param {flyteidl.core.IQualityOfService=} [properties] Properties to set - * @returns {flyteidl.core.QualityOfService} QualityOfService instance + * @param {flyteidl.core.INodeExecution=} [properties] Properties to set + * @returns {flyteidl.core.NodeExecution} NodeExecution instance */ - QualityOfService.create = function create(properties) { - return new QualityOfService(properties); + NodeExecution.create = function create(properties) { + return new NodeExecution(properties); }; /** - * Encodes the specified QualityOfService message. Does not implicitly {@link flyteidl.core.QualityOfService.verify|verify} messages. + * Encodes the specified NodeExecution message. Does not implicitly {@link flyteidl.core.NodeExecution.verify|verify} messages. * @function encode - * @memberof flyteidl.core.QualityOfService + * @memberof flyteidl.core.NodeExecution * @static - * @param {flyteidl.core.IQualityOfService} message QualityOfService message or plain object to encode + * @param {flyteidl.core.INodeExecution} message NodeExecution message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - QualityOfService.encode = function encode(message, writer) { + NodeExecution.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.tier != null && message.hasOwnProperty("tier")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.tier); - if (message.spec != null && message.hasOwnProperty("spec")) - $root.flyteidl.core.QualityOfServiceSpec.encode(message.spec, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a QualityOfService message from the specified reader or buffer. + * Decodes a NodeExecution message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.QualityOfService + * @memberof flyteidl.core.NodeExecution * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.QualityOfService} QualityOfService + * @returns {flyteidl.core.NodeExecution} NodeExecution * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - QualityOfService.decode = function decode(reader, length) { + NodeExecution.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.QualityOfService(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.NodeExecution(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.tier = reader.int32(); - break; - case 2: - message.spec = $root.flyteidl.core.QualityOfServiceSpec.decode(reader, reader.uint32()); - break; default: reader.skipType(tag & 7); break; @@ -12719,187 +13081,122 @@ }; /** - * Verifies a QualityOfService message. + * Verifies a NodeExecution message. * @function verify - * @memberof flyteidl.core.QualityOfService + * @memberof flyteidl.core.NodeExecution * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - QualityOfService.verify = function verify(message) { + NodeExecution.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.tier != null && message.hasOwnProperty("tier")) { - properties.designation = 1; - switch (message.tier) { - default: - return "tier: enum value expected"; - case 0: - case 1: - case 2: - case 3: - break; - } - } - if (message.spec != null && message.hasOwnProperty("spec")) { - if (properties.designation === 1) - return "designation: multiple values"; - properties.designation = 1; - { - var error = $root.flyteidl.core.QualityOfServiceSpec.verify(message.spec); - if (error) - return "spec." + error; - } - } return null; }; /** - * Tier enum. - * @name flyteidl.core.QualityOfService.Tier + * Phase enum. + * @name flyteidl.core.NodeExecution.Phase * @enum {string} * @property {number} UNDEFINED=0 UNDEFINED value - * @property {number} HIGH=1 HIGH value - * @property {number} MEDIUM=2 MEDIUM value - * @property {number} LOW=3 LOW value + * @property {number} QUEUED=1 QUEUED value + * @property {number} RUNNING=2 RUNNING value + * @property {number} SUCCEEDED=3 SUCCEEDED value + * @property {number} FAILING=4 FAILING value + * @property {number} FAILED=5 FAILED value + * @property {number} ABORTED=6 ABORTED value + * @property {number} SKIPPED=7 SKIPPED value + * @property {number} TIMED_OUT=8 TIMED_OUT value + * @property {number} DYNAMIC_RUNNING=9 DYNAMIC_RUNNING value + * @property {number} RECOVERED=10 RECOVERED value */ - QualityOfService.Tier = (function() { + NodeExecution.Phase = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[0] = "UNDEFINED"] = 0; - values[valuesById[1] = "HIGH"] = 1; - values[valuesById[2] = "MEDIUM"] = 2; - values[valuesById[3] = "LOW"] = 3; + values[valuesById[1] = "QUEUED"] = 1; + values[valuesById[2] = "RUNNING"] = 2; + values[valuesById[3] = "SUCCEEDED"] = 3; + values[valuesById[4] = "FAILING"] = 4; + values[valuesById[5] = "FAILED"] = 5; + values[valuesById[6] = "ABORTED"] = 6; + values[valuesById[7] = "SKIPPED"] = 7; + values[valuesById[8] = "TIMED_OUT"] = 8; + values[valuesById[9] = "DYNAMIC_RUNNING"] = 9; + values[valuesById[10] = "RECOVERED"] = 10; return values; })(); - return QualityOfService; + return NodeExecution; })(); - core.Variable = (function() { - - /** - * Properties of a Variable. - * @memberof flyteidl.core - * @interface IVariable - * @property {flyteidl.core.ILiteralType|null} [type] Variable type - * @property {string|null} [description] Variable description - * @property {flyteidl.core.IArtifactID|null} [artifactPartialId] Variable artifactPartialId - * @property {flyteidl.core.IArtifactTag|null} [artifactTag] Variable artifactTag - */ + core.TaskExecution = (function() { /** - * Constructs a new Variable. + * Properties of a TaskExecution. * @memberof flyteidl.core - * @classdesc Represents a Variable. - * @implements IVariable - * @constructor - * @param {flyteidl.core.IVariable=} [properties] Properties to set - */ - function Variable(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]]; - } - - /** - * Variable type. - * @member {flyteidl.core.ILiteralType|null|undefined} type - * @memberof flyteidl.core.Variable - * @instance - */ - Variable.prototype.type = null; - - /** - * Variable description. - * @member {string} description - * @memberof flyteidl.core.Variable - * @instance - */ - Variable.prototype.description = ""; - - /** - * Variable artifactPartialId. - * @member {flyteidl.core.IArtifactID|null|undefined} artifactPartialId - * @memberof flyteidl.core.Variable - * @instance + * @interface ITaskExecution */ - Variable.prototype.artifactPartialId = null; - - /** - * Variable artifactTag. - * @member {flyteidl.core.IArtifactTag|null|undefined} artifactTag - * @memberof flyteidl.core.Variable - * @instance + + /** + * Constructs a new TaskExecution. + * @memberof flyteidl.core + * @classdesc Represents a TaskExecution. + * @implements ITaskExecution + * @constructor + * @param {flyteidl.core.ITaskExecution=} [properties] Properties to set */ - Variable.prototype.artifactTag = null; + function TaskExecution(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]]; + } /** - * Creates a new Variable instance using the specified properties. + * Creates a new TaskExecution instance using the specified properties. * @function create - * @memberof flyteidl.core.Variable + * @memberof flyteidl.core.TaskExecution * @static - * @param {flyteidl.core.IVariable=} [properties] Properties to set - * @returns {flyteidl.core.Variable} Variable instance + * @param {flyteidl.core.ITaskExecution=} [properties] Properties to set + * @returns {flyteidl.core.TaskExecution} TaskExecution instance */ - Variable.create = function create(properties) { - return new Variable(properties); + TaskExecution.create = function create(properties) { + return new TaskExecution(properties); }; /** - * Encodes the specified Variable message. Does not implicitly {@link flyteidl.core.Variable.verify|verify} messages. + * Encodes the specified TaskExecution message. Does not implicitly {@link flyteidl.core.TaskExecution.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Variable + * @memberof flyteidl.core.TaskExecution * @static - * @param {flyteidl.core.IVariable} message Variable message or plain object to encode + * @param {flyteidl.core.ITaskExecution} message TaskExecution message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Variable.encode = function encode(message, writer) { + TaskExecution.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.type != null && message.hasOwnProperty("type")) - $root.flyteidl.core.LiteralType.encode(message.type, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.description != null && message.hasOwnProperty("description")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.description); - if (message.artifactPartialId != null && message.hasOwnProperty("artifactPartialId")) - $root.flyteidl.core.ArtifactID.encode(message.artifactPartialId, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.artifactTag != null && message.hasOwnProperty("artifactTag")) - $root.flyteidl.core.ArtifactTag.encode(message.artifactTag, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; /** - * Decodes a Variable message from the specified reader or buffer. + * Decodes a TaskExecution message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Variable + * @memberof flyteidl.core.TaskExecution * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Variable} Variable + * @returns {flyteidl.core.TaskExecution} TaskExecution * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Variable.decode = function decode(reader, length) { + TaskExecution.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.Variable(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.TaskExecution(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.type = $root.flyteidl.core.LiteralType.decode(reader, reader.uint32()); - break; - case 2: - message.description = reader.string(); - break; - case 3: - message.artifactPartialId = $root.flyteidl.core.ArtifactID.decode(reader, reader.uint32()); - break; - case 4: - message.artifactTag = $root.flyteidl.core.ArtifactTag.decode(reader, reader.uint32()); - break; default: reader.skipType(tag & 7); break; @@ -12909,59 +13206,69 @@ }; /** - * Verifies a Variable message. + * Verifies a TaskExecution message. * @function verify - * @memberof flyteidl.core.Variable + * @memberof flyteidl.core.TaskExecution * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Variable.verify = function verify(message) { + TaskExecution.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.type != null && message.hasOwnProperty("type")) { - var error = $root.flyteidl.core.LiteralType.verify(message.type); - if (error) - return "type." + error; - } - if (message.description != null && message.hasOwnProperty("description")) - if (!$util.isString(message.description)) - return "description: string expected"; - if (message.artifactPartialId != null && message.hasOwnProperty("artifactPartialId")) { - var error = $root.flyteidl.core.ArtifactID.verify(message.artifactPartialId); - if (error) - return "artifactPartialId." + error; - } - if (message.artifactTag != null && message.hasOwnProperty("artifactTag")) { - var error = $root.flyteidl.core.ArtifactTag.verify(message.artifactTag); - if (error) - return "artifactTag." + error; - } return null; }; - return Variable; + /** + * Phase enum. + * @name flyteidl.core.TaskExecution.Phase + * @enum {string} + * @property {number} UNDEFINED=0 UNDEFINED value + * @property {number} QUEUED=1 QUEUED value + * @property {number} RUNNING=2 RUNNING value + * @property {number} SUCCEEDED=3 SUCCEEDED value + * @property {number} ABORTED=4 ABORTED value + * @property {number} FAILED=5 FAILED value + * @property {number} INITIALIZING=6 INITIALIZING value + * @property {number} WAITING_FOR_RESOURCES=7 WAITING_FOR_RESOURCES value + */ + TaskExecution.Phase = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNDEFINED"] = 0; + values[valuesById[1] = "QUEUED"] = 1; + values[valuesById[2] = "RUNNING"] = 2; + values[valuesById[3] = "SUCCEEDED"] = 3; + values[valuesById[4] = "ABORTED"] = 4; + values[valuesById[5] = "FAILED"] = 5; + values[valuesById[6] = "INITIALIZING"] = 6; + values[valuesById[7] = "WAITING_FOR_RESOURCES"] = 7; + return values; + })(); + + return TaskExecution; })(); - core.VariableMap = (function() { + core.ExecutionError = (function() { /** - * Properties of a VariableMap. + * Properties of an ExecutionError. * @memberof flyteidl.core - * @interface IVariableMap - * @property {Object.|null} [variables] VariableMap variables + * @interface IExecutionError + * @property {string|null} [code] ExecutionError code + * @property {string|null} [message] ExecutionError message + * @property {string|null} [errorUri] ExecutionError errorUri + * @property {flyteidl.core.ExecutionError.ErrorKind|null} [kind] ExecutionError kind */ /** - * Constructs a new VariableMap. + * Constructs a new ExecutionError. * @memberof flyteidl.core - * @classdesc Represents a VariableMap. - * @implements IVariableMap + * @classdesc Represents an ExecutionError. + * @implements IExecutionError * @constructor - * @param {flyteidl.core.IVariableMap=} [properties] Properties to set + * @param {flyteidl.core.IExecutionError=} [properties] Properties to set */ - function VariableMap(properties) { - this.variables = {}; + function ExecutionError(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -12969,70 +13276,101 @@ } /** - * VariableMap variables. - * @member {Object.} variables - * @memberof flyteidl.core.VariableMap + * ExecutionError code. + * @member {string} code + * @memberof flyteidl.core.ExecutionError * @instance */ - VariableMap.prototype.variables = $util.emptyObject; + ExecutionError.prototype.code = ""; /** - * Creates a new VariableMap instance using the specified properties. + * ExecutionError message. + * @member {string} message + * @memberof flyteidl.core.ExecutionError + * @instance + */ + ExecutionError.prototype.message = ""; + + /** + * ExecutionError errorUri. + * @member {string} errorUri + * @memberof flyteidl.core.ExecutionError + * @instance + */ + ExecutionError.prototype.errorUri = ""; + + /** + * ExecutionError kind. + * @member {flyteidl.core.ExecutionError.ErrorKind} kind + * @memberof flyteidl.core.ExecutionError + * @instance + */ + ExecutionError.prototype.kind = 0; + + /** + * Creates a new ExecutionError instance using the specified properties. * @function create - * @memberof flyteidl.core.VariableMap + * @memberof flyteidl.core.ExecutionError * @static - * @param {flyteidl.core.IVariableMap=} [properties] Properties to set - * @returns {flyteidl.core.VariableMap} VariableMap instance + * @param {flyteidl.core.IExecutionError=} [properties] Properties to set + * @returns {flyteidl.core.ExecutionError} ExecutionError instance */ - VariableMap.create = function create(properties) { - return new VariableMap(properties); + ExecutionError.create = function create(properties) { + return new ExecutionError(properties); }; /** - * Encodes the specified VariableMap message. Does not implicitly {@link flyteidl.core.VariableMap.verify|verify} messages. + * Encodes the specified ExecutionError message. Does not implicitly {@link flyteidl.core.ExecutionError.verify|verify} messages. * @function encode - * @memberof flyteidl.core.VariableMap + * @memberof flyteidl.core.ExecutionError * @static - * @param {flyteidl.core.IVariableMap} message VariableMap message or plain object to encode + * @param {flyteidl.core.IExecutionError} message ExecutionError message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - VariableMap.encode = function encode(message, writer) { + ExecutionError.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.variables != null && message.hasOwnProperty("variables")) - for (var keys = Object.keys(message.variables), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.flyteidl.core.Variable.encode(message.variables[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } + if (message.code != null && message.hasOwnProperty("code")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.code); + if (message.message != null && message.hasOwnProperty("message")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.message); + if (message.errorUri != null && message.hasOwnProperty("errorUri")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.errorUri); + if (message.kind != null && message.hasOwnProperty("kind")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.kind); return writer; }; /** - * Decodes a VariableMap message from the specified reader or buffer. + * Decodes an ExecutionError message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.VariableMap + * @memberof flyteidl.core.ExecutionError * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.VariableMap} VariableMap + * @returns {flyteidl.core.ExecutionError} ExecutionError * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - VariableMap.decode = function decode(reader, length) { + ExecutionError.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.VariableMap(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.ExecutionError(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - reader.skip().pos++; - if (message.variables === $util.emptyObject) - message.variables = {}; - key = reader.string(); - reader.pos++; - message.variables[key] = $root.flyteidl.core.Variable.decode(reader, reader.uint32()); + message.code = reader.string(); + break; + case 2: + message.message = reader.string(); + break; + case 3: + message.errorUri = reader.string(); + break; + case 4: + message.kind = reader.int32(); break; default: reader.skipType(tag & 7); @@ -13043,51 +13381,77 @@ }; /** - * Verifies a VariableMap message. + * Verifies an ExecutionError message. * @function verify - * @memberof flyteidl.core.VariableMap + * @memberof flyteidl.core.ExecutionError * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - VariableMap.verify = function verify(message) { + ExecutionError.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.variables != null && message.hasOwnProperty("variables")) { - if (!$util.isObject(message.variables)) - return "variables: object expected"; - var key = Object.keys(message.variables); - for (var i = 0; i < key.length; ++i) { - var error = $root.flyteidl.core.Variable.verify(message.variables[key[i]]); - if (error) - return "variables." + error; + if (message.code != null && message.hasOwnProperty("code")) + if (!$util.isString(message.code)) + return "code: string expected"; + if (message.message != null && message.hasOwnProperty("message")) + if (!$util.isString(message.message)) + return "message: string expected"; + if (message.errorUri != null && message.hasOwnProperty("errorUri")) + if (!$util.isString(message.errorUri)) + return "errorUri: string expected"; + if (message.kind != null && message.hasOwnProperty("kind")) + switch (message.kind) { + default: + return "kind: enum value expected"; + case 0: + case 1: + case 2: + break; } - } return null; }; - return VariableMap; + /** + * ErrorKind enum. + * @name flyteidl.core.ExecutionError.ErrorKind + * @enum {string} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} USER=1 USER value + * @property {number} SYSTEM=2 SYSTEM value + */ + ExecutionError.ErrorKind = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN"] = 0; + values[valuesById[1] = "USER"] = 1; + values[valuesById[2] = "SYSTEM"] = 2; + return values; + })(); + + return ExecutionError; })(); - core.TypedInterface = (function() { + core.TaskLog = (function() { /** - * Properties of a TypedInterface. + * Properties of a TaskLog. * @memberof flyteidl.core - * @interface ITypedInterface - * @property {flyteidl.core.IVariableMap|null} [inputs] TypedInterface inputs - * @property {flyteidl.core.IVariableMap|null} [outputs] TypedInterface outputs + * @interface ITaskLog + * @property {string|null} [uri] TaskLog uri + * @property {string|null} [name] TaskLog name + * @property {flyteidl.core.TaskLog.MessageFormat|null} [messageFormat] TaskLog messageFormat + * @property {google.protobuf.IDuration|null} [ttl] TaskLog ttl */ /** - * Constructs a new TypedInterface. + * Constructs a new TaskLog. * @memberof flyteidl.core - * @classdesc Represents a TypedInterface. - * @implements ITypedInterface + * @classdesc Represents a TaskLog. + * @implements ITaskLog * @constructor - * @param {flyteidl.core.ITypedInterface=} [properties] Properties to set + * @param {flyteidl.core.ITaskLog=} [properties] Properties to set */ - function TypedInterface(properties) { + function TaskLog(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -13095,75 +13459,101 @@ } /** - * TypedInterface inputs. - * @member {flyteidl.core.IVariableMap|null|undefined} inputs - * @memberof flyteidl.core.TypedInterface + * TaskLog uri. + * @member {string} uri + * @memberof flyteidl.core.TaskLog * @instance */ - TypedInterface.prototype.inputs = null; + TaskLog.prototype.uri = ""; /** - * TypedInterface outputs. - * @member {flyteidl.core.IVariableMap|null|undefined} outputs - * @memberof flyteidl.core.TypedInterface + * TaskLog name. + * @member {string} name + * @memberof flyteidl.core.TaskLog * @instance */ - TypedInterface.prototype.outputs = null; + TaskLog.prototype.name = ""; /** - * Creates a new TypedInterface instance using the specified properties. + * TaskLog messageFormat. + * @member {flyteidl.core.TaskLog.MessageFormat} messageFormat + * @memberof flyteidl.core.TaskLog + * @instance + */ + TaskLog.prototype.messageFormat = 0; + + /** + * TaskLog ttl. + * @member {google.protobuf.IDuration|null|undefined} ttl + * @memberof flyteidl.core.TaskLog + * @instance + */ + TaskLog.prototype.ttl = null; + + /** + * Creates a new TaskLog instance using the specified properties. * @function create - * @memberof flyteidl.core.TypedInterface + * @memberof flyteidl.core.TaskLog * @static - * @param {flyteidl.core.ITypedInterface=} [properties] Properties to set - * @returns {flyteidl.core.TypedInterface} TypedInterface instance + * @param {flyteidl.core.ITaskLog=} [properties] Properties to set + * @returns {flyteidl.core.TaskLog} TaskLog instance */ - TypedInterface.create = function create(properties) { - return new TypedInterface(properties); + TaskLog.create = function create(properties) { + return new TaskLog(properties); }; /** - * Encodes the specified TypedInterface message. Does not implicitly {@link flyteidl.core.TypedInterface.verify|verify} messages. + * Encodes the specified TaskLog message. Does not implicitly {@link flyteidl.core.TaskLog.verify|verify} messages. * @function encode - * @memberof flyteidl.core.TypedInterface + * @memberof flyteidl.core.TaskLog * @static - * @param {flyteidl.core.ITypedInterface} message TypedInterface message or plain object to encode + * @param {flyteidl.core.ITaskLog} message TaskLog message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TypedInterface.encode = function encode(message, writer) { + TaskLog.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.inputs != null && message.hasOwnProperty("inputs")) - $root.flyteidl.core.VariableMap.encode(message.inputs, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.outputs != null && message.hasOwnProperty("outputs")) - $root.flyteidl.core.VariableMap.encode(message.outputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.uri != null && message.hasOwnProperty("uri")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.uri); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); + if (message.messageFormat != null && message.hasOwnProperty("messageFormat")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.messageFormat); + if (message.ttl != null && message.hasOwnProperty("ttl")) + $root.google.protobuf.Duration.encode(message.ttl, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; /** - * Decodes a TypedInterface message from the specified reader or buffer. + * Decodes a TaskLog message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.TypedInterface + * @memberof flyteidl.core.TaskLog * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.TypedInterface} TypedInterface + * @returns {flyteidl.core.TaskLog} TaskLog * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TypedInterface.decode = function decode(reader, length) { + TaskLog.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.TypedInterface(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.TaskLog(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.inputs = $root.flyteidl.core.VariableMap.decode(reader, reader.uint32()); + message.uri = reader.string(); break; case 2: - message.outputs = $root.flyteidl.core.VariableMap.decode(reader, reader.uint32()); + message.name = reader.string(); + break; + case 3: + message.messageFormat = reader.int32(); + break; + case 4: + message.ttl = $root.google.protobuf.Duration.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -13174,54 +13564,76 @@ }; /** - * Verifies a TypedInterface message. + * Verifies a TaskLog message. * @function verify - * @memberof flyteidl.core.TypedInterface + * @memberof flyteidl.core.TaskLog * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TypedInterface.verify = function verify(message) { + TaskLog.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.VariableMap.verify(message.inputs); - if (error) - return "inputs." + error; - } - if (message.outputs != null && message.hasOwnProperty("outputs")) { - var error = $root.flyteidl.core.VariableMap.verify(message.outputs); + if (message.uri != null && message.hasOwnProperty("uri")) + if (!$util.isString(message.uri)) + return "uri: string expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.messageFormat != null && message.hasOwnProperty("messageFormat")) + switch (message.messageFormat) { + default: + return "messageFormat: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.ttl != null && message.hasOwnProperty("ttl")) { + var error = $root.google.protobuf.Duration.verify(message.ttl); if (error) - return "outputs." + error; + return "ttl." + error; } return null; }; - return TypedInterface; + /** + * MessageFormat enum. + * @name flyteidl.core.TaskLog.MessageFormat + * @enum {string} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} CSV=1 CSV value + * @property {number} JSON=2 JSON value + */ + TaskLog.MessageFormat = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN"] = 0; + values[valuesById[1] = "CSV"] = 1; + values[valuesById[2] = "JSON"] = 2; + return values; + })(); + + return TaskLog; })(); - core.Parameter = (function() { + core.QualityOfServiceSpec = (function() { /** - * Properties of a Parameter. + * Properties of a QualityOfServiceSpec. * @memberof flyteidl.core - * @interface IParameter - * @property {flyteidl.core.IVariable|null} ["var"] Parameter var - * @property {flyteidl.core.ILiteral|null} ["default"] Parameter default - * @property {boolean|null} [required] Parameter required - * @property {flyteidl.core.IArtifactQuery|null} [artifactQuery] Parameter artifactQuery - * @property {flyteidl.core.IArtifactID|null} [artifactId] Parameter artifactId + * @interface IQualityOfServiceSpec + * @property {google.protobuf.IDuration|null} [queueingBudget] QualityOfServiceSpec queueingBudget */ /** - * Constructs a new Parameter. + * Constructs a new QualityOfServiceSpec. * @memberof flyteidl.core - * @classdesc Represents a Parameter. - * @implements IParameter + * @classdesc Represents a QualityOfServiceSpec. + * @implements IQualityOfServiceSpec * @constructor - * @param {flyteidl.core.IParameter=} [properties] Properties to set + * @param {flyteidl.core.IQualityOfServiceSpec=} [properties] Properties to set */ - function Parameter(properties) { + function QualityOfServiceSpec(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -13229,128 +13641,62 @@ } /** - * Parameter var. - * @member {flyteidl.core.IVariable|null|undefined} var - * @memberof flyteidl.core.Parameter - * @instance - */ - Parameter.prototype["var"] = null; - - /** - * Parameter default. - * @member {flyteidl.core.ILiteral|null|undefined} default - * @memberof flyteidl.core.Parameter - * @instance - */ - Parameter.prototype["default"] = null; - - /** - * Parameter required. - * @member {boolean} required - * @memberof flyteidl.core.Parameter - * @instance - */ - Parameter.prototype.required = false; - - /** - * Parameter artifactQuery. - * @member {flyteidl.core.IArtifactQuery|null|undefined} artifactQuery - * @memberof flyteidl.core.Parameter - * @instance - */ - Parameter.prototype.artifactQuery = null; - - /** - * Parameter artifactId. - * @member {flyteidl.core.IArtifactID|null|undefined} artifactId - * @memberof flyteidl.core.Parameter - * @instance - */ - Parameter.prototype.artifactId = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * Parameter behavior. - * @member {"default"|"required"|"artifactQuery"|"artifactId"|undefined} behavior - * @memberof flyteidl.core.Parameter + * QualityOfServiceSpec queueingBudget. + * @member {google.protobuf.IDuration|null|undefined} queueingBudget + * @memberof flyteidl.core.QualityOfServiceSpec * @instance */ - Object.defineProperty(Parameter.prototype, "behavior", { - get: $util.oneOfGetter($oneOfFields = ["default", "required", "artifactQuery", "artifactId"]), - set: $util.oneOfSetter($oneOfFields) - }); + QualityOfServiceSpec.prototype.queueingBudget = null; /** - * Creates a new Parameter instance using the specified properties. + * Creates a new QualityOfServiceSpec instance using the specified properties. * @function create - * @memberof flyteidl.core.Parameter + * @memberof flyteidl.core.QualityOfServiceSpec * @static - * @param {flyteidl.core.IParameter=} [properties] Properties to set - * @returns {flyteidl.core.Parameter} Parameter instance + * @param {flyteidl.core.IQualityOfServiceSpec=} [properties] Properties to set + * @returns {flyteidl.core.QualityOfServiceSpec} QualityOfServiceSpec instance */ - Parameter.create = function create(properties) { - return new Parameter(properties); + QualityOfServiceSpec.create = function create(properties) { + return new QualityOfServiceSpec(properties); }; /** - * Encodes the specified Parameter message. Does not implicitly {@link flyteidl.core.Parameter.verify|verify} messages. + * Encodes the specified QualityOfServiceSpec message. Does not implicitly {@link flyteidl.core.QualityOfServiceSpec.verify|verify} messages. * @function encode - * @memberof flyteidl.core.Parameter + * @memberof flyteidl.core.QualityOfServiceSpec * @static - * @param {flyteidl.core.IParameter} message Parameter message or plain object to encode + * @param {flyteidl.core.IQualityOfServiceSpec} message QualityOfServiceSpec message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Parameter.encode = function encode(message, writer) { + QualityOfServiceSpec.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message["var"] != null && message.hasOwnProperty("var")) - $root.flyteidl.core.Variable.encode(message["var"], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message["default"] != null && message.hasOwnProperty("default")) - $root.flyteidl.core.Literal.encode(message["default"], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.required != null && message.hasOwnProperty("required")) - writer.uint32(/* id 3, wireType 0 =*/24).bool(message.required); - if (message.artifactQuery != null && message.hasOwnProperty("artifactQuery")) - $root.flyteidl.core.ArtifactQuery.encode(message.artifactQuery, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.artifactId != null && message.hasOwnProperty("artifactId")) - $root.flyteidl.core.ArtifactID.encode(message.artifactId, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.queueingBudget != null && message.hasOwnProperty("queueingBudget")) + $root.google.protobuf.Duration.encode(message.queueingBudget, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a Parameter message from the specified reader or buffer. + * Decodes a QualityOfServiceSpec message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.Parameter + * @memberof flyteidl.core.QualityOfServiceSpec * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.Parameter} Parameter + * @returns {flyteidl.core.QualityOfServiceSpec} QualityOfServiceSpec * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Parameter.decode = function decode(reader, length) { + QualityOfServiceSpec.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.Parameter(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.QualityOfServiceSpec(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message["var"] = $root.flyteidl.core.Variable.decode(reader, reader.uint32()); - break; - case 2: - message["default"] = $root.flyteidl.core.Literal.decode(reader, reader.uint32()); - break; - case 3: - message.required = reader.bool(); - break; - case 4: - message.artifactQuery = $root.flyteidl.core.ArtifactQuery.decode(reader, reader.uint32()); - break; - case 5: - message.artifactId = $root.flyteidl.core.ArtifactID.decode(reader, reader.uint32()); + message.queueingBudget = $root.google.protobuf.Duration.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -13361,82 +13707,46 @@ }; /** - * Verifies a Parameter message. + * Verifies a QualityOfServiceSpec message. * @function verify - * @memberof flyteidl.core.Parameter + * @memberof flyteidl.core.QualityOfServiceSpec * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Parameter.verify = function verify(message) { + QualityOfServiceSpec.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message["var"] != null && message.hasOwnProperty("var")) { - var error = $root.flyteidl.core.Variable.verify(message["var"]); + if (message.queueingBudget != null && message.hasOwnProperty("queueingBudget")) { + var error = $root.google.protobuf.Duration.verify(message.queueingBudget); if (error) - return "var." + error; - } - if (message["default"] != null && message.hasOwnProperty("default")) { - properties.behavior = 1; - { - var error = $root.flyteidl.core.Literal.verify(message["default"]); - if (error) - return "default." + error; - } - } - if (message.required != null && message.hasOwnProperty("required")) { - if (properties.behavior === 1) - return "behavior: multiple values"; - properties.behavior = 1; - if (typeof message.required !== "boolean") - return "required: boolean expected"; - } - if (message.artifactQuery != null && message.hasOwnProperty("artifactQuery")) { - if (properties.behavior === 1) - return "behavior: multiple values"; - properties.behavior = 1; - { - var error = $root.flyteidl.core.ArtifactQuery.verify(message.artifactQuery); - if (error) - return "artifactQuery." + error; - } - } - if (message.artifactId != null && message.hasOwnProperty("artifactId")) { - if (properties.behavior === 1) - return "behavior: multiple values"; - properties.behavior = 1; - { - var error = $root.flyteidl.core.ArtifactID.verify(message.artifactId); - if (error) - return "artifactId." + error; - } + return "queueingBudget." + error; } return null; }; - return Parameter; + return QualityOfServiceSpec; })(); - core.ParameterMap = (function() { + core.QualityOfService = (function() { /** - * Properties of a ParameterMap. + * Properties of a QualityOfService. * @memberof flyteidl.core - * @interface IParameterMap - * @property {Object.|null} [parameters] ParameterMap parameters + * @interface IQualityOfService + * @property {flyteidl.core.QualityOfService.Tier|null} [tier] QualityOfService tier + * @property {flyteidl.core.IQualityOfServiceSpec|null} [spec] QualityOfService spec */ /** - * Constructs a new ParameterMap. + * Constructs a new QualityOfService. * @memberof flyteidl.core - * @classdesc Represents a ParameterMap. - * @implements IParameterMap + * @classdesc Represents a QualityOfService. + * @implements IQualityOfService * @constructor - * @param {flyteidl.core.IParameterMap=} [properties] Properties to set + * @param {flyteidl.core.IQualityOfService=} [properties] Properties to set */ - function ParameterMap(properties) { - this.parameters = {}; + function QualityOfService(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -13444,70 +13754,89 @@ } /** - * ParameterMap parameters. - * @member {Object.} parameters - * @memberof flyteidl.core.ParameterMap + * QualityOfService tier. + * @member {flyteidl.core.QualityOfService.Tier} tier + * @memberof flyteidl.core.QualityOfService * @instance */ - ParameterMap.prototype.parameters = $util.emptyObject; + QualityOfService.prototype.tier = 0; /** - * Creates a new ParameterMap instance using the specified properties. + * QualityOfService spec. + * @member {flyteidl.core.IQualityOfServiceSpec|null|undefined} spec + * @memberof flyteidl.core.QualityOfService + * @instance + */ + QualityOfService.prototype.spec = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * QualityOfService designation. + * @member {"tier"|"spec"|undefined} designation + * @memberof flyteidl.core.QualityOfService + * @instance + */ + Object.defineProperty(QualityOfService.prototype, "designation", { + get: $util.oneOfGetter($oneOfFields = ["tier", "spec"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new QualityOfService instance using the specified properties. * @function create - * @memberof flyteidl.core.ParameterMap + * @memberof flyteidl.core.QualityOfService * @static - * @param {flyteidl.core.IParameterMap=} [properties] Properties to set - * @returns {flyteidl.core.ParameterMap} ParameterMap instance + * @param {flyteidl.core.IQualityOfService=} [properties] Properties to set + * @returns {flyteidl.core.QualityOfService} QualityOfService instance */ - ParameterMap.create = function create(properties) { - return new ParameterMap(properties); + QualityOfService.create = function create(properties) { + return new QualityOfService(properties); }; /** - * Encodes the specified ParameterMap message. Does not implicitly {@link flyteidl.core.ParameterMap.verify|verify} messages. + * Encodes the specified QualityOfService message. Does not implicitly {@link flyteidl.core.QualityOfService.verify|verify} messages. * @function encode - * @memberof flyteidl.core.ParameterMap + * @memberof flyteidl.core.QualityOfService * @static - * @param {flyteidl.core.IParameterMap} message ParameterMap message or plain object to encode + * @param {flyteidl.core.IQualityOfService} message QualityOfService message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ParameterMap.encode = function encode(message, writer) { + QualityOfService.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.parameters != null && message.hasOwnProperty("parameters")) - for (var keys = Object.keys(message.parameters), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.flyteidl.core.Parameter.encode(message.parameters[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } + if (message.tier != null && message.hasOwnProperty("tier")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.tier); + if (message.spec != null && message.hasOwnProperty("spec")) + $root.flyteidl.core.QualityOfServiceSpec.encode(message.spec, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a ParameterMap message from the specified reader or buffer. + * Decodes a QualityOfService message from the specified reader or buffer. * @function decode - * @memberof flyteidl.core.ParameterMap + * @memberof flyteidl.core.QualityOfService * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.core.ParameterMap} ParameterMap + * @returns {flyteidl.core.QualityOfService} QualityOfService * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ParameterMap.decode = function decode(reader, length) { + QualityOfService.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.ParameterMap(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.QualityOfService(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - reader.skip().pos++; - if (message.parameters === $util.emptyObject) - message.parameters = {}; - key = reader.string(); - reader.pos++; - message.parameters[key] = $root.flyteidl.core.Parameter.decode(reader, reader.uint32()); + message.tier = reader.int32(); + break; + case 2: + message.spec = $root.flyteidl.core.QualityOfServiceSpec.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -13518,30 +13847,61 @@ }; /** - * Verifies a ParameterMap message. + * Verifies a QualityOfService message. * @function verify - * @memberof flyteidl.core.ParameterMap + * @memberof flyteidl.core.QualityOfService * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ParameterMap.verify = function verify(message) { + QualityOfService.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.parameters != null && message.hasOwnProperty("parameters")) { - if (!$util.isObject(message.parameters)) - return "parameters: object expected"; - var key = Object.keys(message.parameters); - for (var i = 0; i < key.length; ++i) { - var error = $root.flyteidl.core.Parameter.verify(message.parameters[key[i]]); + var properties = {}; + if (message.tier != null && message.hasOwnProperty("tier")) { + properties.designation = 1; + switch (message.tier) { + default: + return "tier: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + } + if (message.spec != null && message.hasOwnProperty("spec")) { + if (properties.designation === 1) + return "designation: multiple values"; + properties.designation = 1; + { + var error = $root.flyteidl.core.QualityOfServiceSpec.verify(message.spec); if (error) - return "parameters." + error; + return "spec." + error; } } return null; }; - return ParameterMap; + /** + * Tier enum. + * @name flyteidl.core.QualityOfService.Tier + * @enum {string} + * @property {number} UNDEFINED=0 UNDEFINED value + * @property {number} HIGH=1 HIGH value + * @property {number} MEDIUM=2 MEDIUM value + * @property {number} LOW=3 LOW value + */ + QualityOfService.Tier = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNDEFINED"] = 0; + values[valuesById[1] = "HIGH"] = 1; + values[valuesById[2] = "MEDIUM"] = 2; + values[valuesById[3] = "LOW"] = 3; + return values; + })(); + + return QualityOfService; })(); core.Resources = (function() { @@ -54551,133 +54911,6 @@ return Timestamp; })(); - protobuf.Duration = (function() { - - /** - * Properties of a Duration. - * @memberof google.protobuf - * @interface IDuration - * @property {Long|null} [seconds] Duration seconds - * @property {number|null} [nanos] Duration nanos - */ - - /** - * Constructs a new Duration. - * @memberof google.protobuf - * @classdesc Represents a Duration. - * @implements IDuration - * @constructor - * @param {google.protobuf.IDuration=} [properties] Properties to set - */ - function Duration(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]]; - } - - /** - * Duration seconds. - * @member {Long} seconds - * @memberof google.protobuf.Duration - * @instance - */ - Duration.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Duration nanos. - * @member {number} nanos - * @memberof google.protobuf.Duration - * @instance - */ - Duration.prototype.nanos = 0; - - /** - * Creates a new Duration instance using the specified properties. - * @function create - * @memberof google.protobuf.Duration - * @static - * @param {google.protobuf.IDuration=} [properties] Properties to set - * @returns {google.protobuf.Duration} Duration instance - */ - Duration.create = function create(properties) { - return new Duration(properties); - }; - - /** - * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. - * @function encode - * @memberof google.protobuf.Duration - * @static - * @param {google.protobuf.IDuration} message Duration message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Duration.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.seconds != null && message.hasOwnProperty("seconds")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); - if (message.nanos != null && message.hasOwnProperty("nanos")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos); - return writer; - }; - - /** - * Decodes a Duration message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.Duration - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.Duration} Duration - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Duration.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.google.protobuf.Duration(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.seconds = reader.int64(); - break; - case 2: - message.nanos = reader.int32(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Verifies a Duration message. - * @function verify - * @memberof google.protobuf.Duration - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - Duration.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.seconds != null && message.hasOwnProperty("seconds")) - if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) - return "seconds: integer|Long expected"; - if (message.nanos != null && message.hasOwnProperty("nanos")) - if (!$util.isInteger(message.nanos)) - return "nanos: integer expected"; - return null; - }; - - return Duration; - })(); - protobuf.Struct = (function() { /** @@ -55178,6 +55411,133 @@ return ListValue; })(); + protobuf.Duration = (function() { + + /** + * Properties of a Duration. + * @memberof google.protobuf + * @interface IDuration + * @property {Long|null} [seconds] Duration seconds + * @property {number|null} [nanos] Duration nanos + */ + + /** + * Constructs a new Duration. + * @memberof google.protobuf + * @classdesc Represents a Duration. + * @implements IDuration + * @constructor + * @param {google.protobuf.IDuration=} [properties] Properties to set + */ + function Duration(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]]; + } + + /** + * Duration seconds. + * @member {Long} seconds + * @memberof google.protobuf.Duration + * @instance + */ + Duration.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Duration nanos. + * @member {number} nanos + * @memberof google.protobuf.Duration + * @instance + */ + Duration.prototype.nanos = 0; + + /** + * Creates a new Duration instance using the specified properties. + * @function create + * @memberof google.protobuf.Duration + * @static + * @param {google.protobuf.IDuration=} [properties] Properties to set + * @returns {google.protobuf.Duration} Duration instance + */ + Duration.create = function create(properties) { + return new Duration(properties); + }; + + /** + * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @function encode + * @memberof google.protobuf.Duration + * @static + * @param {google.protobuf.IDuration} message Duration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Duration.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.seconds != null && message.hasOwnProperty("seconds")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); + if (message.nanos != null && message.hasOwnProperty("nanos")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos); + return writer; + }; + + /** + * Decodes a Duration message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.Duration + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Duration} Duration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Duration.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.google.protobuf.Duration(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.seconds = reader.int64(); + break; + case 2: + message.nanos = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a Duration message. + * @function verify + * @memberof google.protobuf.Duration + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Duration.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) + return "seconds: integer|Long expected"; + if (message.nanos != null && message.hasOwnProperty("nanos")) + if (!$util.isInteger(message.nanos)) + return "nanos: integer expected"; + return null; + }; + + return Duration; + })(); + protobuf.DoubleValue = (function() { /** diff --git a/flyteidl/gen/pb_python/flyteidl/core/compiler_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/compiler_pb2.py index a47a859e9fc..6ecd85a11de 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/compiler_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/compiler_pb2.py @@ -11,11 +11,13 @@ _sym_db = _symbol_database.Default() +from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 +from flyteidl.core import interface_pb2 as flyteidl_dot_core_dot_interface__pb2 from flyteidl.core import workflow_pb2 as flyteidl_dot_core_dot_workflow__pb2 from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/compiler.proto\x12\rflyteidl.core\x1a\x1c\x66lyteidl/core/workflow.proto\x1a\x19\x66lyteidl/core/tasks.proto\"\x87\x03\n\rConnectionSet\x12L\n\ndownstream\x18\x07 \x03(\x0b\x32,.flyteidl.core.ConnectionSet.DownstreamEntryR\ndownstream\x12\x46\n\x08upstream\x18\x08 \x03(\x0b\x32*.flyteidl.core.ConnectionSet.UpstreamEntryR\x08upstream\x1a\x1a\n\x06IdList\x12\x10\n\x03ids\x18\x01 \x03(\tR\x03ids\x1a\x62\n\x0f\x44ownstreamEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x39\n\x05value\x18\x02 \x01(\x0b\x32#.flyteidl.core.ConnectionSet.IdListR\x05value:\x02\x38\x01\x1a`\n\rUpstreamEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x39\n\x05value\x18\x02 \x01(\x0b\x32#.flyteidl.core.ConnectionSet.IdListR\x05value:\x02\x38\x01\"\x8f\x01\n\x10\x43ompiledWorkflow\x12;\n\x08template\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowTemplateR\x08template\x12>\n\x0b\x63onnections\x18\x02 \x01(\x0b\x32\x1c.flyteidl.core.ConnectionSetR\x0b\x63onnections\"G\n\x0c\x43ompiledTask\x12\x37\n\x08template\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplateR\x08template\"\xcd\x01\n\x17\x43ompiledWorkflowClosure\x12\x39\n\x07primary\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.CompiledWorkflowR\x07primary\x12\x44\n\rsub_workflows\x18\x02 \x03(\x0b\x32\x1f.flyteidl.core.CompiledWorkflowR\x0csubWorkflows\x12\x31\n\x05tasks\x18\x03 \x03(\x0b\x32\x1b.flyteidl.core.CompiledTaskR\x05tasksB\xb3\x01\n\x11\x63om.flyteidl.coreB\rCompilerProtoP\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/compiler.proto\x12\rflyteidl.core\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/workflow.proto\x1a\x19\x66lyteidl/core/tasks.proto\"\x87\x03\n\rConnectionSet\x12L\n\ndownstream\x18\x07 \x03(\x0b\x32,.flyteidl.core.ConnectionSet.DownstreamEntryR\ndownstream\x12\x46\n\x08upstream\x18\x08 \x03(\x0b\x32*.flyteidl.core.ConnectionSet.UpstreamEntryR\x08upstream\x1a\x1a\n\x06IdList\x12\x10\n\x03ids\x18\x01 \x03(\tR\x03ids\x1a\x62\n\x0f\x44ownstreamEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x39\n\x05value\x18\x02 \x01(\x0b\x32#.flyteidl.core.ConnectionSet.IdListR\x05value:\x02\x38\x01\x1a`\n\rUpstreamEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x39\n\x05value\x18\x02 \x01(\x0b\x32#.flyteidl.core.ConnectionSet.IdListR\x05value:\x02\x38\x01\"\x8f\x01\n\x10\x43ompiledWorkflow\x12;\n\x08template\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowTemplateR\x08template\x12>\n\x0b\x63onnections\x18\x02 \x01(\x0b\x32\x1c.flyteidl.core.ConnectionSetR\x0b\x63onnections\"S\n\x12\x43ompiledLaunchPlan\x12=\n\x08template\x18\x01 \x01(\x0b\x32!.flyteidl.core.LaunchPlanTemplateR\x08template\"G\n\x0c\x43ompiledTask\x12\x37\n\x08template\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplateR\x08template\"\x93\x02\n\x17\x43ompiledWorkflowClosure\x12\x39\n\x07primary\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.CompiledWorkflowR\x07primary\x12\x44\n\rsub_workflows\x18\x02 \x03(\x0b\x32\x1f.flyteidl.core.CompiledWorkflowR\x0csubWorkflows\x12\x31\n\x05tasks\x18\x03 \x03(\x0b\x32\x1b.flyteidl.core.CompiledTaskR\x05tasks\x12\x44\n\x0claunch_plans\x18\x04 \x03(\x0b\x32!.flyteidl.core.CompiledLaunchPlanR\x0blaunchPlansB\xb3\x01\n\x11\x63om.flyteidl.coreB\rCompilerProtoP\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) @@ -28,18 +30,20 @@ _CONNECTIONSET_DOWNSTREAMENTRY._serialized_options = b'8\001' _CONNECTIONSET_UPSTREAMENTRY._options = None _CONNECTIONSET_UPSTREAMENTRY._serialized_options = b'8\001' - _globals['_CONNECTIONSET']._serialized_start=105 - _globals['_CONNECTIONSET']._serialized_end=496 - _globals['_CONNECTIONSET_IDLIST']._serialized_start=272 - _globals['_CONNECTIONSET_IDLIST']._serialized_end=298 - _globals['_CONNECTIONSET_DOWNSTREAMENTRY']._serialized_start=300 - _globals['_CONNECTIONSET_DOWNSTREAMENTRY']._serialized_end=398 - _globals['_CONNECTIONSET_UPSTREAMENTRY']._serialized_start=400 - _globals['_CONNECTIONSET_UPSTREAMENTRY']._serialized_end=496 - _globals['_COMPILEDWORKFLOW']._serialized_start=499 - _globals['_COMPILEDWORKFLOW']._serialized_end=642 - _globals['_COMPILEDTASK']._serialized_start=644 - _globals['_COMPILEDTASK']._serialized_end=715 - _globals['_COMPILEDWORKFLOWCLOSURE']._serialized_start=718 - _globals['_COMPILEDWORKFLOWCLOSURE']._serialized_end=923 + _globals['_CONNECTIONSET']._serialized_start=168 + _globals['_CONNECTIONSET']._serialized_end=559 + _globals['_CONNECTIONSET_IDLIST']._serialized_start=335 + _globals['_CONNECTIONSET_IDLIST']._serialized_end=361 + _globals['_CONNECTIONSET_DOWNSTREAMENTRY']._serialized_start=363 + _globals['_CONNECTIONSET_DOWNSTREAMENTRY']._serialized_end=461 + _globals['_CONNECTIONSET_UPSTREAMENTRY']._serialized_start=463 + _globals['_CONNECTIONSET_UPSTREAMENTRY']._serialized_end=559 + _globals['_COMPILEDWORKFLOW']._serialized_start=562 + _globals['_COMPILEDWORKFLOW']._serialized_end=705 + _globals['_COMPILEDLAUNCHPLAN']._serialized_start=707 + _globals['_COMPILEDLAUNCHPLAN']._serialized_end=790 + _globals['_COMPILEDTASK']._serialized_start=792 + _globals['_COMPILEDTASK']._serialized_end=863 + _globals['_COMPILEDWORKFLOWCLOSURE']._serialized_start=866 + _globals['_COMPILEDWORKFLOWCLOSURE']._serialized_end=1141 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/compiler_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/compiler_pb2.pyi index 509e8f4d587..26b6caa4aa8 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/compiler_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/compiler_pb2.pyi @@ -1,3 +1,5 @@ +from flyteidl.core import identifier_pb2 as _identifier_pb2 +from flyteidl.core import interface_pb2 as _interface_pb2 from flyteidl.core import workflow_pb2 as _workflow_pb2 from flyteidl.core import tasks_pb2 as _tasks_pb2 from google.protobuf.internal import containers as _containers @@ -42,6 +44,12 @@ class CompiledWorkflow(_message.Message): connections: ConnectionSet def __init__(self, template: _Optional[_Union[_workflow_pb2.WorkflowTemplate, _Mapping]] = ..., connections: _Optional[_Union[ConnectionSet, _Mapping]] = ...) -> None: ... +class CompiledLaunchPlan(_message.Message): + __slots__ = ["template"] + TEMPLATE_FIELD_NUMBER: _ClassVar[int] + template: _workflow_pb2.LaunchPlanTemplate + def __init__(self, template: _Optional[_Union[_workflow_pb2.LaunchPlanTemplate, _Mapping]] = ...) -> None: ... + class CompiledTask(_message.Message): __slots__ = ["template"] TEMPLATE_FIELD_NUMBER: _ClassVar[int] @@ -49,11 +57,13 @@ class CompiledTask(_message.Message): def __init__(self, template: _Optional[_Union[_tasks_pb2.TaskTemplate, _Mapping]] = ...) -> None: ... class CompiledWorkflowClosure(_message.Message): - __slots__ = ["primary", "sub_workflows", "tasks"] + __slots__ = ["primary", "sub_workflows", "tasks", "launch_plans"] PRIMARY_FIELD_NUMBER: _ClassVar[int] SUB_WORKFLOWS_FIELD_NUMBER: _ClassVar[int] TASKS_FIELD_NUMBER: _ClassVar[int] + LAUNCH_PLANS_FIELD_NUMBER: _ClassVar[int] primary: CompiledWorkflow sub_workflows: _containers.RepeatedCompositeFieldContainer[CompiledWorkflow] tasks: _containers.RepeatedCompositeFieldContainer[CompiledTask] - def __init__(self, primary: _Optional[_Union[CompiledWorkflow, _Mapping]] = ..., sub_workflows: _Optional[_Iterable[_Union[CompiledWorkflow, _Mapping]]] = ..., tasks: _Optional[_Iterable[_Union[CompiledTask, _Mapping]]] = ...) -> None: ... + launch_plans: _containers.RepeatedCompositeFieldContainer[CompiledLaunchPlan] + def __init__(self, primary: _Optional[_Union[CompiledWorkflow, _Mapping]] = ..., sub_workflows: _Optional[_Iterable[_Union[CompiledWorkflow, _Mapping]]] = ..., tasks: _Optional[_Iterable[_Union[CompiledTask, _Mapping]]] = ..., launch_plans: _Optional[_Iterable[_Union[CompiledLaunchPlan, _Mapping]]] = ...) -> None: ... diff --git a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py index 8487a5170e3..0d5c6e9b466 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py @@ -22,7 +22,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\"{\n\x07IfBlock\x12>\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpressionR\tcondition\x12\x30\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x08thenNode\"\xd4\x01\n\x0bIfElseBlock\x12*\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlockR\x04\x63\x61se\x12,\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlockR\x05other\x12\x32\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00R\x08\x65lseNode\x12,\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rrorB\t\n\x07\x64\x65\x66\x61ult\"A\n\nBranchNode\x12\x33\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlockR\x06ifElse\"\x97\x01\n\x08TaskNode\x12>\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0breferenceId\x12>\n\toverrides\x18\x02 \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverridesB\x0b\n\treference\"\xa6\x01\n\x0cWorkflowNode\x12\x42\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\rlaunchplanRef\x12\x45\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0esubWorkflowRefB\x0b\n\treference\"/\n\x10\x41pproveCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\"\x90\x01\n\x0fSignalCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x30\n\x14output_variable_name\x18\x03 \x01(\tR\x12outputVariableName\"G\n\x0eSleepCondition\x12\x35\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\"\xc5\x01\n\x08GateNode\x12;\n\x07\x61pprove\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.ApproveConditionH\x00R\x07\x61pprove\x12\x38\n\x06signal\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SignalConditionH\x00R\x06signal\x12\x35\n\x05sleep\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.SleepConditionH\x00R\x05sleepB\x0b\n\tcondition\"\xbf\x01\n\tArrayNode\x12\'\n\x04node\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x04node\x12 \n\x0bparallelism\x18\x02 \x01(\rR\x0bparallelism\x12%\n\rmin_successes\x18\x03 \x01(\rH\x00R\x0cminSuccesses\x12,\n\x11min_success_ratio\x18\x04 \x01(\x02H\x00R\x0fminSuccessRatioB\x12\n\x10success_criteria\"\xce\x01\n\x0cNodeMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x33\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x07timeout\x12\x36\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategyR\x07retries\x12&\n\rinterruptible\x18\x06 \x01(\x08H\x00R\rinterruptibleB\x15\n\x13interruptible_value\"/\n\x05\x41lias\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x14\n\x05\x61lias\x18\x02 \x01(\tR\x05\x61lias\"\x9f\x04\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadataR\x08metadata\x12.\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x06inputs\x12*\n\x11upstream_node_ids\x18\x04 \x03(\tR\x0fupstreamNodeIds\x12;\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.AliasR\routputAliases\x12\x36\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00R\x08taskNode\x12\x42\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00R\x0cworkflowNode\x12<\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00R\nbranchNode\x12\x36\n\tgate_node\x18\t \x01(\x0b\x32\x17.flyteidl.core.GateNodeH\x00R\x08gateNode\x12\x39\n\narray_node\x18\n \x01(\x0b\x32\x18.flyteidl.core.ArrayNodeH\x00R\tarrayNodeB\x08\n\x06target\"\xfc\x02\n\x10WorkflowMetadata\x12M\n\x12quality_of_service\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12N\n\non_failure\x18\x02 \x01(\x0e\x32/.flyteidl.core.WorkflowMetadata.OnFailurePolicyR\tonFailure\x12=\n\x04tags\x18\x03 \x03(\x0b\x32).flyteidl.core.WorkflowMetadata.TagsEntryR\x04tags\x1a\x37\n\tTagsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"Q\n\x0fOnFailurePolicy\x12\x14\n\x10\x46\x41IL_IMMEDIATELY\x10\x00\x12(\n$FAIL_AFTER_EXECUTABLE_NODES_COMPLETE\x10\x01\"@\n\x18WorkflowMetadataDefaults\x12$\n\rinterruptible\x18\x01 \x01(\x08R\rinterruptible\"\xa2\x03\n\x10WorkflowTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\x08metadata\x18\x02 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowMetadataR\x08metadata\x12;\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12)\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.NodeR\x05nodes\x12\x30\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x07outputs\x12\x36\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x0b\x66\x61ilureNode\x12T\n\x11metadata_defaults\x18\x07 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaultsR\x10metadataDefaults\"\x9c\x01\n\x11TaskNodeOverrides\x12\x36\n\tresources\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\x12O\n\x12\x65xtended_resources\x18\x02 \x01(\x0b\x32 .flyteidl.core.ExtendedResourcesR\x11\x65xtendedResourcesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rWorkflowProtoP\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/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\"{\n\x07IfBlock\x12>\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpressionR\tcondition\x12\x30\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x08thenNode\"\xd4\x01\n\x0bIfElseBlock\x12*\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlockR\x04\x63\x61se\x12,\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlockR\x05other\x12\x32\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00R\x08\x65lseNode\x12,\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rrorB\t\n\x07\x64\x65\x66\x61ult\"A\n\nBranchNode\x12\x33\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlockR\x06ifElse\"\x97\x01\n\x08TaskNode\x12>\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0breferenceId\x12>\n\toverrides\x18\x02 \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverridesB\x0b\n\treference\"\xa6\x01\n\x0cWorkflowNode\x12\x42\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\rlaunchplanRef\x12\x45\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0esubWorkflowRefB\x0b\n\treference\"/\n\x10\x41pproveCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\"\x90\x01\n\x0fSignalCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x30\n\x14output_variable_name\x18\x03 \x01(\tR\x12outputVariableName\"G\n\x0eSleepCondition\x12\x35\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\"\xc5\x01\n\x08GateNode\x12;\n\x07\x61pprove\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.ApproveConditionH\x00R\x07\x61pprove\x12\x38\n\x06signal\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SignalConditionH\x00R\x06signal\x12\x35\n\x05sleep\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.SleepConditionH\x00R\x05sleepB\x0b\n\tcondition\"\xbf\x01\n\tArrayNode\x12\'\n\x04node\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x04node\x12 \n\x0bparallelism\x18\x02 \x01(\rR\x0bparallelism\x12%\n\rmin_successes\x18\x03 \x01(\rH\x00R\x0cminSuccesses\x12,\n\x11min_success_ratio\x18\x04 \x01(\x02H\x00R\x0fminSuccessRatioB\x12\n\x10success_criteria\"\x8c\x03\n\x0cNodeMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x33\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x07timeout\x12\x36\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategyR\x07retries\x12&\n\rinterruptible\x18\x06 \x01(\x08H\x00R\rinterruptible\x12\x1e\n\tcacheable\x18\x07 \x01(\x08H\x01R\tcacheable\x12%\n\rcache_version\x18\x08 \x01(\tH\x02R\x0c\x63\x61\x63heVersion\x12/\n\x12\x63\x61\x63he_serializable\x18\t \x01(\x08H\x03R\x11\x63\x61\x63heSerializableB\x15\n\x13interruptible_valueB\x11\n\x0f\x63\x61\x63heable_valueB\x15\n\x13\x63\x61\x63he_version_valueB\x1a\n\x18\x63\x61\x63he_serializable_value\"/\n\x05\x41lias\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x14\n\x05\x61lias\x18\x02 \x01(\tR\x05\x61lias\"\x9f\x04\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadataR\x08metadata\x12.\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x06inputs\x12*\n\x11upstream_node_ids\x18\x04 \x03(\tR\x0fupstreamNodeIds\x12;\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.AliasR\routputAliases\x12\x36\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00R\x08taskNode\x12\x42\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00R\x0cworkflowNode\x12<\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00R\nbranchNode\x12\x36\n\tgate_node\x18\t \x01(\x0b\x32\x17.flyteidl.core.GateNodeH\x00R\x08gateNode\x12\x39\n\narray_node\x18\n \x01(\x0b\x32\x18.flyteidl.core.ArrayNodeH\x00R\tarrayNodeB\x08\n\x06target\"\xfc\x02\n\x10WorkflowMetadata\x12M\n\x12quality_of_service\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12N\n\non_failure\x18\x02 \x01(\x0e\x32/.flyteidl.core.WorkflowMetadata.OnFailurePolicyR\tonFailure\x12=\n\x04tags\x18\x03 \x03(\x0b\x32).flyteidl.core.WorkflowMetadata.TagsEntryR\x04tags\x1a\x37\n\tTagsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"Q\n\x0fOnFailurePolicy\x12\x14\n\x10\x46\x41IL_IMMEDIATELY\x10\x00\x12(\n$FAIL_AFTER_EXECUTABLE_NODES_COMPLETE\x10\x01\"@\n\x18WorkflowMetadataDefaults\x12$\n\rinterruptible\x18\x01 \x01(\x08R\rinterruptible\"\xa2\x03\n\x10WorkflowTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\x08metadata\x18\x02 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowMetadataR\x08metadata\x12;\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12)\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.NodeR\x05nodes\x12\x30\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x07outputs\x12\x36\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x0b\x66\x61ilureNode\x12T\n\x11metadata_defaults\x18\x07 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaultsR\x10metadataDefaults\"\x9c\x01\n\x11TaskNodeOverrides\x12\x36\n\tresources\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\x12O\n\x12\x65xtended_resources\x18\x02 \x01(\x0b\x32 .flyteidl.core.ExtendedResourcesR\x11\x65xtendedResources\"|\n\x12LaunchPlanTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\tinterface\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterfaceB\xb3\x01\n\x11\x63om.flyteidl.coreB\rWorkflowProtoP\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) @@ -54,21 +54,23 @@ _globals['_ARRAYNODE']._serialized_start=1518 _globals['_ARRAYNODE']._serialized_end=1709 _globals['_NODEMETADATA']._serialized_start=1712 - _globals['_NODEMETADATA']._serialized_end=1918 - _globals['_ALIAS']._serialized_start=1920 - _globals['_ALIAS']._serialized_end=1967 - _globals['_NODE']._serialized_start=1970 - _globals['_NODE']._serialized_end=2513 - _globals['_WORKFLOWMETADATA']._serialized_start=2516 - _globals['_WORKFLOWMETADATA']._serialized_end=2896 - _globals['_WORKFLOWMETADATA_TAGSENTRY']._serialized_start=2758 - _globals['_WORKFLOWMETADATA_TAGSENTRY']._serialized_end=2813 - _globals['_WORKFLOWMETADATA_ONFAILUREPOLICY']._serialized_start=2815 - _globals['_WORKFLOWMETADATA_ONFAILUREPOLICY']._serialized_end=2896 - _globals['_WORKFLOWMETADATADEFAULTS']._serialized_start=2898 - _globals['_WORKFLOWMETADATADEFAULTS']._serialized_end=2962 - _globals['_WORKFLOWTEMPLATE']._serialized_start=2965 - _globals['_WORKFLOWTEMPLATE']._serialized_end=3383 - _globals['_TASKNODEOVERRIDES']._serialized_start=3386 - _globals['_TASKNODEOVERRIDES']._serialized_end=3542 + _globals['_NODEMETADATA']._serialized_end=2108 + _globals['_ALIAS']._serialized_start=2110 + _globals['_ALIAS']._serialized_end=2157 + _globals['_NODE']._serialized_start=2160 + _globals['_NODE']._serialized_end=2703 + _globals['_WORKFLOWMETADATA']._serialized_start=2706 + _globals['_WORKFLOWMETADATA']._serialized_end=3086 + _globals['_WORKFLOWMETADATA_TAGSENTRY']._serialized_start=2948 + _globals['_WORKFLOWMETADATA_TAGSENTRY']._serialized_end=3003 + _globals['_WORKFLOWMETADATA_ONFAILUREPOLICY']._serialized_start=3005 + _globals['_WORKFLOWMETADATA_ONFAILUREPOLICY']._serialized_end=3086 + _globals['_WORKFLOWMETADATADEFAULTS']._serialized_start=3088 + _globals['_WORKFLOWMETADATADEFAULTS']._serialized_end=3152 + _globals['_WORKFLOWTEMPLATE']._serialized_start=3155 + _globals['_WORKFLOWTEMPLATE']._serialized_end=3573 + _globals['_TASKNODEOVERRIDES']._serialized_start=3576 + _globals['_TASKNODEOVERRIDES']._serialized_end=3732 + _globals['_LAUNCHPLANTEMPLATE']._serialized_start=3734 + _globals['_LAUNCHPLANTEMPLATE']._serialized_end=3858 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi index daf8082c7b4..d23b07f5403 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi @@ -102,16 +102,22 @@ class ArrayNode(_message.Message): def __init__(self, node: _Optional[_Union[Node, _Mapping]] = ..., parallelism: _Optional[int] = ..., min_successes: _Optional[int] = ..., min_success_ratio: _Optional[float] = ...) -> None: ... class NodeMetadata(_message.Message): - __slots__ = ["name", "timeout", "retries", "interruptible"] + __slots__ = ["name", "timeout", "retries", "interruptible", "cacheable", "cache_version", "cache_serializable"] NAME_FIELD_NUMBER: _ClassVar[int] TIMEOUT_FIELD_NUMBER: _ClassVar[int] RETRIES_FIELD_NUMBER: _ClassVar[int] INTERRUPTIBLE_FIELD_NUMBER: _ClassVar[int] + CACHEABLE_FIELD_NUMBER: _ClassVar[int] + CACHE_VERSION_FIELD_NUMBER: _ClassVar[int] + CACHE_SERIALIZABLE_FIELD_NUMBER: _ClassVar[int] name: str timeout: _duration_pb2.Duration retries: _literals_pb2.RetryStrategy interruptible: bool - def __init__(self, name: _Optional[str] = ..., timeout: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., retries: _Optional[_Union[_literals_pb2.RetryStrategy, _Mapping]] = ..., interruptible: bool = ...) -> None: ... + cacheable: bool + cache_version: str + cache_serializable: bool + def __init__(self, name: _Optional[str] = ..., timeout: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., retries: _Optional[_Union[_literals_pb2.RetryStrategy, _Mapping]] = ..., interruptible: bool = ..., cacheable: bool = ..., cache_version: _Optional[str] = ..., cache_serializable: bool = ...) -> None: ... class Alias(_message.Message): __slots__ = ["var", "alias"] @@ -199,3 +205,11 @@ class TaskNodeOverrides(_message.Message): resources: _tasks_pb2.Resources extended_resources: _tasks_pb2.ExtendedResources def __init__(self, resources: _Optional[_Union[_tasks_pb2.Resources, _Mapping]] = ..., extended_resources: _Optional[_Union[_tasks_pb2.ExtendedResources, _Mapping]] = ...) -> None: ... + +class LaunchPlanTemplate(_message.Message): + __slots__ = ["id", "interface"] + ID_FIELD_NUMBER: _ClassVar[int] + INTERFACE_FIELD_NUMBER: _ClassVar[int] + id: _identifier_pb2.Identifier + interface: _interface_pb2.TypedInterface + def __init__(self, id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., interface: _Optional[_Union[_interface_pb2.TypedInterface, _Mapping]] = ...) -> None: ... diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index 64fb26d7d72..6f38b7b50b9 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -2415,6 +2415,15 @@ pub struct NodeMetadata { /// Identify whether node is interruptible #[prost(oneof="node_metadata::InterruptibleValue", tags="6")] pub interruptible_value: ::core::option::Option, + /// Identify whether a node should have it's outputs cached. + #[prost(oneof="node_metadata::CacheableValue", tags="7")] + pub cacheable_value: ::core::option::Option, + /// The version of the cache to use. + #[prost(oneof="node_metadata::CacheVersionValue", tags="8")] + pub cache_version_value: ::core::option::Option, + /// Identify whether caching operations involving this node should be serialized. + #[prost(oneof="node_metadata::CacheSerializableValue", tags="9")] + pub cache_serializable_value: ::core::option::Option, } /// Nested message and enum types in `NodeMetadata`. pub mod node_metadata { @@ -2425,6 +2434,27 @@ pub mod node_metadata { #[prost(bool, tag="6")] Interruptible(bool), } + /// Identify whether a node should have it's outputs cached. + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum CacheableValue { + #[prost(bool, tag="7")] + Cacheable(bool), + } + /// The version of the cache to use. + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum CacheVersionValue { + #[prost(string, tag="8")] + CacheVersion(::prost::alloc::string::String), + } + /// Identify whether caching operations involving this node should be serialized. + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum CacheSerializableValue { + #[prost(bool, tag="9")] + CacheSerializable(bool), + } } /// Links a variable to an alias. #[allow(clippy::derive_partial_eq_without_eq)] @@ -2603,6 +2633,17 @@ pub struct TaskNodeOverrides { #[prost(message, optional, tag="2")] pub extended_resources: ::core::option::Option, } +/// A structure that uniquely identifies a launch plan in the system. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanTemplate { + /// A globally unique identifier for the launch plan. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// The input and output interface for the launch plan + #[prost(message, optional, tag="2")] + pub interface: ::core::option::Option, +} /// Adjacency list for the workflow. This is created as part of the compilation process. Every process after the compilation /// step uses this created ConnectionSet #[allow(clippy::derive_partial_eq_without_eq)] @@ -2635,6 +2676,14 @@ pub struct CompiledWorkflow { #[prost(message, optional, tag="2")] pub connections: ::core::option::Option, } +/// Output of the compilation step. This object represents one LaunchPlan. We store more metadata at this layer +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CompiledLaunchPlan { + /// Completely contained LaunchPlan Template + #[prost(message, optional, tag="1")] + pub template: ::core::option::Option, +} /// Output of the Compilation step. This object represent one Task. We store more metadata at this layer #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -2663,6 +2712,10 @@ pub struct CompiledWorkflowClosure { /// +required (at least 1) #[prost(message, repeated, tag="3")] pub tasks: ::prost::alloc::vec::Vec, + /// A collection of launch plans that are compiled. Guaranteed that there will only exist one and only one launch plan + /// with a given id, i.e., every launch plan has a unique id. + #[prost(message, repeated, tag="4")] + pub launch_plans: ::prost::alloc::vec::Vec, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] diff --git a/flyteidl/protos/flyteidl/core/compiler.proto b/flyteidl/protos/flyteidl/core/compiler.proto index aaa5bff69e5..620ee26f2de 100644 --- a/flyteidl/protos/flyteidl/core/compiler.proto +++ b/flyteidl/protos/flyteidl/core/compiler.proto @@ -4,6 +4,8 @@ package flyteidl.core; option go_package = "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"; +import "flyteidl/core/identifier.proto"; +import "flyteidl/core/interface.proto"; import "flyteidl/core/workflow.proto"; import "flyteidl/core/tasks.proto"; @@ -29,6 +31,12 @@ message CompiledWorkflow { ConnectionSet connections = 2; } +// Output of the compilation step. This object represents one LaunchPlan. We store more metadata at this layer +message CompiledLaunchPlan { + // Completely contained LaunchPlan Template + LaunchPlanTemplate template = 1; +} + // Output of the Compilation step. This object represent one Task. We store more metadata at this layer message CompiledTask { // Completely contained TaskTemplate @@ -50,4 +58,7 @@ message CompiledWorkflowClosure { // Guaranteed that there will only exist one and only one task with a given id, i.e., every task has a unique id //+required (at least 1) repeated CompiledTask tasks = 3; + // A collection of launch plans that are compiled. Guaranteed that there will only exist one and only one launch plan + // with a given id, i.e., every launch plan has a unique id. + repeated CompiledLaunchPlan launch_plans = 4; } diff --git a/flyteidl/protos/flyteidl/core/workflow.proto b/flyteidl/protos/flyteidl/core/workflow.proto index 8c74094b5b1..f06b04860ac 100644 --- a/flyteidl/protos/flyteidl/core/workflow.proto +++ b/flyteidl/protos/flyteidl/core/workflow.proto @@ -149,6 +149,20 @@ message NodeMetadata { bool interruptible = 6; }; + // Identify whether a node should have it's outputs cached. + oneof cacheable_value { + bool cacheable = 7; + } + + // The version of the cache to use. + oneof cache_version_value { + string cache_version = 8; + } + + // Identify whether caching operations involving this node should be serialized. + oneof cache_serializable_value { + bool cache_serializable = 9; + } } // Links a variable to an alias. @@ -284,3 +298,12 @@ message TaskNodeOverrides { // v1.ResourceRequirements, to allocate to a task. ExtendedResources extended_resources = 2; } + +// A structure that uniquely identifies a launch plan in the system. +message LaunchPlanTemplate { + // A globally unique identifier for the launch plan. + Identifier id = 1; + + // The input and output interface for the launch plan + TypedInterface interface = 2; +} From 0bc0a89b3ea9df6027dc086cd56a6142bccd4c9c Mon Sep 17 00:00:00 2001 From: "Ethan Brown (Domino)" <111539728+ddl-ebrown@users.noreply.github.com> Date: Fri, 9 Feb 2024 13:14:28 -0800 Subject: [PATCH 010/107] Flyte-core add support for ingressClassName in ingress (#4805) * Add support for ingressClassName in ingress - ingressClassName field was added in k8s 1.18, and effectively replaces the unofficially supported annotation `ingress.class` https://kubernetes.io/docs/concepts/services-networking/ingress/#deprecated-annotation Signed-off-by: ddl-ebrown * Flyte-core don't render empty ingress annotations - It's possible to have no annotations set for the ingress, which ends up rendering an annotations: This can make some validators unhappy, so rewrite the rendering to only emit annotations: when the collection is not empty Signed-off-by: ddl-ebrown --------- Signed-off-by: ddl-ebrown --- charts/flyte-core/README.md | 3 ++- charts/flyte-core/templates/common/ingress.yaml | 12 ++++++------ charts/flyte-core/values.yaml | 2 ++ .../eks/flyte_aws_scheduler_helm_generated.yaml | 6 ++++-- .../eks/flyte_helm_controlplane_generated.yaml | 6 ++++-- deployment/eks/flyte_helm_dataplane_generated.yaml | 6 ++++-- deployment/eks/flyte_helm_generated.yaml | 6 ++++-- .../gcp/flyte_helm_controlplane_generated.yaml | 6 ++++-- deployment/gcp/flyte_helm_dataplane_generated.yaml | 6 ++++-- deployment/gcp/flyte_helm_generated.yaml | 6 ++++-- deployment/sandbox/flyte_helm_generated.yaml | 1 + 11 files changed, 39 insertions(+), 21 deletions(-) diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index 5a18ff8b7c8..a4518bb3ac7 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -73,13 +73,14 @@ helm install gateway bitnami/contour -n flyte | cluster_resource_manager.service_account_name | string | `"flyteadmin"` | Service account name to run with | | cluster_resource_manager.templates | list | `[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]` | Resource templates that should be applied | | cluster_resource_manager.templates[0] | object | `{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"}` | Template for namespaces resources | -| common | object | `{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":false}}` | ---------------------------------------------- COMMON SETTINGS | +| common | object | `{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"ingressClassName":null,"separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":false}}` | ---------------------------------------------- COMMON SETTINGS | | common.databaseSecret.name | string | `""` | Specify name of K8s Secret which contains Database password. Leave it empty if you don't need this Secret | | common.databaseSecret.secretManifest | object | `{}` | Specify your Secret (with sensitive data) or pseudo-manifest (without sensitive data). See https://github.com/godaddy/kubernetes-external-secrets | | common.flyteNamespaceTemplate.enabled | bool | `false` | - Enable or disable creating Flyte namespace in template. Enable when using helm as template-engine only. Disable when using `helm install ...`. | | common.ingress.albSSLRedirect | bool | `false` | - albSSLRedirect adds a special route for ssl redirect. Only useful in combination with the AWS LoadBalancer Controller. | | common.ingress.annotations | object | `{"nginx.ingress.kubernetes.io/app-root":"/console"}` | - Ingress annotations applied to both HTTP and GRPC ingresses. | | common.ingress.enabled | bool | `true` | - Enable or disable creating Ingress for Flyte. Relevant to disable when using e.g. Istio as ingress controller. | +| common.ingress.ingressClassName | string | `nil` | - Sets the ingressClassName | | common.ingress.separateGrpcIngress | bool | `false` | - separateGrpcIngress puts GRPC routes into a separate ingress if true. Required for certain ingress controllers like nginx. | | common.ingress.separateGrpcIngressAnnotations | object | `{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"}` | - Extra Ingress annotations applied only to the GRPC ingress. Only makes sense if `separateGrpcIngress` is enabled. | | common.ingress.tls | object | `{"enabled":false}` | - Ingress hostname host: | diff --git a/charts/flyte-core/templates/common/ingress.yaml b/charts/flyte-core/templates/common/ingress.yaml index 2a45152a0b7..69f7c4ae070 100644 --- a/charts/flyte-core/templates/common/ingress.yaml +++ b/charts/flyte-core/templates/common/ingress.yaml @@ -163,6 +163,7 @@ metadata: annotations: {{ tpl (toYaml .) $ | nindent 4}} {{- end }} spec: + ingressClassName: {{ .Values.common.ingress.ingressClassName | quote }} rules: - http: paths: @@ -477,14 +478,13 @@ kind: Ingress metadata: name: {{ template "flyte.name" . }}-grpc namespace: {{ template "flyte.namespace" . }} - annotations: - {{- with .Values.common.ingress.annotations }} - {{- tpl (toYaml .) $ | nindent 4}} - {{- end }} - {{- with .Values.common.ingress.separateGrpcIngressAnnotations }} - {{- toYaml . | nindent 4}} + {{- $annotations := .Values.common.ingress.annotations | deepCopy -}} + {{- $_ := merge $annotations .Values.common.ingress.separateGrpcIngressAnnotations -}} + {{- with $annotations }} + annotations: {{ tpl (toYaml .) $ | nindent 4}} {{- end }} spec: + ingressClassName: {{ .Values.common.ingress.ingressClassName | quote }} rules: - host: {{ tpl (toYaml .Values.common.ingress.host) $ }} http: diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index 07eb76eeb6c..16e7accc5ea 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -432,6 +432,8 @@ common: # -- Specify your Secret (with sensitive data) or pseudo-manifest (without sensitive data). See https://github.com/godaddy/kubernetes-external-secrets secretManifest: {} ingress: + # --- Sets the ingressClassName + ingressClassName: # --- Enable or disable creating Ingress for Flyte. Relevant to disable when using e.g. Istio as ingress controller. enabled: true # --- Enable or disable HMR route to flyteconsole. This is useful only for frontend development. diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index 44bc9bf6976..a0aebff4957 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -1394,6 +1394,7 @@ metadata: kubernetes.io/ingress.class: alb nginx.ingress.kubernetes.io/app-root: /console spec: + ingressClassName: rules: - http: paths: @@ -1549,9 +1550,10 @@ kind: Ingress metadata: name: flyte-core-grpc namespace: flyte - annotations: + annotations: alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' + alb.ingress.kubernetes.io/backend-protocol-version: GRPC alb.ingress.kubernetes.io/certificate-arn: '' alb.ingress.kubernetes.io/group.name: flyte alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' @@ -1560,9 +1562,9 @@ metadata: alb.ingress.kubernetes.io/target-type: ip kubernetes.io/ingress.class: alb nginx.ingress.kubernetes.io/app-root: /console - alb.ingress.kubernetes.io/backend-protocol-version: GRPC nginx.ingress.kubernetes.io/backend-protocol: GRPC spec: + ingressClassName: rules: - host: null http: diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml index 5db040c65dd..be8b4423719 100644 --- a/deployment/eks/flyte_helm_controlplane_generated.yaml +++ b/deployment/eks/flyte_helm_controlplane_generated.yaml @@ -1020,6 +1020,7 @@ metadata: kubernetes.io/ingress.class: alb nginx.ingress.kubernetes.io/app-root: /console spec: + ingressClassName: rules: - http: paths: @@ -1175,9 +1176,10 @@ kind: Ingress metadata: name: flyte-core-grpc namespace: flyte - annotations: + annotations: alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' + alb.ingress.kubernetes.io/backend-protocol-version: GRPC alb.ingress.kubernetes.io/certificate-arn: '' alb.ingress.kubernetes.io/group.name: flyte alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' @@ -1186,9 +1188,9 @@ metadata: alb.ingress.kubernetes.io/target-type: ip kubernetes.io/ingress.class: alb nginx.ingress.kubernetes.io/app-root: /console - alb.ingress.kubernetes.io/backend-protocol-version: GRPC nginx.ingress.kubernetes.io/backend-protocol: GRPC spec: + ingressClassName: rules: - host: null http: diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index d4c301510b9..5fa5c094984 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -593,6 +593,7 @@ metadata: kubernetes.io/ingress.class: alb nginx.ingress.kubernetes.io/app-root: /console spec: + ingressClassName: rules: - http: paths: @@ -748,9 +749,10 @@ kind: Ingress metadata: name: flyte-core-grpc namespace: flyte - annotations: + annotations: alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' + alb.ingress.kubernetes.io/backend-protocol-version: GRPC alb.ingress.kubernetes.io/certificate-arn: '' alb.ingress.kubernetes.io/group.name: flyte alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' @@ -759,9 +761,9 @@ metadata: alb.ingress.kubernetes.io/target-type: ip kubernetes.io/ingress.class: alb nginx.ingress.kubernetes.io/app-root: /console - alb.ingress.kubernetes.io/backend-protocol-version: GRPC nginx.ingress.kubernetes.io/backend-protocol: GRPC spec: + ingressClassName: rules: - host: null http: diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index dc69345261c..1b84af16a53 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -1513,6 +1513,7 @@ metadata: kubernetes.io/ingress.class: alb nginx.ingress.kubernetes.io/app-root: /console spec: + ingressClassName: rules: - http: paths: @@ -1668,9 +1669,10 @@ kind: Ingress metadata: name: flyte-core-grpc namespace: flyte - annotations: + annotations: alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' + alb.ingress.kubernetes.io/backend-protocol-version: GRPC alb.ingress.kubernetes.io/certificate-arn: '' alb.ingress.kubernetes.io/group.name: flyte alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' @@ -1679,9 +1681,9 @@ metadata: alb.ingress.kubernetes.io/target-type: ip kubernetes.io/ingress.class: alb nginx.ingress.kubernetes.io/app-root: /console - alb.ingress.kubernetes.io/backend-protocol-version: GRPC nginx.ingress.kubernetes.io/backend-protocol: GRPC spec: + ingressClassName: rules: - host: null http: diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml index dc4c4825d2c..d9ea49361c1 100644 --- a/deployment/gcp/flyte_helm_controlplane_generated.yaml +++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml @@ -1029,6 +1029,7 @@ metadata: nginx.ingress.kubernetes.io/app-root: /console nginx.ingress.kubernetes.io/ssl-redirect: "true" spec: + ingressClassName: rules: - http: paths: @@ -1182,13 +1183,14 @@ kind: Ingress metadata: name: flyte-core-grpc namespace: flyte - annotations: + annotations: cert-manager.io/issuer: letsencrypt-production kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/app-root: /console - nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/backend-protocol: GRPC + nginx.ingress.kubernetes.io/ssl-redirect: "true" spec: + ingressClassName: rules: - host: '' http: diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index fb6147e78bf..b7cd4932aed 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -594,6 +594,7 @@ metadata: nginx.ingress.kubernetes.io/app-root: /console nginx.ingress.kubernetes.io/ssl-redirect: "true" spec: + ingressClassName: rules: - http: paths: @@ -747,13 +748,14 @@ kind: Ingress metadata: name: flyte-core-grpc namespace: flyte - annotations: + annotations: cert-manager.io/issuer: letsencrypt-production kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/app-root: /console - nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/backend-protocol: GRPC + nginx.ingress.kubernetes.io/ssl-redirect: "true" spec: + ingressClassName: rules: - host: '' http: diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index 88a62d6ad2c..f6ae64796f0 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -1529,6 +1529,7 @@ metadata: nginx.ingress.kubernetes.io/app-root: /console nginx.ingress.kubernetes.io/ssl-redirect: "true" spec: + ingressClassName: rules: - http: paths: @@ -1682,13 +1683,14 @@ kind: Ingress metadata: name: flyte-core-grpc namespace: flyte - annotations: + annotations: cert-manager.io/issuer: letsencrypt-production kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/app-root: /console - nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/backend-protocol: GRPC + nginx.ingress.kubernetes.io/ssl-redirect: "true" spec: + ingressClassName: rules: - host: '' http: diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index d6506ebe21d..f5e26ef0bbc 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -7538,6 +7538,7 @@ metadata: annotations: nginx.ingress.kubernetes.io/app-root: /console spec: + ingressClassName: rules: - http: paths: From 4afb743818e37cf8460d7472da0ccbcc89e9c845 Mon Sep 17 00:00:00 2001 From: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> Date: Fri, 9 Feb 2024 22:53:53 +0100 Subject: [PATCH 011/107] Update flyte docs build directions (#4862) * Update flyte docs build directions Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * Update docs/community/contribute.rst Co-authored-by: Nikki Everett Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * Update docs/community/contribute.rst Co-authored-by: Nikki Everett Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * Update docs/community/contribute.rst Co-authored-by: Nikki Everett Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> --------- Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> Co-authored-by: Nikki Everett --- docs/community/contribute.rst | 96 +++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 43 deletions(-) diff --git a/docs/community/contribute.rst b/docs/community/contribute.rst index d1313349579..f99b5adaecd 100644 --- a/docs/community/contribute.rst +++ b/docs/community/contribute.rst @@ -18,19 +18,19 @@ TL;DR: Find the repo-specific contribution guidelines in the `Component Referenc An issue tagged with `good first issue `__ is the best place to start for first-time contributors. -**Appetizer for every repo: Fork and clone the concerned repository. Create a new branch on your fork and make the required changes. Create a pull request once your work is ready for review.** +**Appetizer for every repo: Fork and clone the concerned repository. Create a new branch on your fork and make the required changes. Create a pull request once your work is ready for review.** .. note:: - To open a pull request, refer to `GitHub's guide `__ for detailed instructions. + To open a pull request, refer to `GitHub's guide `__ for detailed instructions. -Example PR for your reference: `GitHub PR `__. -A couple of checks are introduced to help maintain the robustness of the project. +Example PR for your reference: `GitHub PR `__. +A couple of checks are introduced to help maintain the robustness of the project. -#. To get through DCO, sign off on every commit (`Reference `__) +#. To get through DCO, sign off on every commit (`Reference `__) #. To improve code coverage, write unit tests to test your code #. Make sure all the tests pass. If you face any issues, please let us know -On a side note, format your Go code with ``golangci-lint`` followed by ``goimports`` (use ``make lint`` and ``make goimports``), and Python code with ``black`` and ``isort`` (use ``make fmt``). +On a side note, format your Go code with ``golangci-lint`` followed by ``goimports`` (use ``make lint`` and ``make goimports``), and Python code with ``black`` and ``isort`` (use ``make fmt``). If make targets are not available, you can manually format the code. Refer to `Effective Go `__, `Black `__, and `Isort `__ for full coding standards. @@ -42,10 +42,10 @@ but there is a medium term effort to move all development to forks. Flyte uses Sphinx for documentation. ``protoc-gen-doc`` is used to generate the documentation from ``.proto`` files. -Sphinx spans multiple repositories under `flyteorg `__. It uses reStructured Text (rst) files to store the documentation content. -For API- and code-related content, it extracts docstrings from the code files. +Sphinx spans multiple repositories under `flyteorg `__. It uses reStructured Text (rst) files to store the documentation content. +For API- and code-related content, it extracts docstrings from the code files. -To get started, refer to the `reStructuredText reference `__. +To get started, refer to the `reStructuredText reference `__. For minor edits that don't require a local setup, you can edit the GitHub page in the documentation to propose improvements. @@ -54,9 +54,9 @@ Intersphinx `Intersphinx `__ can generate automatic links to the documentation of objects in other projects. -To establish a reference to any other documentation from Flyte or within it, use Intersphinx. +To establish a reference to any other documentation from Flyte or within it, use Intersphinx. -To do so, create an ``intersphinx_mapping`` in the ``conf.py`` file which should be present in the respective ``docs`` repository. +To do so, create an ``intersphinx_mapping`` in the ``conf.py`` file which should be present in the respective ``docs`` repository. For example, ``rsts`` is the docs repository for the ``flyte`` repo. For example: @@ -68,10 +68,10 @@ For example: "flytekit": ("https://flyte.readthedocs.io/projects/flytekit/en/master/", None), } -The key refers to the name used to refer to the file (while referencing the documentation), and the URL denotes the precise location. +The key refers to the name used to refer to the file (while referencing the documentation), and the URL denotes the precise location. Here is an example using ``:std:doc``: - + * Direct reference .. code-block:: text @@ -94,7 +94,7 @@ Here is an example using ``:std:doc``: | -You can cross-reference multiple Python objects. Check out this `section `__ to learn more. +You can cross-reference multiple Python objects. Check out this `section `__ to learn more. | @@ -150,15 +150,25 @@ To understand how the below components interact with each other, refer to :ref:` .. list-table:: * - `Repo `__ - * - **Purpose**: Deployment, Documentation, and Issues + * - **Purpose**: Deployment, Documentation, and Issues * - **Languages**: Kustomize & RST - -.. note:: - For the ``flyte`` repo, run the following command in the repo's root to generate documentation locally. - .. code-block:: console +To build the Flyte docs locally you will need the following prerequisites: + +* Install ``conda``. + * We recommend Miniconda installed with an `official installer `__. +* Install `conda-lock `__. +* In the ``flyteorg/flyte`` root directory run: + * ``conda-lock install --name monodocs-env monodocs-environment.lock.yaml`` + * ``conda activate monodocs-env`` + * ``pip install ./flyteidl`` + +This will set up the Python virtual environment for building the docs. Here we called it ``monodocs-env``. - make -C rsts html +To actually build the docs, activate ``monodocs-env`` and (in the ``flyteorg/flyte`` root directory) run: + * ``make docs`` + +The resulting ``html`` files will be in ``docs/_build/html``. You can view them by running `open docs/_build/html/index.html` ``flyteidl`` ************ @@ -169,7 +179,7 @@ To understand how the below components interact with each other, refer to :ref:` * - **Purpose**: Flyte workflow specification is in `protocol buffers `__ which forms the core of Flyte * - **Language**: Protobuf * - **Guidelines**: Refer to the `README `__ - + ``flytepropeller`` ****************** @@ -281,21 +291,21 @@ To understand how the below components interact with each other, refer to :ref:` * - `Repo `__ * - **Purpose**: A standalone Flyte CLI * - **Language**: Go - * - **Guidelines**: Refer to the `FlyteCTL Contribution Guide `__ + * - **Guidelines**: Refer to the `FlyteCTL Contribution Guide `__ 🔮 Development Environment Setup Guide ====================================== -This guide provides a step-by-step approach to setting up a local development environment for -`flyteidl `_, `flyteadmin `_, -`flyteplugins `_, `flytepropeller `_, +This guide provides a step-by-step approach to setting up a local development environment for +`flyteidl `_, `flyteadmin `_, +`flyteplugins `_, `flytepropeller `_, `flytekit `_ , `flyteconsole `_, `datacatalog `_, and `flytestdlib `_. The video below is a tutorial on how to set up a local development environment for Flyte. -.. youtube:: V-KlVQmQAjE +.. youtube:: V-KlVQmQAjE Requirements ************ @@ -352,9 +362,9 @@ How to setup dev environment for flyteidl, flyteadmin, flyteplugins, flytepropel # Step1: Start k3s cluster, create Pods for postgres and minio. Note: We cannot access Flyte UI yet! but we can access the minio console now. flytectl demo start --dev - # 👨‍💻 Flyte is ready! Flyte UI is available at http://localhost:30080/console 🚀 🚀 🎉 + # 👨‍💻 Flyte is ready! Flyte UI is available at http://localhost:30080/console 🚀 🚀 🎉 # ❇️ Run the following command to export demo environment variables for accessing flytectl - # export FLYTECTL_CONFIG=/home/ubuntu/.flyte/config-sandbox.yaml + # export FLYTECTL_CONFIG=/home/ubuntu/.flyte/config-sandbox.yaml # 🐋 Flyte sandbox ships with a Docker registry. Tag and push custom workflow images to localhost:30000 # 📂 The Minio API is hosted on localhost:30002. Use http://localhost:30080/minio/login for Minio console @@ -410,7 +420,7 @@ that integrates all Flyte components into a single binary. name: '{{ namespace }}'" > $HOME/.flyte/sandbox/cluster-resource-templates/namespace.yaml # Step5: Running the single binary. - # The POD_NAMESPACE environment variable is necessary for the webhook to function correctly. + # The POD_NAMESPACE environment variable is necessary for the webhook to function correctly. # You may encounter an error due to `ERROR: duplicate key value violates unique constraint`. Running the command again will solve the problem. POD_NAMESPACE=flyte ./flyte start --config flyte-single-binary-local.yaml # All logs from flyteadmin, flyteplugins, flytepropeller, etc. will appear in the terminal. @@ -470,7 +480,7 @@ The following instructions provide guidance on how to build single binary with y # context removed for "flyte-sandbox". # 🧹 🧹 Sandbox cluster is removed successfully. # ❇️ Run the following command to unset sandbox environment variables for accessing flytectl - # unset FLYTECTL_CONFIG + # unset FLYTECTL_CONFIG How to setup dev environment for flytekit? ******************************************* @@ -478,7 +488,7 @@ How to setup dev environment for flytekit? **1. Set up local Flyte Cluster.** -If you are also modifying the code for flyteidl, flyteadmin, flyteplugins, flytepropeller datacatalog, or flytestdlib, +If you are also modifying the code for flyteidl, flyteadmin, flyteplugins, flytepropeller datacatalog, or flytestdlib, refer to the instructions in the `previous section <#how-to-setup-dev-environment-for-flyteidl-flyteadmin-flyteplugins-flytepropeller-datacatalog-and-flytestdlib>`__ to set up a local Flyte cluster. If not, we can start backends with a single command. @@ -497,9 +507,9 @@ If not, we can start backends with a single command. # Step3: Starts the Flyte demo cluster. This will setup a k3s cluster running minio, postgres Pods, and all Flyte components: flyteadmin, flyteplugins, flytepropeller, etc. # See https://docs.flyte.org/projects/flytectl/en/latest/gen/flytectl_demo_start.html for more details. flytectl demo start - # 👨‍💻 Flyte is ready! Flyte UI is available at http://localhost:30080/console 🚀 🚀 🎉 + # 👨‍💻 Flyte is ready! Flyte UI is available at http://localhost:30080/console 🚀 🚀 🎉 # ❇️ Run the following command to export demo environment variables for accessing flytectl - # export FLYTECTL_CONFIG=/home/ubuntu/.flyte/config-sandbox.yaml + # export FLYTECTL_CONFIG=/home/ubuntu/.flyte/config-sandbox.yaml # 🐋 Flyte sandbox ships with a Docker registry. Tag and push custom workflow images to localhost:30000 # 📂 The Minio API is hosted on localhost:30002. Use http://localhost:30080/minio/login for Minio console @@ -515,7 +525,7 @@ If not, we can start backends with a single command. source ~/.virtualenvs/flytekit/bin/activate make setup pip install -e . - + # If you are also developing the plugins, consider the following: # Installing Specific Plugins: @@ -545,10 +555,10 @@ If not, we can start backends with a single command. **3. Run workflow in sandbox.** -Before running your workflow in the sandbox, make sure you're able to successfully run it locally. -To deploy the workflow in the sandbox, you'll need to build a Flytekit image. -Create a Dockerfile in your Flytekit directory with the minimum required configuration to run a task, as shown below. -If your task requires additional components, such as plugins, you may find it useful to refer to the construction of the `officail flitekit image `__ +Before running your workflow in the sandbox, make sure you're able to successfully run it locally. +To deploy the workflow in the sandbox, you'll need to build a Flytekit image. +Create a Dockerfile in your Flytekit directory with the minimum required configuration to run a task, as shown below. +If your task requires additional components, such as plugins, you may find it useful to refer to the construction of the `officail flitekit image `__ .. code:: Dockerfile @@ -656,10 +666,10 @@ This section presumes a local Flyte cluster is already setup. If it isn't, refer - `How to setup dev environment for flyteidl, flyteadmin, flyteplugins, flytepropeller, datacatalog and flytestdlib? <#how-to-setup-dev-environment-for-flyteidl-flyteadmin-flyteplugins-flytepropeller-datacatalog-and-flytestdlib>`__ -**1. Access the Flyte UI.** +**1. Access the Flyte UI.** -`Flyte UI `__ is a web-based user interface for Flyte that lets you interact with Flyte objects and build directed acyclic graphs (DAGs) for your workflows. +`Flyte UI `__ is a web-based user interface for Flyte that lets you interact with Flyte objects and build directed acyclic graphs (DAGs) for your workflows. You can access it via http://localhost:30080/console. @@ -681,7 +691,7 @@ Access the minio console at: http://localhost:30080/minio/login. The default cre FlyteAdmin and datacatalog use postgres to store persistent records, and you can interact with postgres on port ``30001``. Here is an example of using `psql` to connect: .. code:: shell - + # Step1: Install the PostgreSQL client. sudo apt-get update sudo apt-get install postgresql-client @@ -690,7 +700,7 @@ FlyteAdmin and datacatalog use postgres to store persistent records, and you can psql -h localhost -p 30001 -U postgres -d flyte -**4. Access the k3s dashboard.** +**4. Access the k3s dashboard.** Access the k3s dashboard at: http://localhost:30080/kubernetes-dashboard. @@ -734,4 +744,4 @@ We use `GitHub Issues `__ for issue tr If none of the above fit your requirements, file a `blank `__ issue. Also, add relevant labels to your issue. For example, if you are filing a Flytekit plugin request, add the ``flytekit`` label. -For feedback at any point in the contribution process, feel free to reach out to us on `Slack `__. +For feedback at any point in the contribution process, feel free to reach out to us on `Slack `__. From 288888d12a86cefe16eb687f41aa11721fd1aaa6 Mon Sep 17 00:00:00 2001 From: Kamal <54046807+kamaleybov@users.noreply.github.com> Date: Mon, 12 Feb 2024 15:40:23 -0800 Subject: [PATCH 012/107] Replaced deprecated bitnami/bitnami-shell image with bitnami/os-shell. (#4882) Signed-off-by: Kamal Eybov <54046807+kamaleybov@users.noreply.github.com> --- docker/sandbox-bundled/images/manifest.txt | 2 +- docker/sandbox-bundled/manifests/complete-agent.yaml | 4 ++-- docker/sandbox-bundled/manifests/complete.yaml | 4 ++-- docker/sandbox-bundled/manifests/dev.yaml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docker/sandbox-bundled/images/manifest.txt b/docker/sandbox-bundled/images/manifest.txt index 04fb34627c0..df712fa6a0a 100644 --- a/docker/sandbox-bundled/images/manifest.txt +++ b/docker/sandbox-bundled/images/manifest.txt @@ -1,4 +1,4 @@ -docker.io/bitnami/bitnami-shell:sandbox=bitnami/bitnami-shell:11-debian-11-r76 +docker.io/bitnami/os-shell:sandbox=bitnami/os-shell:11-debian-11 docker.io/bitnami/minio:sandbox=bitnami/minio:2023.1.25-debian-11-r0 docker.io/bitnami/postgresql:sandbox=bitnami/postgresql:15.1.0-debian-11-r20 docker.io/envoyproxy/envoy:sandbox=envoyproxy/envoy:v1.23-latest diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 6d58d58baa0..01315bd6b84 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -1653,7 +1653,7 @@ spec: - -ec - | chown -R 1001:1001 /data - image: docker.io/bitnami/bitnami-shell:sandbox + image: docker.io/bitnami/os-shell:sandbox imagePullPolicy: Never name: volume-permissions resources: @@ -1909,7 +1909,7 @@ spec: chmod 700 /bitnami/postgresql/data find /bitnami/postgresql -mindepth 1 -maxdepth 1 -not -name "conf" -not -name ".snapshot" -not -name "lost+found" | \ xargs -r chown -R 1001:1001 - image: docker.io/bitnami/bitnami-shell:sandbox + image: docker.io/bitnami/os-shell:sandbox imagePullPolicy: Never name: init-chmod-data resources: diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index cb300b82676..ea6ec794ad8 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -1601,7 +1601,7 @@ spec: - -ec - | chown -R 1001:1001 /data - image: docker.io/bitnami/bitnami-shell:sandbox + image: docker.io/bitnami/os-shell:sandbox imagePullPolicy: Never name: volume-permissions resources: @@ -1794,7 +1794,7 @@ spec: chmod 700 /bitnami/postgresql/data find /bitnami/postgresql -mindepth 1 -maxdepth 1 -not -name "conf" -not -name ".snapshot" -not -name "lost+found" | \ xargs -r chown -R 1001:1001 - image: docker.io/bitnami/bitnami-shell:sandbox + image: docker.io/bitnami/os-shell:sandbox imagePullPolicy: Never name: init-chmod-data resources: diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index b6c00596e88..4ae74c4fcdd 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -1175,7 +1175,7 @@ spec: - -ec - | chown -R 1001:1001 /data - image: docker.io/bitnami/bitnami-shell:sandbox + image: docker.io/bitnami/os-shell:sandbox imagePullPolicy: Never name: volume-permissions resources: @@ -1368,7 +1368,7 @@ spec: chmod 700 /bitnami/postgresql/data find /bitnami/postgresql -mindepth 1 -maxdepth 1 -not -name "conf" -not -name ".snapshot" -not -name "lost+found" | \ xargs -r chown -R 1001:1001 - image: docker.io/bitnami/bitnami-shell:sandbox + image: docker.io/bitnami/os-shell:sandbox imagePullPolicy: Never name: init-chmod-data resources: From fe1204c2b9d77ad9a4a75db182cd5d1c4765e165 Mon Sep 17 00:00:00 2001 From: "Ethan Brown (Domino)" <111539728+ddl-ebrown@users.noreply.github.com> Date: Tue, 13 Feb 2024 07:42:21 -0800 Subject: [PATCH 013/107] Flyte-core define pod and container securityContext (#4809) - Define secure defaults for all pod / container specs: * runAsNonRoot: true * capabilities: drop: ['ALL'] * allowPrivilegeEscalation: false * seLinuxOptions: type: spc_t This is required in many locations where policy enforcement agents may be installed (like OPA Gatekeeper) which may otherwise prevent deployments from launching. The hard work of making sure the containers run as non-0 uids seems to have already been done given all containers are already specifying a runAsUser value of 1000 or 1001, so this should hopefully just be a little more hardening around restricting kernel permissions / enforcement within the container runtime. These are generally considered standard / secure default settings and are not currently made configurable given these services are all owned by Flyte Signed-off-by: ddl-ebrown --- .../templates/admin/deployment.yaml | 23 +++++++ .../templates/console/deployment.yaml | 7 +++ .../templates/datacatalog/deployment.yaml | 11 ++++ .../templates/flytescheduler/deployment.yaml | 11 ++++ .../templates/propeller/webhook.yaml | 11 ++++ .../flyte_aws_scheduler_helm_generated.yaml | 52 +++++++++++++++ .../flyte_helm_controlplane_generated.yaml | 52 +++++++++++++++ .../eks/flyte_helm_dataplane_generated.yaml | 11 ++++ deployment/eks/flyte_helm_generated.yaml | 63 +++++++++++++++++++ .../flyte_helm_controlplane_generated.yaml | 52 +++++++++++++++ .../gcp/flyte_helm_dataplane_generated.yaml | 11 ++++ deployment/gcp/flyte_helm_generated.yaml | 63 +++++++++++++++++++ deployment/sandbox/flyte_helm_generated.yaml | 63 +++++++++++++++++++ 13 files changed, 430 insertions(+) diff --git a/charts/flyte-core/templates/admin/deployment.yaml b/charts/flyte-core/templates/admin/deployment.yaml index 5b410856745..60d4b6a969b 100755 --- a/charts/flyte-core/templates/admin/deployment.yaml +++ b/charts/flyte-core/templates/admin/deployment.yaml @@ -19,9 +19,12 @@ spec: labels: {{ include "flyteadmin.podLabels" . | nindent 8 }} spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t {{- if .Values.flyteadmin.priorityClassName }} priorityClassName: {{ .Values.flyteadmin.priorityClassName }} {{- end }} @@ -35,6 +38,10 @@ spec: image: "{{ .Values.flyteadmin.image.repository }}:{{ .Values.flyteadmin.image.tag }}" imagePullPolicy: "{{ .Values.flyteadmin.image.pullPolicy }}" name: run-migrations + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: {{- include "databaseSecret.volumeMount" . | nindent 10 }} - mountPath: /etc/flyte/config name: base-config-volume @@ -57,6 +64,10 @@ spec: image: "{{ .Values.flyteadmin.image.repository }}:{{ .Values.flyteadmin.image.tag }}" imagePullPolicy: "{{ .Values.flyteadmin.image.pullPolicy }}" name: seed-projects + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: {{- include "databaseSecret.volumeMount" . | nindent 10 }} - mountPath: /etc/flyte/config name: base-config-volume @@ -77,6 +88,10 @@ spec: image: "{{ .Values.flyteadmin.image.repository }}:{{ .Values.flyteadmin.image.tag }}" imagePullPolicy: "{{ .Values.flyteadmin.image.pullPolicy }}" name: sync-cluster-resources + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: {{- include "databaseSecret.volumeMount" . | nindent 10 }} - mountPath: /etc/flyte/clusterresource/templates name: resource-templates @@ -104,6 +119,10 @@ spec: [ "flyteadmin --config={{ .Values.flyteadmin.configPath }} secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --name flyte-admin-secrets --fromPath /etc/scratch/secrets", ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config name: base-config-volume @@ -149,6 +168,10 @@ spec: initialDelaySeconds: 20 periodSeconds: 5 resources: {{- toYaml .Values.flyteadmin.resources | nindent 10 }} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: {{- include "databaseSecret.volumeMount" . | nindent 8 }} - mountPath: /srv/flyte name: shared-data diff --git a/charts/flyte-core/templates/console/deployment.yaml b/charts/flyte-core/templates/console/deployment.yaml index 3d0f26d44be..d9675a00728 100644 --- a/charts/flyte-core/templates/console/deployment.yaml +++ b/charts/flyte-core/templates/console/deployment.yaml @@ -23,8 +23,11 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} securityContext: + runAsNonRoot: true runAsUser: 1000 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t {{- if .Values.flyteconsole.priorityClassName }} priorityClassName: {{ .Values.flyteconsole.priorityClassName }} {{- end }} @@ -51,6 +54,10 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} {{- end }} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: {{ toYaml .Values.flyteconsole.resources | nindent 10 }} volumeMounts: - mountPath: /srv/flyte diff --git a/charts/flyte-core/templates/datacatalog/deployment.yaml b/charts/flyte-core/templates/datacatalog/deployment.yaml index 9ba6a8d89a4..904762eb79e 100644 --- a/charts/flyte-core/templates/datacatalog/deployment.yaml +++ b/charts/flyte-core/templates/datacatalog/deployment.yaml @@ -19,9 +19,12 @@ spec: labels: {{ include "datacatalog.podLabels" . | nindent 8 }} spec: securityContext: + runAsNonRoot: true fsGroup: 1001 runAsUser: 1001 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t {{- if .Values.datacatalog.priorityClassName }} priorityClassName: {{ .Values.datacatalog.priorityClassName }} {{- end }} @@ -44,6 +47,10 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} {{- end }} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] containers: - command: - datacatalog @@ -66,6 +73,10 @@ spec: - containerPort: 8088 - containerPort: 8089 - containerPort: {{ index .Values.configmap.datacatalogServer.datacatalog "profiler-port" }} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: {{- toYaml .Values.datacatalog.resources | nindent 10 }} volumeMounts: {{- include "databaseSecret.volumeMount" . | nindent 8 }} - mountPath: /etc/datacatalog/config diff --git a/charts/flyte-core/templates/flytescheduler/deployment.yaml b/charts/flyte-core/templates/flytescheduler/deployment.yaml index 37b2394b1d4..3892cfbb836 100755 --- a/charts/flyte-core/templates/flytescheduler/deployment.yaml +++ b/charts/flyte-core/templates/flytescheduler/deployment.yaml @@ -20,9 +20,12 @@ spec: labels: {{ include "flytescheduler.podLabels" . | nindent 8 }} spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t {{- if .Values.flytescheduler.priorityClassName }} priorityClassName: {{ .Values.flytescheduler.priorityClassName }} {{- end }} @@ -42,6 +45,10 @@ spec: image: "{{ .Values.flytescheduler.image.repository }}:{{ .Values.flytescheduler.image.tag }}" imagePullPolicy: "{{ .Values.flytescheduler.image.pullPolicy }}" name: flytescheduler-check + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: {{- include "databaseSecret.volumeMount" . | nindent 8 }} - mountPath: /etc/flyte/config name: config-volume @@ -65,6 +72,10 @@ spec: name: flytescheduler ports: - containerPort: {{ .Values.configmap.schedulerConfig.scheduler.profilerPort }} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: {{- toYaml .Values.flytescheduler.resources | nindent 10 }} volumeMounts: {{- include "databaseSecret.volumeMount" . | nindent 8 }} - mountPath: /etc/flyte/config diff --git a/charts/flyte-core/templates/propeller/webhook.yaml b/charts/flyte-core/templates/propeller/webhook.yaml index 0b1c725af86..9a1f279350a 100644 --- a/charts/flyte-core/templates/propeller/webhook.yaml +++ b/charts/flyte-core/templates/propeller/webhook.yaml @@ -37,8 +37,11 @@ spec: spec: securityContext: fsGroup: 65534 + runAsNonRoot: true runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t serviceAccountName: {{ template "flyte-pod-webhook.name" . }} {{- if .Values.webhook.enabled }} initContainers: @@ -66,6 +69,10 @@ spec: {{- toYaml . | nindent 10 }} {{- end }} {{- end }} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config @@ -96,6 +103,10 @@ spec: {{- end }} ports: - containerPort: 9443 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index a0aebff4957..b6adaab5d66 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -857,9 +857,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flyteadmin @@ -870,6 +873,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: run-migrations + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -887,6 +894,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: seed-projects + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -901,6 +912,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -918,6 +933,10 @@ spec: [ "flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --name flyte-admin-secrets --fromPath /etc/scratch/secrets", ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config name: base-config-volume @@ -959,6 +978,10 @@ spec: cpu: 50m ephemeral-storage: 200Mi memory: 200Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -1085,8 +1108,11 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true runAsUser: 1000 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t containers: - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" imagePullPolicy: "IfNotPresent" @@ -1096,6 +1122,10 @@ spec: name: flyte-console-config ports: - containerPort: 8080 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m @@ -1145,9 +1175,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 1001 runAsUser: 1001 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t initContainers: - command: - datacatalog @@ -1163,6 +1196,10 @@ spec: name: db-pass - mountPath: /etc/datacatalog/config name: config-volume + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] containers: - command: - datacatalog @@ -1176,6 +1213,10 @@ spec: - containerPort: 8088 - containerPort: 8089 - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 1 @@ -1314,8 +1355,11 @@ spec: spec: securityContext: fsGroup: 65534 + runAsNonRoot: true runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets @@ -1337,6 +1381,10 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config @@ -1361,6 +1409,10 @@ spec: fieldPath: metadata.namespace ports: - containerPort: 9443 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml index be8b4423719..8b17155aa1b 100644 --- a/deployment/eks/flyte_helm_controlplane_generated.yaml +++ b/deployment/eks/flyte_helm_controlplane_generated.yaml @@ -563,9 +563,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flyteadmin @@ -576,6 +579,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: run-migrations + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -593,6 +600,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: seed-projects + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -607,6 +618,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -624,6 +639,10 @@ spec: [ "flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --name flyte-admin-secrets --fromPath /etc/scratch/secrets", ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config name: base-config-volume @@ -665,6 +684,10 @@ spec: cpu: 50m ephemeral-storage: 200Mi memory: 200Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -791,8 +814,11 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true runAsUser: 1000 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t containers: - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" imagePullPolicy: "IfNotPresent" @@ -802,6 +828,10 @@ spec: name: flyte-console-config ports: - containerPort: 8080 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m @@ -851,9 +881,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 1001 runAsUser: 1001 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t initContainers: - command: - datacatalog @@ -869,6 +902,10 @@ spec: name: db-pass - mountPath: /etc/datacatalog/config name: config-volume + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] containers: - command: - datacatalog @@ -882,6 +919,10 @@ spec: - containerPort: 8088 - containerPort: 8089 - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 1 @@ -942,9 +983,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flytescheduler @@ -954,6 +998,10 @@ spec: image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: flytescheduler-check + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -972,6 +1020,10 @@ spec: name: flytescheduler ports: - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index 5fa5c094984..52b14a1b6e0 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -513,8 +513,11 @@ spec: spec: securityContext: fsGroup: 65534 + runAsNonRoot: true runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets @@ -536,6 +539,10 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config @@ -560,6 +567,10 @@ spec: fieldPath: metadata.namespace ports: - containerPort: 9443 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index 1b84af16a53..fa8a6387b35 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -888,9 +888,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flyteadmin @@ -901,6 +904,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: run-migrations + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -918,6 +925,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: seed-projects + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -932,6 +943,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -949,6 +964,10 @@ spec: [ "flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --name flyte-admin-secrets --fromPath /etc/scratch/secrets", ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config name: base-config-volume @@ -990,6 +1009,10 @@ spec: cpu: 50m ephemeral-storage: 200Mi memory: 200Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -1116,8 +1139,11 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true runAsUser: 1000 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t containers: - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" imagePullPolicy: "IfNotPresent" @@ -1127,6 +1153,10 @@ spec: name: flyte-console-config ports: - containerPort: 8080 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m @@ -1176,9 +1206,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 1001 runAsUser: 1001 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t initContainers: - command: - datacatalog @@ -1194,6 +1227,10 @@ spec: name: db-pass - mountPath: /etc/datacatalog/config name: config-volume + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] containers: - command: - datacatalog @@ -1207,6 +1244,10 @@ spec: - containerPort: 8088 - containerPort: 8089 - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 1 @@ -1267,9 +1308,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flytescheduler @@ -1279,6 +1323,10 @@ spec: image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: flytescheduler-check + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -1297,6 +1345,10 @@ spec: name: flytescheduler ports: - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m @@ -1433,8 +1485,11 @@ spec: spec: securityContext: fsGroup: 65534 + runAsNonRoot: true runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets @@ -1456,6 +1511,10 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config @@ -1480,6 +1539,10 @@ spec: fieldPath: metadata.namespace ports: - containerPort: 9443 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml index d9ea49361c1..96f6427fb6b 100644 --- a/deployment/gcp/flyte_helm_controlplane_generated.yaml +++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml @@ -578,9 +578,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flyteadmin @@ -591,6 +594,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: run-migrations + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -608,6 +615,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: seed-projects + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -622,6 +633,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -639,6 +654,10 @@ spec: [ "flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --name flyte-admin-secrets --fromPath /etc/scratch/secrets", ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config name: base-config-volume @@ -680,6 +699,10 @@ spec: cpu: 500m ephemeral-storage: 2Gi memory: 1G + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -806,8 +829,11 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true runAsUser: 1000 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t containers: - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" imagePullPolicy: "IfNotPresent" @@ -817,6 +843,10 @@ spec: name: flyte-console-config ports: - containerPort: 8080 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m @@ -866,9 +896,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 1001 runAsUser: 1001 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t initContainers: - command: - datacatalog @@ -884,6 +917,10 @@ spec: name: db-pass - mountPath: /etc/datacatalog/config name: config-volume + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] containers: - command: - datacatalog @@ -897,6 +934,10 @@ spec: - containerPort: 8088 - containerPort: 8089 - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 500m @@ -957,9 +998,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flytescheduler @@ -969,6 +1013,10 @@ spec: image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: flytescheduler-check + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -987,6 +1035,10 @@ spec: name: flytescheduler ports: - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index b7cd4932aed..0e7b6af3feb 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -520,8 +520,11 @@ spec: spec: securityContext: fsGroup: 65534 + runAsNonRoot: true runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets @@ -543,6 +546,10 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config @@ -567,6 +574,10 @@ spec: fieldPath: metadata.namespace ports: - containerPort: 9443 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index f6ae64796f0..0031523dd74 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -911,9 +911,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flyteadmin @@ -924,6 +927,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: run-migrations + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -941,6 +948,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: seed-projects + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -955,6 +966,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -972,6 +987,10 @@ spec: [ "flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --name flyte-admin-secrets --fromPath /etc/scratch/secrets", ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config name: base-config-volume @@ -1013,6 +1032,10 @@ spec: cpu: 500m ephemeral-storage: 2Gi memory: 1G + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -1139,8 +1162,11 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true runAsUser: 1000 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t containers: - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" imagePullPolicy: "IfNotPresent" @@ -1150,6 +1176,10 @@ spec: name: flyte-console-config ports: - containerPort: 8080 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m @@ -1199,9 +1229,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 1001 runAsUser: 1001 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t initContainers: - command: - datacatalog @@ -1217,6 +1250,10 @@ spec: name: db-pass - mountPath: /etc/datacatalog/config name: config-volume + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] containers: - command: - datacatalog @@ -1230,6 +1267,10 @@ spec: - containerPort: 8088 - containerPort: 8089 - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 500m @@ -1290,9 +1331,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flytescheduler @@ -1302,6 +1346,10 @@ spec: image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: flytescheduler-check + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/db name: db-pass @@ -1320,6 +1368,10 @@ spec: name: flytescheduler ports: - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m @@ -1455,8 +1507,11 @@ spec: spec: securityContext: fsGroup: 65534 + runAsNonRoot: true runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets @@ -1478,6 +1533,10 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config @@ -1502,6 +1561,10 @@ spec: fieldPath: metadata.namespace ports: - containerPort: 9443 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index f5e26ef0bbc..3a9c79f7253 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -6694,9 +6694,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flyteadmin @@ -6707,6 +6710,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: run-migrations + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config @@ -6723,6 +6730,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: seed-projects + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config @@ -6736,6 +6747,10 @@ spec: image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/clusterresource/templates @@ -6752,6 +6767,10 @@ spec: [ "flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --name flyte-admin-secrets --fromPath /etc/scratch/secrets", ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config name: base-config-volume @@ -6793,6 +6812,10 @@ spec: cpu: 10m ephemeral-storage: 50Mi memory: 50Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /srv/flyte @@ -6906,8 +6929,11 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true runAsUser: 1000 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t containers: - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" imagePullPolicy: "IfNotPresent" @@ -6922,6 +6948,10 @@ spec: value: "true" - name: GA_TRACKING_ID value: "G-0QW4DJWJ20" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 500m @@ -6964,9 +6994,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 1001 runAsUser: 1001 fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t initContainers: - command: - datacatalog @@ -6981,6 +7014,10 @@ spec: - mountPath: /etc/datacatalog/config name: config-volume + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] containers: - command: - datacatalog @@ -6994,6 +7031,10 @@ spec: - containerPort: 8088 - containerPort: 8089 - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 500m @@ -7044,9 +7085,12 @@ spec: app.kubernetes.io/managed-by: Helm spec: securityContext: + runAsNonRoot: true fsGroup: 65534 runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t initContainers: - command: - flytescheduler @@ -7056,6 +7100,10 @@ spec: image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" imagePullPolicy: "IfNotPresent" name: flytescheduler-check + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - mountPath: /etc/flyte/config @@ -7073,6 +7121,10 @@ spec: name: flytescheduler ports: - containerPort: 10254 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] resources: limits: cpu: 250m @@ -7198,8 +7250,11 @@ spec: spec: securityContext: fsGroup: 65534 + runAsNonRoot: true runAsUser: 1001 fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets @@ -7221,6 +7276,10 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config @@ -7245,6 +7304,10 @@ spec: fieldPath: metadata.namespace ports: - containerPort: 9443 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] volumeMounts: - name: config-volume mountPath: /etc/flyte/config From d6747c1e6e6e9c7a3e8f2e3f4bb6f37274d4bf82 Mon Sep 17 00:00:00 2001 From: peterghaddad <107633597+peterghaddad@users.noreply.github.com> Date: Tue, 13 Feb 2024 14:28:08 -0700 Subject: [PATCH 014/107] Leverage KubeRay v1 instead of v1alpha1 for resources (#4818) * initial * Clean up * init * Clean up * Add TestGetEventInfo_LogTemplatesV1 * Add more tests * Fix tests * Remove dupe * Fix lint * add comment Signed-off-by: peterghaddad --------- Signed-off-by: peterghaddad Co-authored-by: Neil <150836163+neilisaur@users.noreply.github.com> --- .../go/tasks/plugins/k8s/ray/config.go | 2 + flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 254 +++++++++++++++++- .../go/tasks/plugins/k8s/ray/ray_test.go | 196 ++++++++++++++ 3 files changed, 438 insertions(+), 14 deletions(-) diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/config.go b/flyteplugins/go/tasks/plugins/k8s/ray/config.go index 67ea4d2aebb..e73fc4dc7d2 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/config.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/config.go @@ -22,6 +22,7 @@ var ( IncludeDashboard: true, DashboardHost: "0.0.0.0", EnableUsageStats: false, + KubeRayCrdVersion: "v1alpha1", Defaults: DefaultConfig{ HeadNode: NodeConfig{ StartParameters: map[string]string{ @@ -85,6 +86,7 @@ type Config struct { DashboardURLTemplate *tasklog.TemplateLogPlugin `json:"dashboardURLTemplate" pflag:"-,Template for URL of Ray dashboard running on a head node."` Defaults DefaultConfig `json:"defaults" pflag:"-,Default configuration for ray jobs"` EnableUsageStats bool `json:"enableUsageStats" pflag:",Enable usage stats for ray jobs. These stats are submitted to usage-stats.ray.io per https://docs.ray.io/en/latest/cluster/usage-stats.html"` + KubeRayCrdVersion string `json:"kubeRayCrdVersion" pflag:",Version of the Ray CRD to use when creating RayClusters or RayJobs."` } type DefaultConfig struct { diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index 6b2af127dfa..25291b20663 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -8,6 +8,7 @@ import ( "strings" "time" + rayv1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1" rayv1alpha1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1alpha1" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -28,14 +29,15 @@ import ( ) const ( - rayStateMountPath = "/tmp/ray" - defaultRayStateVolName = "system-ray-state" - rayTaskType = "ray" - KindRayJob = "RayJob" - IncludeDashboard = "include-dashboard" - NodeIPAddress = "node-ip-address" - DashboardHost = "dashboard-host" - DisableUsageStatsStartParameter = "disable-usage-stats" + rayStateMountPath = "/tmp/ray" + defaultRayStateVolName = "system-ray-state" + rayTaskType = "ray" + KindRayJob = "RayJob" + IncludeDashboard = "include-dashboard" + NodeIPAddress = "node-ip-address" + DashboardHost = "dashboard-host" + DisableUsageStatsStartParameter = "disable-usage-stats" + DisableUsageStatsStartParameterVal = "true" ) var logTemplateRegexes = struct { @@ -52,7 +54,7 @@ func (rayJobResourceHandler) GetProperties() k8s.PluginProperties { return k8s.PluginProperties{} } -// BuildResource Creates a new ray job resource. +// BuildResource Creates a new ray job resource for v1 or v1alpha1. func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsCore.TaskExecutionContext) (client.Object, error) { taskTemplate, err := taskCtx.TaskReader().Read(ctx) if err != nil { @@ -109,11 +111,22 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC } if _, exists := headNodeRayStartParams[DisableUsageStatsStartParameter]; !exists && !cfg.EnableUsageStats { - headNodeRayStartParams[DisableUsageStatsStartParameter] = "true" + headNodeRayStartParams[DisableUsageStatsStartParameter] = DisableUsageStatsStartParameterVal } - enableIngress := true headPodSpec := podSpec.DeepCopy() + + if cfg.KubeRayCrdVersion == "v1" { + return constructV1Job(taskCtx, rayJob, objectMeta, *podSpec, headPodSpec, headReplicas, headNodeRayStartParams, primaryContainerIdx, *primaryContainer), nil + } + + return constructV1Alpha1Job(taskCtx, rayJob, objectMeta, *podSpec, headPodSpec, headReplicas, headNodeRayStartParams, primaryContainerIdx, *primaryContainer), nil + +} + +func constructV1Alpha1Job(taskCtx pluginsCore.TaskExecutionContext, rayJob plugins.RayJob, objectMeta *metav1.ObjectMeta, podSpec v1.PodSpec, headPodSpec *v1.PodSpec, headReplicas int32, headNodeRayStartParams map[string]string, primaryContainerIdx int, primaryContainer v1.Container) *rayv1alpha1.RayJob { + enableIngress := true + cfg := GetConfig() rayClusterSpec := rayv1alpha1.RayClusterSpec{ HeadGroupSpec: rayv1alpha1.HeadGroupSpec{ Template: buildHeadPodTemplate( @@ -152,7 +165,7 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC } if _, exists := workerNodeRayStartParams[DisableUsageStatsStartParameter]; !exists && !cfg.EnableUsageStats { - workerNodeRayStartParams[DisableUsageStatsStartParameter] = "true" + workerNodeRayStartParams[DisableUsageStatsStartParameter] = DisableUsageStatsStartParameterVal } minReplicas := spec.MinReplicas @@ -198,7 +211,7 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC RuntimeEnv: rayJob.RuntimeEnv, } - rayJobObject := rayv1alpha1.RayJob{ + return &rayv1alpha1.RayJob{ TypeMeta: metav1.TypeMeta{ Kind: KindRayJob, APIVersion: rayv1alpha1.SchemeGroupVersion.String(), @@ -206,8 +219,103 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC Spec: jobSpec, ObjectMeta: *objectMeta, } +} + +func constructV1Job(taskCtx pluginsCore.TaskExecutionContext, rayJob plugins.RayJob, objectMeta *metav1.ObjectMeta, podSpec v1.PodSpec, headPodSpec *v1.PodSpec, headReplicas int32, headNodeRayStartParams map[string]string, primaryContainerIdx int, primaryContainer v1.Container) *rayv1.RayJob { + enableIngress := true + cfg := GetConfig() + rayClusterSpec := rayv1.RayClusterSpec{ + HeadGroupSpec: rayv1.HeadGroupSpec{ + Template: buildHeadPodTemplate( + &headPodSpec.Containers[primaryContainerIdx], + headPodSpec, + objectMeta, + taskCtx, + ), + ServiceType: v1.ServiceType(cfg.ServiceType), + Replicas: &headReplicas, + EnableIngress: &enableIngress, + RayStartParams: headNodeRayStartParams, + }, + WorkerGroupSpecs: []rayv1.WorkerGroupSpec{}, + EnableInTreeAutoscaling: &rayJob.RayCluster.EnableAutoscaling, + } + + for _, spec := range rayJob.RayCluster.WorkerGroupSpec { + workerPodSpec := podSpec.DeepCopy() + workerPodTemplate := buildWorkerPodTemplate( + &workerPodSpec.Containers[primaryContainerIdx], + workerPodSpec, + objectMeta, + taskCtx, + ) + + workerNodeRayStartParams := make(map[string]string) + if spec.RayStartParams != nil { + workerNodeRayStartParams = spec.RayStartParams + } else if workerNode := cfg.Defaults.WorkerNode; len(workerNode.StartParameters) > 0 { + workerNodeRayStartParams = workerNode.StartParameters + } + + if _, exist := workerNodeRayStartParams[NodeIPAddress]; !exist { + workerNodeRayStartParams[NodeIPAddress] = cfg.Defaults.WorkerNode.IPAddress + } + + if _, exists := workerNodeRayStartParams[DisableUsageStatsStartParameter]; !exists && !cfg.EnableUsageStats { + workerNodeRayStartParams[DisableUsageStatsStartParameter] = DisableUsageStatsStartParameterVal + } - return &rayJobObject, nil + minReplicas := spec.MinReplicas + if minReplicas > spec.Replicas { + minReplicas = spec.Replicas + } + maxReplicas := spec.MaxReplicas + if maxReplicas < spec.Replicas { + maxReplicas = spec.Replicas + } + + workerNodeSpec := rayv1.WorkerGroupSpec{ + GroupName: spec.GroupName, + MinReplicas: &minReplicas, + MaxReplicas: &maxReplicas, + Replicas: &spec.Replicas, + RayStartParams: workerNodeRayStartParams, + Template: workerPodTemplate, + } + + rayClusterSpec.WorkerGroupSpecs = append(rayClusterSpec.WorkerGroupSpecs, workerNodeSpec) + } + + serviceAccountName := flytek8s.GetServiceAccountNameFromTaskExecutionMetadata(taskCtx.TaskExecutionMetadata()) + + rayClusterSpec.HeadGroupSpec.Template.Spec.ServiceAccountName = serviceAccountName + for index := range rayClusterSpec.WorkerGroupSpecs { + rayClusterSpec.WorkerGroupSpecs[index].Template.Spec.ServiceAccountName = serviceAccountName + } + + shutdownAfterJobFinishes := cfg.ShutdownAfterJobFinishes + ttlSecondsAfterFinished := &cfg.TTLSecondsAfterFinished + if rayJob.ShutdownAfterJobFinishes { + shutdownAfterJobFinishes = true + ttlSecondsAfterFinished = &rayJob.TtlSecondsAfterFinished + } + + jobSpec := rayv1.RayJobSpec{ + RayClusterSpec: &rayClusterSpec, + Entrypoint: strings.Join(primaryContainer.Args, " "), + ShutdownAfterJobFinishes: shutdownAfterJobFinishes, + TTLSecondsAfterFinished: ttlSecondsAfterFinished, + RuntimeEnv: rayJob.RuntimeEnv, + } + + return &rayv1.RayJob{ + TypeMeta: metav1.TypeMeta{ + Kind: KindRayJob, + APIVersion: rayv1alpha1.SchemeGroupVersion.String(), + }, + Spec: jobSpec, + ObjectMeta: *objectMeta, + } } func injectLogsSidecar(primaryContainer *v1.Container, podSpec *v1.PodSpec) { @@ -503,7 +611,125 @@ func getEventInfoForRayJob(logConfig logs.LogConfig, pluginContext k8s.PluginCon return &pluginsCore.TaskInfo{Logs: taskLogs}, nil } +func getEventInfoForRayJobV1(logConfig logs.LogConfig, pluginContext k8s.PluginContext, rayJob *rayv1.RayJob) (*pluginsCore.TaskInfo, error) { + logPlugin, err := logs.InitializeLogPlugins(&logConfig) + if err != nil { + return nil, fmt.Errorf("failed to initialize log plugins. Error: %w", err) + } + + var taskLogs []*core.TaskLog + + taskExecID := pluginContext.TaskExecutionMetadata().GetTaskExecutionID() + input := tasklog.Input{ + Namespace: rayJob.Namespace, + TaskExecutionID: taskExecID, + ExtraTemplateVars: []tasklog.TemplateVar{}, + } + if rayJob.Status.JobId != "" { + input.ExtraTemplateVars = append( + input.ExtraTemplateVars, + tasklog.TemplateVar{ + Regex: logTemplateRegexes.RayJobID, + Value: rayJob.Status.JobId, + }, + ) + } + if rayJob.Status.RayClusterName != "" { + input.ExtraTemplateVars = append( + input.ExtraTemplateVars, + tasklog.TemplateVar{ + Regex: logTemplateRegexes.RayClusterName, + Value: rayJob.Status.RayClusterName, + }, + ) + } + + // TODO: Retrieve the name of head pod from rayJob.status, and add it to task logs + // RayJob CRD does not include the name of the worker or head pod for now + logOutput, err := logPlugin.GetTaskLogs(input) + if err != nil { + return nil, fmt.Errorf("failed to generate task logs. Error: %w", err) + } + taskLogs = append(taskLogs, logOutput.TaskLogs...) + + // Handling for Ray Dashboard + dashboardURLTemplate := GetConfig().DashboardURLTemplate + if dashboardURLTemplate != nil && + rayJob.Status.DashboardURL != "" && + rayJob.Status.JobStatus == rayv1.JobStatusRunning { + dashboardURLOutput, err := dashboardURLTemplate.GetTaskLogs(input) + if err != nil { + return nil, fmt.Errorf("failed to generate Ray dashboard link. Error: %w", err) + } + taskLogs = append(taskLogs, dashboardURLOutput.TaskLogs...) + } + + return &pluginsCore.TaskInfo{Logs: taskLogs}, nil +} + func (plugin rayJobResourceHandler) GetTaskPhase(ctx context.Context, pluginContext k8s.PluginContext, resource client.Object) (pluginsCore.PhaseInfo, error) { + crdVersion := GetConfig().KubeRayCrdVersion + if crdVersion == "v1" { + return plugin.GetTaskPhaseV1(ctx, pluginContext, resource) + } + + return plugin.GetTaskPhaseV1Alpha1(ctx, pluginContext, resource) +} + +func (plugin rayJobResourceHandler) GetTaskPhaseV1(ctx context.Context, pluginContext k8s.PluginContext, resource client.Object) (pluginsCore.PhaseInfo, error) { + rayJob := resource.(*rayv1.RayJob) + info, err := getEventInfoForRayJobV1(GetConfig().Logs, pluginContext, rayJob) + if err != nil { + return pluginsCore.PhaseInfoUndefined, err + } + + if len(rayJob.Status.JobDeploymentStatus) == 0 { + return pluginsCore.PhaseInfoQueued(time.Now(), pluginsCore.DefaultPhaseVersion, "Scheduling"), nil + } + + // KubeRay creates a Ray cluster first, and then submits a Ray job to the cluster + switch rayJob.Status.JobDeploymentStatus { + case rayv1.JobDeploymentStatusInitializing: + return pluginsCore.PhaseInfoInitializing(rayJob.CreationTimestamp.Time, pluginsCore.DefaultPhaseVersion, "cluster is creating", info), nil + case rayv1.JobDeploymentStatusFailedToGetOrCreateRayCluster: + reason := fmt.Sprintf("Failed to create Ray cluster %s with error: %s", rayJob.Name, rayJob.Status.Message) + return pluginsCore.PhaseInfoFailure(flyteerr.TaskFailedWithError, reason, info), nil + case rayv1.JobDeploymentStatusFailedJobDeploy: + reason := fmt.Sprintf("Failed to submit Ray job %s with error: %s", rayJob.Name, rayJob.Status.Message) + return pluginsCore.PhaseInfoFailure(flyteerr.TaskFailedWithError, reason, info), nil + // JobDeploymentStatusSuspended is used when the suspend flag is set in rayJob. The suspend flag allows the temporary suspension of a Job's execution, which can be resumed later. + // Certain versions of KubeRay use a K8s job to submit a Ray job to the Ray cluster. JobDeploymentStatusWaitForK8sJob indicates that the K8s job is under creation. + case rayv1.JobDeploymentStatusWaitForDashboard, rayv1.JobDeploymentStatusFailedToGetJobStatus, rayv1.JobDeploymentStatusWaitForDashboardReady, rayv1.JobDeploymentStatusWaitForK8sJob, rayv1.JobDeploymentStatusSuspended: + return pluginsCore.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, info), nil + case rayv1.JobDeploymentStatusRunning, rayv1.JobDeploymentStatusComplete: + switch rayJob.Status.JobStatus { + case rayv1.JobStatusFailed: + reason := fmt.Sprintf("Failed to run Ray job %s with error: %s", rayJob.Name, rayJob.Status.Message) + return pluginsCore.PhaseInfoFailure(flyteerr.TaskFailedWithError, reason, info), nil + case rayv1.JobStatusSucceeded: + return pluginsCore.PhaseInfoSuccess(info), nil + // JobStatusStopped can occur when the suspend flag is set in rayJob. + case rayv1.JobStatusPending, rayv1.JobStatusStopped: + return pluginsCore.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, info), nil + case rayv1.JobStatusRunning: + phaseInfo := pluginsCore.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, info) + if len(info.Logs) > 0 { + phaseInfo = phaseInfo.WithVersion(pluginsCore.DefaultPhaseVersion + 1) + } + return phaseInfo, nil + default: + // We already handle all known job status, so this should never happen unless a future version of ray + // introduced a new job status. + return pluginsCore.PhaseInfoUndefined, fmt.Errorf("unknown job status: %s", rayJob.Status.JobStatus) + } + default: + // We already handle all known deployment status, so this should never happen unless a future version of ray + // introduced a new job status. + return pluginsCore.PhaseInfoUndefined, fmt.Errorf("unknown job deployment status: %s", rayJob.Status.JobDeploymentStatus) + } +} + +func (plugin rayJobResourceHandler) GetTaskPhaseV1Alpha1(ctx context.Context, pluginContext k8s.PluginContext, resource client.Object) (pluginsCore.PhaseInfo, error) { rayJob := resource.(*rayv1alpha1.RayJob) info, err := getEventInfoForRayJob(GetConfig().Logs, pluginContext, rayJob) if err != nil { diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go index f4d802ff9ab..02ed83db142 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go @@ -6,6 +6,7 @@ import ( "time" structpb "github.com/golang/protobuf/ptypes/struct" + rayv1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1" rayv1alpha1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1alpha1" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" @@ -706,6 +707,50 @@ func TestGetTaskPhase(t *testing.T) { } } +func TestGetTaskPhase_V1(t *testing.T) { + ctx := context.Background() + rayJobResourceHandler := rayJobResourceHandler{} + pluginCtx := newPluginContext() + + testCases := []struct { + rayJobPhase rayv1.JobStatus + rayClusterPhase rayv1.JobDeploymentStatus + expectedCorePhase pluginsCore.Phase + expectedError bool + }{ + {"", rayv1.JobDeploymentStatusInitializing, pluginsCore.PhaseInitializing, false}, + {rayv1.JobStatusPending, rayv1.JobDeploymentStatusFailedToGetOrCreateRayCluster, pluginsCore.PhasePermanentFailure, false}, + {rayv1.JobStatusPending, rayv1.JobDeploymentStatusWaitForDashboard, pluginsCore.PhaseRunning, false}, + {rayv1.JobStatusPending, rayv1.JobDeploymentStatusWaitForDashboardReady, pluginsCore.PhaseRunning, false}, + {rayv1.JobStatusPending, rayv1.JobDeploymentStatusWaitForK8sJob, pluginsCore.PhaseRunning, false}, + {rayv1.JobStatusPending, rayv1.JobDeploymentStatusFailedJobDeploy, pluginsCore.PhasePermanentFailure, false}, + {rayv1.JobStatusPending, rayv1.JobDeploymentStatusRunning, pluginsCore.PhaseRunning, false}, + {rayv1.JobStatusPending, rayv1.JobDeploymentStatusFailedToGetJobStatus, pluginsCore.PhaseRunning, false}, + {rayv1.JobStatusRunning, rayv1.JobDeploymentStatusRunning, pluginsCore.PhaseRunning, false}, + {rayv1.JobStatusFailed, rayv1.JobDeploymentStatusRunning, pluginsCore.PhasePermanentFailure, false}, + {rayv1.JobStatusSucceeded, rayv1.JobDeploymentStatusRunning, pluginsCore.PhaseSuccess, false}, + {rayv1.JobStatusSucceeded, rayv1.JobDeploymentStatusComplete, pluginsCore.PhaseSuccess, false}, + {rayv1.JobStatusStopped, rayv1.JobDeploymentStatusSuspended, pluginsCore.PhaseRunning, false}, + } + + for _, tc := range testCases { + t.Run("TestGetTaskPhase_"+string(tc.rayJobPhase), func(t *testing.T) { + rayObject := &rayv1.RayJob{} + rayObject.Status.JobStatus = tc.rayJobPhase + rayObject.Status.JobDeploymentStatus = tc.rayClusterPhase + startTime := metav1.NewTime(time.Now()) + rayObject.Status.StartTime = &startTime + phaseInfo, err := rayJobResourceHandler.GetTaskPhaseV1(ctx, pluginCtx, rayObject) + if tc.expectedError { + assert.Error(t, err) + } else { + assert.Nil(t, err) + } + assert.Equal(t, tc.expectedCorePhase.String(), phaseInfo.Phase().String()) + }) + } +} + func TestGetEventInfo_LogTemplates(t *testing.T) { pluginCtx := newPluginContext() testCases := []struct { @@ -805,6 +850,105 @@ func TestGetEventInfo_LogTemplates(t *testing.T) { } } +func TestGetEventInfo_LogTemplates_V1(t *testing.T) { + pluginCtx := newPluginContext() + testCases := []struct { + name string + rayJob rayv1.RayJob + logPlugin tasklog.TemplateLogPlugin + expectedTaskLogs []*core.TaskLog + }{ + { + name: "namespace", + rayJob: rayv1.RayJob{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "test-namespace", + }, + }, + logPlugin: tasklog.TemplateLogPlugin{ + DisplayName: "namespace", + TemplateURIs: []tasklog.TemplateURI{"http://test/{{ .namespace }}"}, + }, + expectedTaskLogs: []*core.TaskLog{ + { + Name: "namespace", + Uri: "http://test/test-namespace", + }, + }, + }, + { + name: "task execution ID", + rayJob: rayv1.RayJob{}, + logPlugin: tasklog.TemplateLogPlugin{ + DisplayName: "taskExecID", + TemplateURIs: []tasklog.TemplateURI{ + "http://test/projects/{{ .executionProject }}/domains/{{ .executionDomain }}/executions/{{ .executionName }}/nodeId/{{ .nodeID }}/taskId/{{ .taskID }}/attempt/{{ .taskRetryAttempt }}", + }, + }, + expectedTaskLogs: []*core.TaskLog{ + { + Name: "taskExecID", + Uri: "http://test/projects/my-execution-project/domains/my-execution-domain/executions/my-execution-name/nodeId/unique-node/taskId/my-task-name/attempt/1", + }, + }, + }, + { + name: "ray cluster name", + rayJob: rayv1.RayJob{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "test-namespace", + }, + Status: rayv1.RayJobStatus{ + RayClusterName: "ray-cluster", + }, + }, + logPlugin: tasklog.TemplateLogPlugin{ + DisplayName: "ray cluster name", + TemplateURIs: []tasklog.TemplateURI{"http://test/{{ .namespace }}/{{ .rayClusterName }}"}, + }, + expectedTaskLogs: []*core.TaskLog{ + { + Name: "ray cluster name", + Uri: "http://test/test-namespace/ray-cluster", + }, + }, + }, + { + name: "ray job ID", + rayJob: rayv1.RayJob{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "test-namespace", + }, + Status: rayv1.RayJobStatus{ + JobId: "ray-job-1", + }, + }, + logPlugin: tasklog.TemplateLogPlugin{ + DisplayName: "ray job ID", + TemplateURIs: []tasklog.TemplateURI{"http://test/{{ .namespace }}/{{ .rayJobID }}"}, + }, + expectedTaskLogs: []*core.TaskLog{ + { + Name: "ray job ID", + Uri: "http://test/test-namespace/ray-job-1", + }, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + ti, err := getEventInfoForRayJobV1( + logs.LogConfig{Templates: []tasklog.TemplateLogPlugin{tc.logPlugin}}, + pluginCtx, + &tc.rayJob, + ) + assert.NoError(t, err) + assert.Equal(t, tc.expectedTaskLogs, ti.Logs) + }) + } +} + func TestGetEventInfo_DashboardURL(t *testing.T) { pluginCtx := newPluginContext() testCases := []struct { @@ -857,6 +1001,58 @@ func TestGetEventInfo_DashboardURL(t *testing.T) { } } +func TestGetEventInfo_DashboardURL_V1(t *testing.T) { + pluginCtx := newPluginContext() + testCases := []struct { + name string + rayJob rayv1.RayJob + dashboardURLTemplate tasklog.TemplateLogPlugin + expectedTaskLogs []*core.TaskLog + }{ + { + name: "dashboard URL displayed", + rayJob: rayv1.RayJob{ + Status: rayv1.RayJobStatus{ + DashboardURL: "exists", + JobStatus: rayv1.JobStatusRunning, + }, + }, + dashboardURLTemplate: tasklog.TemplateLogPlugin{ + DisplayName: "Ray Dashboard", + TemplateURIs: []tasklog.TemplateURI{"http://test/{{.generatedName}}"}, + }, + expectedTaskLogs: []*core.TaskLog{ + { + Name: "Ray Dashboard", + Uri: "http://test/generated-name", + }, + }, + }, + { + name: "dashboard URL is not displayed", + rayJob: rayv1.RayJob{ + Status: rayv1.RayJobStatus{ + JobStatus: rayv1.JobStatusPending, + }, + }, + dashboardURLTemplate: tasklog.TemplateLogPlugin{ + DisplayName: "dummy", + TemplateURIs: []tasklog.TemplateURI{"http://dummy"}, + }, + expectedTaskLogs: nil, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.NoError(t, SetConfig(&Config{DashboardURLTemplate: &tc.dashboardURLTemplate})) + ti, err := getEventInfoForRayJobV1(logs.LogConfig{}, pluginCtx, &tc.rayJob) + assert.NoError(t, err) + assert.Equal(t, tc.expectedTaskLogs, ti.Logs) + }) + } +} + func TestGetPropertiesRay(t *testing.T) { rayJobResourceHandler := rayJobResourceHandler{} expected := k8s.PluginProperties{} From 8a254d304f55ad19a8d0b0abb0e801984be484a2 Mon Sep 17 00:00:00 2001 From: Flyte Bot Date: Tue, 13 Feb 2024 18:37:56 -0800 Subject: [PATCH 015/107] Update Flyte components (#4869) * Update Flyte Components Signed-off-by: Flyte-Bot * Add changelog and modify version in conf.py Signed-off-by: Eduardo Apolinario * Remove grpc-gateway v1 from go.mod Signed-off-by: Eduardo Apolinario * Update full list of changes and mention buf in list of changes. Signed-off-by: Eduardo Apolinario * Update versions of minio and postgresql bitnami charts in flyte-sandbox helm chart. Signed-off-by: Eduardo Apolinario * Run make helm Signed-off-by: Eduardo Apolinario --------- Signed-off-by: Flyte-Bot Signed-off-by: Eduardo Apolinario Co-authored-by: eapolinario --- CHANGELOG/CHANGELOG-v1.10.7.md | 184 ++++++++++++++++++ charts/flyte-binary/README.md | 2 +- charts/flyte-binary/values.yaml | 2 +- charts/flyte-core/README.md | 12 +- charts/flyte-core/values.yaml | 10 +- charts/flyte-sandbox/Chart.lock | 8 +- charts/flyte-sandbox/Chart.yaml | 6 +- charts/flyte-sandbox/README.md | 6 +- charts/flyte/README.md | 16 +- charts/flyte/values.yaml | 10 +- .../flyte_aws_scheduler_helm_generated.yaml | 30 +-- deployment/eks/flyte_generated.yaml | 22 +-- .../flyte_helm_controlplane_generated.yaml | 20 +- .../eks/flyte_helm_dataplane_generated.yaml | 14 +- deployment/eks/flyte_helm_generated.yaml | 34 ++-- .../flyte_helm_controlplane_generated.yaml | 20 +- .../gcp/flyte_helm_dataplane_generated.yaml | 14 +- deployment/gcp/flyte_helm_generated.yaml | 34 ++-- .../flyte_sandbox_binary_helm_generated.yaml | 4 +- deployment/sandbox/flyte_helm_generated.yaml | 34 ++-- .../manifests/complete-agent.yaml | 43 ++-- .../sandbox-bundled/manifests/complete.yaml | 43 ++-- docker/sandbox-bundled/manifests/dev.yaml | 39 ++-- docs/conf.py | 2 +- .../generated/flyteadmin_config.rst | 13 ++ .../generated/flytepropeller_config.rst | 13 ++ .../generated/scheduler_config.rst | 13 ++ flyteidl/go.mod | 4 +- flyteidl/go.sum | 1 - kustomize/overlays/eks/kustomization.yaml | 8 +- 30 files changed, 457 insertions(+), 204 deletions(-) create mode 100644 CHANGELOG/CHANGELOG-v1.10.7.md diff --git a/CHANGELOG/CHANGELOG-v1.10.7.md b/CHANGELOG/CHANGELOG-v1.10.7.md new file mode 100644 index 00000000000..66d0ee75764 --- /dev/null +++ b/CHANGELOG/CHANGELOG-v1.10.7.md @@ -0,0 +1,184 @@ +# Flyte 1.10.7 Release Notes + +We're excited to share the release of Flyte 1.10.7, featuring a broad spectrum of updates, improvements, and bug fixes across the Flyte ecosystem. This release marks a pivotal shift in our development approach, notably with our adoption of [buf](https://github.com/flyteorg/flyte/pull/4806) for protobuf stub generation. This move optimizes our development workflow and discontinues the automatic creation of Java and C++ stubs, making it easier to adapt the generated code for other languages as needed. Additionally, we've upgraded to gRPC-gateway v2, aligning with the latest advancements and recommendations found in the [v2 migration guide](https://grpc-ecosystem.github.io/grpc-gateway/docs/development/grpc-gateway_v2_migration_guide/). + +Our sincere gratitude goes to all contributors for their invaluable efforts towards this release. + +## Core Improvements and Bug Fixes + +- Improved error handling for transient secret sync issues, enhancing the robustness of secret management. [[PR #4310]](https://github.com/flyteorg/flyte/pull/4310) +- Introduced Sphinx build for Monodocs, improving documentation generation and integration. [[PR #4347]](https://github.com/flyteorg/flyte/pull/4347) +- Enhanced the Spark plugin by fixing the environment variable `ValueFrom` for pod templates, allowing for more dynamic configurations. [[PR #4532]](https://github.com/flyteorg/flyte/pull/4532) +- Optimized fastcache behavior to not cache lookups on node skip, reducing unnecessary cache hits. [[PR #4524]](https://github.com/flyteorg/flyte/pull/4524) +- Removed composition errors from branch nodes, streamlining execution paths. [[PR #4528]](https://github.com/flyteorg/flyte/pull/4528) +- Added support for ignoring warnings related to AWS SageMaker imports, improving integration compatibility. [[PR #4540]](https://github.com/flyteorg/flyte/pull/4540) +- Fixed a bug related to setting the service account from PodTemplate, ensuring correct service account usage. [[PR #4536]](https://github.com/flyteorg/flyte/pull/4536) +- Addressed flaky tests in test_monitor, enhancing test reliability. [[PR #4537]](https://github.com/flyteorg/flyte/pull/4537) +- Updated the boilerplate version and contribution guide, facilitating better community contributions. [[PR #4541]](https://github.com/flyteorg/flyte/pull/4541), [[PR #4501]](https://github.com/flyteorg/flyte/pull/4501) +- Improved documentation build processes by manually creating version files and introducing a conda-lock file for consistent environment setup. [[PR #4556]](https://github.com/flyteorg/flyte/pull/4556), [[PR #4553]](https://github.com/flyteorg/flyte/pull/4553) +- Enhanced array node evaluation frequency optimization by detecting subNode phase updates. [[PR #4535]](https://github.com/flyteorg/flyte/pull/4535) +- Introduced support for failure nodes, allowing workflows to handle failures more gracefully. [[PR #4308]](https://github.com/flyteorg/flyte/pull/4308) +- Made various updates to Go versions, plugin integrations, and GitHub workflows to enhance performance and developer experience. [[PR #4534]](https://github.com/flyteorg/flyte/pull/4534), [[PR #4582]](https://github.com/flyteorg/flyte/pull/4582), [[PR #4589]](https://github.com/flyteorg/flyte/pull/4589) +- Addressed several bugs and made improvements in caching, metadata handling, and task execution, further stabilizing the Flyte platform. [[PR #4594]](https://github.com/flyteorg/flyte/pull/4594), [[PR #4590]](https://github.com/flyteorg/flyte/pull/4590), [[PR #4607]](https://github.com/flyteorg/flyte/pull/4607) +- Streamlined development workflow with the transition to buf for generating protobuf stubs, ceasing the automatic generation of Java and C++ stubs. +- Upgraded to grpc-gateway v2, optimizing API performance and compatibility. + +## Plugin and Integration Enhancements + +- Added new features and fixed bugs in the Spark plugin, Ray Autoscaler integration, and other areas, expanding Flyte's capabilities and integration ecosystem. [[PR #4363]](https://github.com/flyteorg/flyte/pull/4363) +- Updated various dependencies and configurations, ensuring compatibility and security. [[PR #4571]](https://github.com/flyteorg/flyte/pull/4571), [[PR #4643]](https://github.com/flyteorg/flyte/pull/4643) +- Improved the handling and documentation of plugin secrets management, making it easier for users to manage sensitive information. [[PR #4732]](https://github.com/flyteorg/flyte/pull/4732) + +## Documentation and Community + +- Updated community meeting cadence and contribution guidelines, fostering a more engaged and welcoming community. [[PR #4699]](https://github.com/flyteorg/flyte/pull/4699) +- Enhanced documentation through various updates, including the introduction of a new architecture image for FlytePlugins and clarification of propeller scaling. [[PR #4661]](https://github.com/flyteorg/flyte/pull/4661), [[PR #4741]](https://github.com/flyteorg/flyte/pull/4741) + +## Full Changelog +- Fix transient secret sync error handling by @Tom-Newton in https://github.com/flyteorg/flyte/pull/4310 +- Monodocs sphinx build by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4347 +- [Spark plugin] Fix environment variable ValueFrom for pod templates by @Tom-Newton in https://github.com/flyteorg/flyte/pull/4532 +- fastcache should not cache lookup on node skip by @hamersaw in https://github.com/flyteorg/flyte/pull/4524 +- Removed composition error from branch node by @hamersaw in https://github.com/flyteorg/flyte/pull/4528 +- ignore warnings related to awssagemaker import by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4540 +- [BUG] Fix setting of service_account from PodTemplate by @pvditt in https://github.com/flyteorg/flyte/pull/4536 +- Fix flaky test_monitor by @pingsutw in https://github.com/flyteorg/flyte/pull/4537 +- Update boilerplate version by @flyte-bot in https://github.com/flyteorg/flyte/pull/4541 +- remove hardcoded list of tests by @samhita-alla in https://github.com/flyteorg/flyte/pull/4521 +- manually create flytekit/_version.py file in docs build by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4556 +- introduce conda-lock file for docs by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4553 +- Detect subNode phase updates to reduce evaluation frequency of ArrayNode by @hamersaw in https://github.com/flyteorg/flyte/pull/4535 +- Add support failure node by @pingsutw in https://github.com/flyteorg/flyte/pull/4308 +- Return InvalidArgument for workflow compilation failures in CreateWorkflow by @katrogan in https://github.com/flyteorg/flyte/pull/4566 +- Update to go 1.21 by @eapolinario in https://github.com/flyteorg/flyte/pull/4534 +- Update contribution guide by @pingsutw in https://github.com/flyteorg/flyte/pull/4501 +- Add flyin plugin to monodocs integrations page by @neverett in https://github.com/flyteorg/flyte/pull/4582 +- Use updated cronSchedule in CreateLaunchPlanModel by @pmahindrakar-oss in https://github.com/flyteorg/flyte/pull/4564 +- Writing zero length inputs by @hamersaw in https://github.com/flyteorg/flyte/pull/4594 +- Feature/add pod pending timeout config by @pvditt in https://github.com/flyteorg/flyte/pull/4590 +- Run single-binary gh workflows on all PRs by @eapolinario in https://github.com/flyteorg/flyte/pull/4589 +- auto-generate toctree from flytesnacks index.md docs by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4587 +- add repo tag and commit associated with the build by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4571 +- monodocs - gracefully handle case when external repo doesn't contain tags: use current commit by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4598 +- convert commit to string by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4599 +- Bug/abort map task subtasks by @pvditt in https://github.com/flyteorg/flyte/pull/4506 +- Supporting parallelized workers in ArrayNode subNodes by @hamersaw in https://github.com/flyteorg/flyte/pull/4567 +- Don't use experimental readthedocs build.commands config by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4606 +- Ignore cache variables by @hamersaw in https://github.com/flyteorg/flyte/pull/4618 +- Feature/add cleanup non recoverable pod statuses by @pvditt in https://github.com/flyteorg/flyte/pull/4607 +- Agent Metadata Servicer by @Future-Outlier in https://github.com/flyteorg/flyte/pull/4511 +- Add Flyin propeller config by @eapolinario in https://github.com/flyteorg/flyte/pull/4610 +- Correctly computing ArrayNode maximum attempts and system failures by @hamersaw in https://github.com/flyteorg/flyte/pull/4627 +- Agent Sync Plugin by @Future-Outlier in https://github.com/flyteorg/flyte/pull/4107 +- Add github token in buf gh action by @eapolinario in https://github.com/flyteorg/flyte/pull/4626 +- Update flyte-binary values by @davidmirror-ops in https://github.com/flyteorg/flyte/pull/4604 +- Fixing cache overwrite metadata update by @hamersaw in https://github.com/flyteorg/flyte/pull/4617 +- Fixing 100 kilobyte max error message size by @hamersaw in https://github.com/flyteorg/flyte/pull/4631 +- Add Ray Autoscaler to the Flyte-Ray plugin by @Yicheng-Lu-llll in https://github.com/flyteorg/flyte/pull/4363 +- Artifact protos and related changes by @wild-endeavor in https://github.com/flyteorg/flyte/pull/4474 +- Remove protoc-gen-validate by @eapolinario in https://github.com/flyteorg/flyte/pull/4643 +- Readme update 2023 by @davidmirror-ops in https://github.com/flyteorg/flyte/pull/4549 +- Fixing ArrayNode integration with backoff controller by @hamersaw in https://github.com/flyteorg/flyte/pull/4640 +- Avoid to use the http.DefaultClient by @andresgomezfrr in https://github.com/flyteorg/flyte/pull/4667 +- Update dns policy for sandbox buildkit instance to ClusterFirstWithHo… by @jeevb in https://github.com/flyteorg/flyte/pull/4678 +- Updating ArrayNode ExternalResourceInfo ID by @hamersaw in https://github.com/flyteorg/flyte/pull/4677 +- Feat: Inject user identity as pod label in K8s plugin by @fg91 in https://github.com/flyteorg/flyte/pull/4637 +- Artifacts shell 2 by @wild-endeavor in https://github.com/flyteorg/flyte/pull/4649 +- Improve Agent Metadata Service Error Message by @Future-Outlier in https://github.com/flyteorg/flyte/pull/4682 +- move pod start/end time to a common template vars by @vraiyaninv in https://github.com/flyteorg/flyte/pull/4676 +- switch readthedocs config to monodocs build by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4687 +- Update Flyte components by @flyte-bot in https://github.com/flyteorg/flyte/pull/4690 +- Add GetTaskMetrics and GetTaskLogs to agent by @pingsutw in https://github.com/flyteorg/flyte/pull/4662 +- add algolia searchbar by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4696 +- monodocs: do not use beta releases when importing projects by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4712 +- add cache evicted status by @pvditt in https://github.com/flyteorg/flyte/pull/4705 +- Update community meeting cadence by @davidmirror-ops in https://github.com/flyteorg/flyte/pull/4699 +- Remove dockerfiles from subfolder by @pingsutw in https://github.com/flyteorg/flyte/pull/4715 +- Update to artifact idl - Add List Usage endpoint by @wild-endeavor in https://github.com/flyteorg/flyte/pull/4714 +- monodocs uses flytekit/flytectl index rst file by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4720 +- Replace grpc gateway endpoints with post by @wild-endeavor in https://github.com/flyteorg/flyte/pull/4717 +- [BUG] Retry fetching subworkflow output data on failure by @pvditt in https://github.com/flyteorg/flyte/pull/4602 +- Option to clear node state on any termination by @Tom-Newton in https://github.com/flyteorg/flyte/pull/4596 +- Add org to identifier protos by @katrogan in https://github.com/flyteorg/flyte/pull/4663 +- Update docs for plugin secrets management by @wild-endeavor in https://github.com/flyteorg/flyte/pull/4732 +- Reintroduce k8s client fallback to cache lookups by @hamersaw in https://github.com/flyteorg/flyte/pull/4733 +- Remove unused validate files by @eapolinario in https://github.com/flyteorg/flyte/pull/4644 +- delete old docs by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4742 +- Docs/Clarify propeller scaling by @wild-endeavor in https://github.com/flyteorg/flyte/pull/4741 +- Update Flyte components by @flyte-bot in https://github.com/flyteorg/flyte/pull/4744 +- Add org to all flyteadmin endpoints for consistency by @katrogan in https://github.com/flyteorg/flyte/pull/4746 +- update conda lock file by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4749 +- Use logger with formatter by @andrewwdye in https://github.com/flyteorg/flyte/pull/4747 +- [housekeeping] Remove pull_request_template from each subdirectory by @pingsutw in https://github.com/flyteorg/flyte/pull/4753 +- [Docs] Reapply Databricks agent docs changes from #4008 by @neverett in https://github.com/flyteorg/flyte/pull/4751 +- Fix test get logs template uri test by @eapolinario in https://github.com/flyteorg/flyte/pull/4760 +- Small formatting fixes for Databrick agents docs by @neverett in https://github.com/flyteorg/flyte/pull/4758 +- [housekeeping] Remove flytearchives by @pingsutw in https://github.com/flyteorg/flyte/pull/4761 +- Guard against open redirect URL parameters in login by @katrogan in https://github.com/flyteorg/flyte/pull/4763 +- Wrapping k8s client with write filter and cache reader by @hamersaw in https://github.com/flyteorg/flyte/pull/4752 +- [BUG] Handle Potential Indefinite Propeller Update Loops by @pvditt in https://github.com/flyteorg/flyte/pull/4755 +- Update Flyte components by @flyte-bot in https://github.com/flyteorg/flyte/pull/4768 +- Deprecated Agent State to Agent Phase by @Future-Outlier in https://github.com/flyteorg/flyte/pull/4738 +- Add docs build process readme by @ppiegaze in https://github.com/flyteorg/flyte/pull/4772 +- GetDynamicNodeWorkflow endpoint by @iaroslav-ciupin in https://github.com/flyteorg/flyte/pull/4689 +- [BUG] subworkflow timeout propagation by @pvditt in https://github.com/flyteorg/flyte/pull/4766 +- Update artifact IDL with new time partition by @wild-endeavor in https://github.com/flyteorg/flyte/pull/4737 +- Proto changes by @wild-endeavor in https://github.com/flyteorg/flyte/pull/4778 +- Updates for onboarding docs revamp by @neverett in https://github.com/flyteorg/flyte/pull/4548 +- [Docs] Fix toctree links to User Guide, Environment Setup, and Contributing sections by @neverett in https://github.com/flyteorg/flyte/pull/4781 +- docs: add FlytePlugins architecture image by @jasonlai1218 in https://github.com/flyteorg/flyte/pull/4661 +- Fix repeated items in left nav by @ppiegaze in https://github.com/flyteorg/flyte/pull/4783 +- [Docs] Remove broken link from Understand How Flyte Handles Data page (for new monodocs site) (second attempt) by @neverett in https://github.com/flyteorg/flyte/pull/4757 +- docs: update Flyte sandbox configuration and documentation by @jasonlai1218 in https://github.com/flyteorg/flyte/pull/4729 +- Replace `Storage` To `Ephemeral Storage` in Helm Chart by @Future-Outlier in https://github.com/flyteorg/flyte/pull/4782 +- Fix webhook typo, add podLabels, add podEnv to flyte-core Helm chart by @ddl-ebrown in https://github.com/flyteorg/flyte/pull/4756 +- Dynamic log links by @eapolinario in https://github.com/flyteorg/flyte/pull/4774 +- Remove storage as a task resource option by @Future-Outlier in https://github.com/flyteorg/flyte/pull/4658 +- feat: add apache 2.0 license to python flyteidl by @michaeltinsley in https://github.com/flyteorg/flyte/pull/4786 +- Reduce maptask transitions between WaitingForResources and CheckingSubtaskExecutions by @hamersaw in https://github.com/flyteorg/flyte/pull/4790 +- propeller gc ttl comparison should allow 23 by @hamersaw in https://github.com/flyteorg/flyte/pull/4791 +- Bring Scheme back for backwards compatibility by @eapolinario in https://github.com/flyteorg/flyte/pull/4789 +- Pass secret to invocation of go_generate gh workflow by @eapolinario in https://github.com/flyteorg/flyte/pull/4630 +- [BUG] handle potential uncaught OOMKilled terminations by @pvditt in https://github.com/flyteorg/flyte/pull/4793 +- Update additional bindings for org in path to be consistent by @katrogan in https://github.com/flyteorg/flyte/pull/4795 +- Update pyflyte serve into pyflyte serve agent by @chaohengstudent in https://github.com/flyteorg/flyte/pull/4526 +- Agent ClientSet by @Future-Outlier in https://github.com/flyteorg/flyte/pull/4718 +- Support kuberay v1.0.0 by @Yicheng-Lu-llll in https://github.com/flyteorg/flyte/pull/4656 +- Update Flyte components by @flyte-bot in https://github.com/flyteorg/flyte/pull/4803 +- install latest flyteidl when building monodocs by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4815 +- Rewrite GetExecutionData path additional bindings for org by @katrogan in https://github.com/flyteorg/flyte/pull/4816 +- update docs README environment setup by @cosmicBboy in https://github.com/flyteorg/flyte/pull/4819 +- Flyte-core add missing nodeSelector values by @ddl-ebrown in https://github.com/flyteorg/flyte/pull/4808 +- Flyte-core add missing imagePullSecrets support by @ddl-ebrown in https://github.com/flyteorg/flyte/pull/4810 +- Logger disable HTML escaping by @andrewwdye in https://github.com/flyteorg/flyte/pull/4828 +- Move intro docs from flytesnacks to flyte by @ppiegaze in https://github.com/flyteorg/flyte/pull/4814 +- Flyte-agent configure pod securityContext by @ddl-ebrown in https://github.com/flyteorg/flyte/pull/4785 +- [Docs] add sandbox to local cluster resource path by @wild-endeavor in https://github.com/flyteorg/flyte/pull/4837 +- Flyte-core add missing podEnv values by @ddl-ebrown in https://github.com/flyteorg/flyte/pull/4807 +- Flyte-core Expose propeller webhook port 9443 in charts by @ddl-ebrown in https://github.com/flyteorg/flyte/pull/4804 +- Align dir structure and URL structure with left nav hierarchy by @ppiegaze in https://github.com/flyteorg/flyte/pull/4843 +- Generate version with setuptools_scm and migrate to pyproject.toml by @pingsutw in https://github.com/flyteorg/flyte/pull/4799 +- MNT Fixes packaging for flyteidl wheel by @thomasjpfan in https://github.com/flyteorg/flyte/pull/4846 +- Use buf to generate stubs by @eapolinario in https://github.com/flyteorg/flyte/pull/4806 +- [FLYTE-486] Support selecting IDP based on the query parameter by @pmahindrakar-oss in https://github.com/flyteorg/flyte/pull/4838 +- Update Flyte components by @flyte-bot in https://github.com/flyteorg/flyte/pull/4847 +- Add plugin_config for agent by @pingsutw in https://github.com/flyteorg/flyte/pull/4848 +- Adds MANIFEST.in for flyteidl by @thomasjpfan in https://github.com/flyteorg/flyte/pull/4850 +- Verify unbounded inputs for all scheduled launch plan types by @katrogan in https://github.com/flyteorg/flyte/pull/4867 +- Fix npm publish of flyteidl package by @eapolinario in https://github.com/flyteorg/flyte/pull/4861 +- Remove protoc_gen_swagger by @eapolinario in https://github.com/flyteorg/flyte/pull/4860 +- Create CODEOWNERS file and add docs team by @neverett in https://github.com/flyteorg/flyte/pull/4857 +- [Docs] update outdated link to on-prem tutorial by @ALMerrill in https://github.com/flyteorg/flyte/pull/4868 +- Re-add link to hosted sandbox by @neverett in https://github.com/flyteorg/flyte/pull/4856 +- Fix asterisk in cron table being rendered as list item by @neverett in https://github.com/flyteorg/flyte/pull/4836 +- Add notes to selfAuth with Azure docs by @davidmirror-ops in https://github.com/flyteorg/flyte/pull/4835 +- Add protos to support cache overrides by @hamersaw in https://github.com/flyteorg/flyte/pull/4820 +- Flyte-core add support for ingressClassName in ingress by @ddl-ebrown in https://github.com/flyteorg/flyte/pull/4805 +- Update flyte docs build directions by @ppiegaze in https://github.com/flyteorg/flyte/pull/4862 +- Replaced deprecated bitnami/bitnami-shell image with bitnami/os-shell by @kamaleybov in https://github.com/flyteorg/flyte/pull/4882 +- Flyte-core define pod and container securityContext by @ddl-ebrown in https://github.com/flyteorg/flyte/pull/4809 +- Leverage KubeRay v1 instead of v1alpha1 for resources by @peterghaddad in https://github.com/flyteorg/flyte/pull/4818 + +## New Contributors + +- A warm welcome to our new contributors: [@pvditt](https://github.com/pvditt), [@ppiegaze](https://github.com/ppiegaze), [@jasonlai1218](https://github.com/jasonlai1218), and [@ddl-ebrown](https://github.com/ddl-ebrown). Thank you for your contributions to the Flyte community! diff --git a/charts/flyte-binary/README.md b/charts/flyte-binary/README.md index 0e4fe2282b0..9d1c3ddb549 100644 --- a/charts/flyte-binary/README.md +++ b/charts/flyte-binary/README.md @@ -42,7 +42,7 @@ Chart for basic single Flyte executable deployment | configuration.auth.oidc.clientId | string | `""` | | | configuration.auth.oidc.clientSecret | string | `""` | | | configuration.co-pilot.image.repository | string | `"cr.flyte.org/flyteorg/flytecopilot"` | | -| configuration.co-pilot.image.tag | string | `"v1.10.7-b4"` | | +| configuration.co-pilot.image.tag | string | `"v1.10.7"` | | | configuration.database.dbname | string | `"flyte"` | | | configuration.database.host | string | `"127.0.0.1"` | | | configuration.database.options | string | `"sslmode=disable"` | | diff --git a/charts/flyte-binary/values.yaml b/charts/flyte-binary/values.yaml index 67a5fd3659b..3b95aed614b 100644 --- a/charts/flyte-binary/values.yaml +++ b/charts/flyte-binary/values.yaml @@ -159,7 +159,7 @@ configuration: # repository CoPilot sidecar image repository repository: cr.flyte.org/flyteorg/flytecopilot # FLYTECOPILOT_IMAGE # tag CoPilot sidecar image tag - tag: v1.10.7-b4 # FLYTECOPILOT_TAG + tag: v1.10.7 # FLYTECOPILOT_TAG # agentService Flyte Agent configuration agentService: defaultAgent: diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index a4518bb3ac7..47130dca5ee 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -94,8 +94,8 @@ helm install gateway bitnami/contour -n flyte | configmap.clusters.clusterConfigs | list | `[]` | | | configmap.clusters.labelClusterMap | object | `{}` | | | configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | configmap.core | object | `{"manager":{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"},"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | configmap.core.manager | object | `{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/manager/config#Config). | | configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | @@ -129,7 +129,7 @@ helm install gateway bitnami/contour -n flyte | datacatalog.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| datacatalog.image.tag | string | `"v1.10.7-b4"` | Docker image tag | +| datacatalog.image.tag | string | `"v1.10.7"` | Docker image tag | | datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | datacatalog.podEnv | object | `{}` | Additional Datacatalog container environment variables | @@ -163,7 +163,7 @@ helm install gateway bitnami/contour -n flyte | flyteadmin.extraArgs | object | `{}` | Appends extra command line arguments to the serve command | | flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | | | flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyteadmin.image.tag | string | `"v1.10.7-b4"` | | +| flyteadmin.image.tag | string | `"v1.10.7"` | | | flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -221,7 +221,7 @@ helm install gateway bitnami/contour -n flyte | flytepropeller.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | | | flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flytepropeller.image.tag | string | `"v1.10.7-b4"` | | +| flytepropeller.image.tag | string | `"v1.10.7"` | | | flytepropeller.manager | bool | `false` | | | flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | @@ -250,7 +250,7 @@ helm install gateway bitnami/contour -n flyte | flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flytescheduler.image.tag | string | `"v1.10.7-b4"` | Docker image tag | +| flytescheduler.image.tag | string | `"v1.10.7"` | Docker image tag | | flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flytescheduler.podEnv | object | `{}` | Additional Flytescheduler container environment variables | diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index 16e7accc5ea..6f3dd49f24a 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -16,7 +16,7 @@ flyteadmin: image: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE - tag: v1.10.7-b4 # FLYTEADMIN_TAG + tag: v1.10.7 # FLYTEADMIN_TAG pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables # @@ -134,7 +134,7 @@ flytescheduler: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.10.7-b4 # FLYTESCHEDULER_TAG + tag: v1.10.7 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -192,7 +192,7 @@ datacatalog: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.10.7-b4 # DATACATALOG_TAG + tag: v1.10.7 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -270,7 +270,7 @@ flytepropeller: image: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE - tag: v1.10.7-b4 # FLYTEPROPELLER_TAG + tag: v1.10.7 # FLYTEPROPELLER_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment resources: @@ -681,7 +681,7 @@ configmap: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/charts/flyte-sandbox/Chart.lock b/charts/flyte-sandbox/Chart.lock index 3b64136d9d2..7c4a85bfd37 100644 --- a/charts/flyte-sandbox/Chart.lock +++ b/charts/flyte-sandbox/Chart.lock @@ -10,9 +10,9 @@ dependencies: version: 6.0.0 - name: minio repository: https://charts.bitnami.com/bitnami - version: 12.1.1 + version: 12.6.7 - name: postgresql repository: https://charts.bitnami.com/bitnami - version: 12.1.9 -digest: sha256:e7155e540bbdb98f690eb12e2bd301a19d8b36833336f6991410cb44d8d9bb5e -generated: "2023-10-28T10:05:34.269916+08:00" + version: 12.8.1 +digest: sha256:f63a6ba148c681162253c24f0ba200ab7d5b7934a398824cb7b4f35d8f9166de +generated: "2024-02-13T17:51:58.270175-08:00" diff --git a/charts/flyte-sandbox/Chart.yaml b/charts/flyte-sandbox/Chart.yaml index cf60b48492c..d0914745db3 100644 --- a/charts/flyte-sandbox/Chart.yaml +++ b/charts/flyte-sandbox/Chart.yaml @@ -21,7 +21,7 @@ version: 0.1.0 # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "1.16.1" dependencies: - name: docker-registry @@ -37,10 +37,10 @@ dependencies: repository: https://kubernetes.github.io/dashboard/ condition: kubernetes-dashboard.enabled - name: minio - version: 12.1.1 + version: 12.6.7 repository: https://charts.bitnami.com/bitnami condition: minio.enabled - name: postgresql - version: 12.1.9 + version: 12.8.1 repository: https://charts.bitnami.com/bitnami condition: postgresql.enabled diff --git a/charts/flyte-sandbox/README.md b/charts/flyte-sandbox/README.md index bb61e490f51..7820ed27681 100644 --- a/charts/flyte-sandbox/README.md +++ b/charts/flyte-sandbox/README.md @@ -1,6 +1,6 @@ # flyte-sandbox -![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.16.0](https://img.shields.io/badge/AppVersion-1.16.0-informational?style=flat-square) +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.16.1](https://img.shields.io/badge/AppVersion-1.16.1-informational?style=flat-square) A Helm chart for the Flyte local sandbox @@ -9,8 +9,8 @@ A Helm chart for the Flyte local sandbox | Repository | Name | Version | |------------|------|---------| | file://../flyte-binary | flyte-binary | v0.1.10 | -| https://charts.bitnami.com/bitnami | minio | 12.1.1 | -| https://charts.bitnami.com/bitnami | postgresql | 12.1.9 | +| https://charts.bitnami.com/bitnami | minio | 12.6.7 | +| https://charts.bitnami.com/bitnami | postgresql | 12.8.1 | | https://helm.twun.io/ | docker-registry | 2.2.2 | | https://kubernetes.github.io/dashboard/ | kubernetes-dashboard | 6.0.0 | diff --git a/charts/flyte/README.md b/charts/flyte/README.md index 30b56d61444..59113be64b7 100644 --- a/charts/flyte/README.md +++ b/charts/flyte/README.md @@ -71,7 +71,7 @@ helm upgrade -f values-sandbox.yaml flyte . | contour.tolerations | list | `[]` | tolerations for Contour deployment | | daskoperator | object | `{"enabled":false}` | Optional: Dask Plugin using the Dask Operator | | daskoperator.enabled | bool | `false` | - enable or disable the dask operator deployment installation | -| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.10.7-b4"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.10.7-b4"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.2"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.10.7-b4"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.10.7-b4"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | +| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.10.7"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.10.7"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.2"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.10.7"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.10.7"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | | flyte.cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | | flyte.cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. | | flyte.cluster_resource_manager.config.cluster_resources.standaloneDeployment | bool | `false` | Starts the cluster resource manager in standalone mode with requisite auth credentials to call flyteadmin service endpoints | @@ -91,15 +91,15 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.common.ingress.separateGrpcIngressAnnotations | object | `{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"}` | - Extra Ingress annotations applied only to the GRPC ingress. Only makes sense if `separateGrpcIngress` is enabled. | | flyte.common.ingress.tls | object | `{"enabled":false}` | - TLS Settings | | flyte.common.ingress.webpackHMR | bool | `true` | - Enable or disable HMR route to flyteconsole. This is useful only for frontend development. | -| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | +| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | | flyte.configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration | | flyte.configmap.adminServer.auth | object | `{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}}` | Authentication configuration | | flyte.configmap.adminServer.server.security.secure | bool | `false` | Controls whether to serve requests over SSL/TLS. | | flyte.configmap.adminServer.server.security.useAuth | bool | `false` | Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. | | flyte.configmap.catalog | object | `{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}}` | Catalog Client configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/catalog#Config) Additional advanced Catalog configuration [here](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/catalog#Config) | | flyte.configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | flyte.configmap.core | object | `{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | flyte.configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | | flyte.configmap.datacatalogServer | object | `{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config | @@ -120,7 +120,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.datacatalog.configPath | string | `"/etc/datacatalog/config/*.yaml"` | Default regex string for searching configuration files | | flyte.datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| flyte.datacatalog.image.tag | string | `"v1.10.7-b4"` | Docker image tag | +| flyte.datacatalog.image.tag | string | `"v1.10.7"` | Docker image tag | | flyte.datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | flyte.datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | flyte.datacatalog.replicaCount | int | `1` | Replicas count for Datacatalog deployment | @@ -136,7 +136,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flyteadmin.env | list | `[]` | Additional flyteadmin container environment variables e.g. SendGrid's API key - name: SENDGRID_API_KEY value: "" e.g. secret environment variable (you can combine it with .additionalVolumes): - name: SENDGRID_API_KEY valueFrom: secretKeyRef: name: sendgrid-secret key: api_key | | flyte.flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyte.flyteadmin.image.tag | string | `"v1.10.7-b4"` | Docker image tag | +| flyte.flyteadmin.image.tag | string | `"v1.10.7"` | Docker image tag | | flyte.flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyte.flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyte.flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -162,7 +162,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytepropeller.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flyte.flytepropeller.image.tag | string | `"v1.10.7-b4"` | Docker image tag | +| flyte.flytepropeller.image.tag | string | `"v1.10.7"` | Docker image tag | | flyte.flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flyte.flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | | flyte.flytepropeller.replicaCount | int | `1` | Replicas count for Flytepropeller deployment | @@ -176,7 +176,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flyte.flytescheduler.image.tag | string | `"v1.10.7-b4"` | Docker image tag | +| flyte.flytescheduler.image.tag | string | `"v1.10.7"` | Docker image tag | | flyte.flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flyte.flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flyte.flytescheduler.resources | object | `{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}}` | Default resources requests and limits for Flytescheduler deployment | diff --git a/charts/flyte/values.yaml b/charts/flyte/values.yaml index ac4d3f47ca8..1044202e702 100755 --- a/charts/flyte/values.yaml +++ b/charts/flyte/values.yaml @@ -16,7 +16,7 @@ flyte: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE # -- Docker image tag - tag: v1.10.7-b4 # FLYTEADMIN_TAG + tag: v1.10.7 # FLYTEADMIN_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables @@ -84,7 +84,7 @@ flyte: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.10.7-b4 # FLYTESCHEDULER_TAG + tag: v1.10.7 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -129,7 +129,7 @@ flyte: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.10.7-b4 # DATACATALOG_TAG + tag: v1.10.7 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -178,7 +178,7 @@ flyte: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE # -- Docker image tag - tag: v1.10.7-b4 # FLYTEPROPELLER_TAG + tag: v1.10.7 # FLYTEPROPELLER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment @@ -471,7 +471,7 @@ flyte: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index b6adaab5d66..a281d51ada5 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -431,7 +431,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -870,7 +870,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -891,7 +891,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -909,7 +909,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -926,7 +926,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -953,7 +953,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1058,7 +1058,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1188,7 +1188,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1206,7 +1206,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1269,7 +1269,7 @@ spec: template: metadata: annotations: - configChecksum: "799320510466012ad23a7380ea4ac9ff51fd8ed6e56d9c543179b6bb6a9bcf1" + configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1295,7 +1295,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1349,9 +1349,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7-b4 + app.kubernetes.io/version: v1.10.7 annotations: - configChecksum: "799320510466012ad23a7380ea4ac9ff51fd8ed6e56d9c543179b6bb6a9bcf1" + configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" spec: securityContext: fsGroup: 65534 @@ -1363,7 +1363,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1390,7 +1390,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_generated.yaml b/deployment/eks/flyte_generated.yaml index 29956564399..d12576c3aff 100644 --- a/deployment/eks/flyte_generated.yaml +++ b/deployment/eks/flyte_generated.yaml @@ -8640,7 +8640,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4 + image: cr.flyte.org/flyteorg/datacatalog:v1.10.7 imagePullPolicy: IfNotPresent name: datacatalog ports: @@ -8663,7 +8663,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4 + image: cr.flyte.org/flyteorg/datacatalog:v1.10.7 imagePullPolicy: IfNotPresent name: run-migrations volumeMounts: @@ -8724,7 +8724,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7 imagePullPolicy: IfNotPresent name: webhook volumeMounts: @@ -8751,7 +8751,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7 imagePullPolicy: IfNotPresent name: generate-secrets volumeMounts: @@ -8799,7 +8799,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 imagePullPolicy: IfNotPresent name: flyteadmin ports: @@ -8846,7 +8846,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 imagePullPolicy: IfNotPresent name: run-migrations volumeMounts: @@ -8863,7 +8863,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 imagePullPolicy: IfNotPresent name: seed-projects volumeMounts: @@ -8877,7 +8877,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 imagePullPolicy: IfNotPresent name: sync-cluster-resources volumeMounts: @@ -8897,7 +8897,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 imagePullPolicy: IfNotPresent name: generate-secrets volumeMounts: @@ -9002,7 +9002,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7 imagePullPolicy: IfNotPresent name: flytepropeller ports: @@ -9270,7 +9270,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 imagePullPolicy: IfNotPresent name: sync-cluster-resources volumeMounts: diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml index 8b17155aa1b..322a193a19c 100644 --- a/deployment/eks/flyte_helm_controlplane_generated.yaml +++ b/deployment/eks/flyte_helm_controlplane_generated.yaml @@ -576,7 +576,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -597,7 +597,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -615,7 +615,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -632,7 +632,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -659,7 +659,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -764,7 +764,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -894,7 +894,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -912,7 +912,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -995,7 +995,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1015,7 +1015,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index 52b14a1b6e0..a2bd2fe259e 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -427,7 +427,7 @@ spec: template: metadata: annotations: - configChecksum: "799320510466012ad23a7380ea4ac9ff51fd8ed6e56d9c543179b6bb6a9bcf1" + configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -453,7 +453,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -507,9 +507,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7-b4 + app.kubernetes.io/version: v1.10.7 annotations: - configChecksum: "799320510466012ad23a7380ea4ac9ff51fd8ed6e56d9c543179b6bb6a9bcf1" + configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" spec: securityContext: fsGroup: 65534 @@ -521,7 +521,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -548,7 +548,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index fa8a6387b35..1affaea520d 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -462,7 +462,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -901,7 +901,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -922,7 +922,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -940,7 +940,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -957,7 +957,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -984,7 +984,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1089,7 +1089,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1219,7 +1219,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1237,7 +1237,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1320,7 +1320,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1340,7 +1340,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1399,7 +1399,7 @@ spec: template: metadata: annotations: - configChecksum: "799320510466012ad23a7380ea4ac9ff51fd8ed6e56d9c543179b6bb6a9bcf1" + configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1425,7 +1425,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1479,9 +1479,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7-b4 + app.kubernetes.io/version: v1.10.7 annotations: - configChecksum: "799320510466012ad23a7380ea4ac9ff51fd8ed6e56d9c543179b6bb6a9bcf1" + configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" spec: securityContext: fsGroup: 65534 @@ -1493,7 +1493,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1520,7 +1520,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml index 96f6427fb6b..19dea02fc39 100644 --- a/deployment/gcp/flyte_helm_controlplane_generated.yaml +++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml @@ -591,7 +591,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -612,7 +612,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -630,7 +630,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -647,7 +647,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -674,7 +674,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -779,7 +779,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -909,7 +909,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -927,7 +927,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1010,7 +1010,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1030,7 +1030,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index 0e7b6af3feb..b0b4410f81c 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -435,7 +435,7 @@ spec: template: metadata: annotations: - configChecksum: "574080d58e672acb923d48388a0746a10a55b3a0397c836d204910e0ead139c" + configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -460,7 +460,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -514,9 +514,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7-b4 + app.kubernetes.io/version: v1.10.7 annotations: - configChecksum: "574080d58e672acb923d48388a0746a10a55b3a0397c836d204910e0ead139c" + configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" spec: securityContext: fsGroup: 65534 @@ -528,7 +528,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -555,7 +555,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index 0031523dd74..17a6f7fc49e 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -475,7 +475,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -924,7 +924,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -945,7 +945,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -963,7 +963,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -980,7 +980,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -1007,7 +1007,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1112,7 +1112,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1242,7 +1242,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1260,7 +1260,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1343,7 +1343,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1363,7 +1363,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1422,7 +1422,7 @@ spec: template: metadata: annotations: - configChecksum: "574080d58e672acb923d48388a0746a10a55b3a0397c836d204910e0ead139c" + configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1447,7 +1447,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1501,9 +1501,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7-b4 + app.kubernetes.io/version: v1.10.7 annotations: - configChecksum: "574080d58e672acb923d48388a0746a10a55b3a0397c836d204910e0ead139c" + configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" spec: securityContext: fsGroup: 65534 @@ -1515,7 +1515,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1542,7 +1542,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml index 7eca4aaf499..a8c637e0a3e 100644 --- a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml +++ b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml @@ -116,7 +116,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.10.7" k8s-array: logs: config: @@ -358,7 +358,7 @@ spec: app.kubernetes.io/instance: flyte app.kubernetes.io/component: flyte-binary annotations: - checksum/configuration: 1ddc2c300b65d37702314ec82808c920e9533830de6986ef6166705666b8d463 + checksum/configuration: da323d1ce8e93e67668afc8b940ef2ee926464950f41ef618ed65b7ca1c42ada checksum/configuration-secret: d5d93f4e67780b21593dc3799f0f6682aab0765e708e4020939975d14d44f929 checksum/cluster-resource-templates: 7dfa59f3d447e9c099b8f8ffad3af466fecbc9cf9f8c97295d9634254a55d4ae spec: diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index 3a9c79f7253..a4259f863c4 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -587,7 +587,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4 + image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -6707,7 +6707,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -6727,7 +6727,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -6744,7 +6744,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -6760,7 +6760,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -6787,7 +6787,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -6882,7 +6882,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -7007,7 +7007,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -7024,7 +7024,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -7097,7 +7097,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -7116,7 +7116,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -7172,7 +7172,7 @@ spec: template: metadata: annotations: - configChecksum: "05780b9daf69f0afaee7339e2948131e9b02b38496e68543370bf267e8ef708" + configChecksum: "348a3f88031dd95422276b1d3162236cfae3cf720040a8465668611ca6b1948" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -7197,7 +7197,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -7244,9 +7244,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7-b4 + app.kubernetes.io/version: v1.10.7 annotations: - configChecksum: "05780b9daf69f0afaee7339e2948131e9b02b38496e68543370bf267e8ef708" + configChecksum: "348a3f88031dd95422276b1d3162236cfae3cf720040a8465668611ca6b1948" spec: securityContext: fsGroup: 65534 @@ -7258,7 +7258,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -7285,7 +7285,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 01315bd6b84..86b949eefeb 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -35,7 +35,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte secrets: @@ -468,7 +468,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.10.7" k8s-array: logs: config: @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: UlU2UFB4NWU5UUlYMzdKQw== + haSharedSecret: NjJUVjdTQWR5VWFmOWNTZw== proxyPassword: "" proxyUsername: "" kind: Secret @@ -853,7 +853,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte type: Opaque @@ -867,7 +867,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql namespace: flyte type: Opaque @@ -1006,7 +1006,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte spec: @@ -1032,7 +1032,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql namespace: flyte spec: @@ -1057,7 +1057,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" name: flyte-sandbox-postgresql-hl namespace: flyte @@ -1246,7 +1246,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: 47b5c4d48a5fe7f26a8d33a6a9bb6065ca6cf2b28cd4ffddc657787d4036b55c + checksum/configuration: 475406181c84abf6c22db03375314bebedd360d52cc923e32579238d93075b2b checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 39afeefa0c48157ae5713ba9fb66d2e99f59f977fb14aeacd406c9d83fe2b6d5 + checksum/secret: 02ea8f53d8da3da63edcbbd75739984290888c07344bc8dc9f0222b32bb600b9 labels: app: docker-registry release: flyte-sandbox @@ -1549,7 +1549,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte spec: @@ -1562,12 +1562,12 @@ spec: template: metadata: annotations: - checksum/credentials-secret: c199ac45f9d95d97966921c814d6c8b38cbf7416458e19cbe6d001a04c264448 + checksum/credentials-secret: ecce809e3af19025d134846a9a81e163dd41df7e26abf2c6657895d9d13607a9 labels: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 spec: affinity: nodeAffinity: null @@ -1790,7 +1790,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql namespace: flyte spec: @@ -1803,13 +1803,12 @@ spec: serviceName: flyte-sandbox-postgresql-hl template: metadata: - annotations: null labels: app.kubernetes.io/component: primary app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql spec: affinity: @@ -1893,7 +1892,15 @@ spec: cpu: 250m memory: 256Mi securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + runAsGroup: 0 + runAsNonRoot: true runAsUser: 1001 + seccompProfile: + type: RuntimeDefault volumeMounts: - mountPath: /bitnami/postgresql name: data @@ -1916,7 +1923,11 @@ spec: limits: {} requests: {} securityContext: + runAsGroup: 0 + runAsNonRoot: false runAsUser: 0 + seccompProfile: + type: RuntimeDefault volumeMounts: - mountPath: /bitnami/postgresql name: data diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index ea6ec794ad8..123f5a105b9 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -35,7 +35,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte secrets: @@ -457,7 +457,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.10.7-b4" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.10.7" k8s-array: logs: config: @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: YUZuVzcwNzBEZ1NQeldERA== + haSharedSecret: SjFIazJlcWsxWGljTWNENA== proxyPassword: "" proxyUsername: "" kind: Secret @@ -833,7 +833,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte type: Opaque @@ -847,7 +847,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql namespace: flyte type: Opaque @@ -977,7 +977,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte spec: @@ -1003,7 +1003,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql namespace: flyte spec: @@ -1028,7 +1028,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" name: flyte-sandbox-postgresql-hl namespace: flyte @@ -1194,7 +1194,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: a67c0186a92e807ac104de4fe9ee168cb3c14cb173b55a6606a12357c240a9cd + checksum/configuration: ebc0c801b378ad16b6df2e54a8796fb57e71130935130b9f8e3201faf2fd09e2 checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: e0744f578198b80af80004856744b2677195e1689f2a7652823af6235d0c9b50 + checksum/secret: e88fbc90ab076d9b4f212621f01add7ad99d08e3be4049c88ed5ac091b081688 labels: app: docker-registry release: flyte-sandbox @@ -1497,7 +1497,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte spec: @@ -1510,12 +1510,12 @@ spec: template: metadata: annotations: - checksum/credentials-secret: c199ac45f9d95d97966921c814d6c8b38cbf7416458e19cbe6d001a04c264448 + checksum/credentials-secret: ecce809e3af19025d134846a9a81e163dd41df7e26abf2c6657895d9d13607a9 labels: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 spec: affinity: nodeAffinity: null @@ -1675,7 +1675,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql namespace: flyte spec: @@ -1688,13 +1688,12 @@ spec: serviceName: flyte-sandbox-postgresql-hl template: metadata: - annotations: null labels: app.kubernetes.io/component: primary app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql spec: affinity: @@ -1778,7 +1777,15 @@ spec: cpu: 250m memory: 256Mi securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + runAsGroup: 0 + runAsNonRoot: true runAsUser: 1001 + seccompProfile: + type: RuntimeDefault volumeMounts: - mountPath: /bitnami/postgresql name: data @@ -1801,7 +1808,11 @@ spec: limits: {} requests: {} securityContext: + runAsGroup: 0 + runAsNonRoot: false runAsUser: 0 + seccompProfile: + type: RuntimeDefault volumeMounts: - mountPath: /bitnami/postgresql name: data diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index 4ae74c4fcdd..98b251d0f03 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -23,7 +23,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte secrets: @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: UElGc1FhSFdTRmthd0RUZA== + haSharedSecret: MEY3VjlyYWxhZjBINnBxZQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -536,7 +536,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte type: Opaque @@ -550,7 +550,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql namespace: flyte type: Opaque @@ -683,7 +683,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte spec: @@ -709,7 +709,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql namespace: flyte spec: @@ -734,7 +734,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" name: flyte-sandbox-postgresql-hl namespace: flyte @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 94dc4b66bf04d07ba0681a8e426c8cae2b070d584ca21a85f227ee00d969a852 + checksum/secret: 252636f3dae489573bd05ddb3aac0c58dd1b49448612897c399aae29f668d03a labels: app: docker-registry release: flyte-sandbox @@ -1071,7 +1071,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 name: flyte-sandbox-minio namespace: flyte spec: @@ -1084,12 +1084,12 @@ spec: template: metadata: annotations: - checksum/credentials-secret: c199ac45f9d95d97966921c814d6c8b38cbf7416458e19cbe6d001a04c264448 + checksum/credentials-secret: ecce809e3af19025d134846a9a81e163dd41df7e26abf2c6657895d9d13607a9 labels: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio - helm.sh/chart: minio-12.1.1 + helm.sh/chart: minio-12.6.7 spec: affinity: nodeAffinity: null @@ -1249,7 +1249,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql namespace: flyte spec: @@ -1262,13 +1262,12 @@ spec: serviceName: flyte-sandbox-postgresql-hl template: metadata: - annotations: null labels: app.kubernetes.io/component: primary app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: postgresql - helm.sh/chart: postgresql-12.1.9 + helm.sh/chart: postgresql-12.8.1 name: flyte-sandbox-postgresql spec: affinity: @@ -1352,7 +1351,15 @@ spec: cpu: 250m memory: 256Mi securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + runAsGroup: 0 + runAsNonRoot: true runAsUser: 1001 + seccompProfile: + type: RuntimeDefault volumeMounts: - mountPath: /bitnami/postgresql name: data @@ -1375,7 +1382,11 @@ spec: limits: {} requests: {} securityContext: + runAsGroup: 0 + runAsNonRoot: false runAsUser: 0 + seccompProfile: + type: RuntimeDefault volumeMounts: - mountPath: /bitnami/postgresql name: data diff --git a/docs/conf.py b/docs/conf.py index de33648810d..d9e38e58062 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -35,7 +35,7 @@ # The short X.Y version version = "" # The full version, including alpha/beta/rc tags -release = "1.10.7-b4" +release = "1.10.7" # -- General configuration --------------------------------------------------- diff --git a/docs/deployment/configuration/generated/flyteadmin_config.rst b/docs/deployment/configuration/generated/flyteadmin_config.rst index 532167b016b..492b5f4d890 100644 --- a/docs/deployment/configuration/generated/flyteadmin_config.rst +++ b/docs/deployment/configuration/generated/flyteadmin_config.rst @@ -659,6 +659,7 @@ Defines Auth options for users. domain: "" sameSitePolicy: DefaultMode httpProxyURL: "" + idpQueryParameter: "" openId: baseUrl: "" clientId: "" @@ -1244,6 +1245,18 @@ settings used by cookies created for user auth sameSitePolicy: DefaultMode +idpQueryParameter (string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +idp query parameter used for selecting a particular IDP for doing user authentication. Eg: for Okta passing idp= forces the authentication to happen with IDP-ID + +**Default Value**: + +.. code-block:: yaml + + "" + + config.CookieSettings ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/deployment/configuration/generated/flytepropeller_config.rst b/docs/deployment/configuration/generated/flytepropeller_config.rst index 84cb473841e..6ddf08273c5 100644 --- a/docs/deployment/configuration/generated/flytepropeller_config.rst +++ b/docs/deployment/configuration/generated/flytepropeller_config.rst @@ -1172,6 +1172,7 @@ ray (`ray.Config`_) disable-usage-stats: "true" enableUsageStats: false includeDashboard: true + kubeRayCrdVersion: v1alpha1 logs: cloudwatch-enabled: false cloudwatch-log-group: "" @@ -3554,6 +3555,18 @@ Enable usage stats for ray jobs. These stats are submitted to usage-stats.ray.io "false" +kubeRayCrdVersion (string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +Version of the Ray CRD to use when creating RayClusters or RayJobs. + +**Default Value**: + +.. code-block:: yaml + + v1alpha1 + + ray.DefaultConfig ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/deployment/configuration/generated/scheduler_config.rst b/docs/deployment/configuration/generated/scheduler_config.rst index 3700a95e1c0..467d5f5d4e9 100644 --- a/docs/deployment/configuration/generated/scheduler_config.rst +++ b/docs/deployment/configuration/generated/scheduler_config.rst @@ -659,6 +659,7 @@ Defines Auth options for users. domain: "" sameSitePolicy: DefaultMode httpProxyURL: "" + idpQueryParameter: "" openId: baseUrl: "" clientId: "" @@ -1244,6 +1245,18 @@ settings used by cookies created for user auth sameSitePolicy: DefaultMode +idpQueryParameter (string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +idp query parameter used for selecting a particular IDP for doing user authentication. Eg: for Okta passing idp= forces the authentication to happen with IDP-ID + +**Default Value**: + +.. code-block:: yaml + + "" + + config.CookieSettings ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/flyteidl/go.mod b/flyteidl/go.mod index e1e2e493138..dcc6b2ccaf0 100644 --- a/flyteidl/go.mod +++ b/flyteidl/go.mod @@ -7,11 +7,9 @@ toolchain go1.21.3 require ( github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000 github.com/go-test/deep v1.0.7 - github.com/golang/glog v1.1.0 github.com/golang/protobuf v1.5.3 github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 github.com/jinzhu/copier v0.3.5 github.com/mitchellh/mapstructure v1.5.0 @@ -21,7 +19,6 @@ require ( github.com/stretchr/testify v1.8.4 golang.org/x/net v0.15.0 golang.org/x/oauth2 v0.8.0 - google.golang.org/api v0.114.0 google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 google.golang.org/grpc v1.56.1 google.golang.org/protobuf v1.30.0 @@ -99,6 +96,7 @@ require ( golang.org/x/text v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.114.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect diff --git a/flyteidl/go.sum b/flyteidl/go.sum index d84685da596..0fa41c00049 100644 --- a/flyteidl/go.sum +++ b/flyteidl/go.sum @@ -218,7 +218,6 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdR github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= diff --git a/kustomize/overlays/eks/kustomization.yaml b/kustomize/overlays/eks/kustomization.yaml index 19fd9b2b61b..f116ed2b78a 100644 --- a/kustomize/overlays/eks/kustomization.yaml +++ b/kustomize/overlays/eks/kustomization.yaml @@ -21,7 +21,7 @@ bases: images: # FlyteAdmin - name: flyteadmin # match images with this name - newTag: v1.10.7-b4 # FLYTEADMIN_TAG override the tag + newTag: v1.10.7 # FLYTEADMIN_TAG override the tag newName: cr.flyte.org/flyteorg/flyteadmin # override the name # FlyteConsole - name: flyteconsole # match images with this name @@ -29,15 +29,15 @@ images: newName: cr.flyte.org/flyteorg/flyteconsole # override the namep # Flyte DataCatalog - name: datacatalog # match images with this name - newTag: v1.10.7-b4 # DATACATALOG_TAG override the tag + newTag: v1.10.7 # DATACATALOG_TAG override the tag newName: cr.flyte.org/flyteorg/datacatalog # override the name # FlytePropeller - name: flytepropeller # match images with this name - newTag: v1.10.7-b4 # FLYTEPROPELLER_TAG override the tag + newTag: v1.10.7 # FLYTEPROPELLER_TAG override the tag newName: cr.flyte.org/flyteorg/flytepropeller # override the name # Webhook - name: webhook # match images with this name - newTag: v1.10.7-b4 # FLYTEPROPELLER_TAG override the tag + newTag: v1.10.7 # FLYTEPROPELLER_TAG override the tag newName: cr.flyte.org/flyteorg/flytepropeller # override the name # Override postgres image to use alpine based (rather smaller) docker image - name: postgres From 80a87658fc6f35d2aa0e7b7230497195f564d7ff Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Tue, 13 Feb 2024 19:40:56 -0800 Subject: [PATCH 016/107] make -C docker/sandbox-bundled build (#4899) Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- .../manifests/complete-agent.yaml | 20 ++++++++-------- .../sandbox-bundled/manifests/complete.yaml | 20 ++++++++-------- docker/sandbox-bundled/manifests/dev.yaml | 24 +++++++++---------- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 86b949eefeb..85eb73622d1 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -772,7 +772,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-proxy-config namespace: flyte @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: NjJUVjdTQWR5VWFmOWNTZw== + haSharedSecret: ZzlBSjNLWDhDcTdqZ05xUg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1081,7 +1081,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-proxy namespace: flyte @@ -1149,7 +1149,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-db-storage namespace: flyte @@ -1169,7 +1169,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-minio-storage namespace: flyte @@ -1189,7 +1189,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-db-storage namespace: flyte @@ -1209,7 +1209,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-minio-storage namespace: flyte @@ -1339,7 +1339,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-buildkit namespace: flyte @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 02ea8f53d8da3da63edcbbd75739984290888c07344bc8dc9f0222b32bb600b9 + checksum/secret: 883bf21ceceed4d8d6b24949d400a6df8eb33b71e5056782a702fcf3baaa7f01 labels: app: docker-registry release: flyte-sandbox @@ -1679,7 +1679,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-proxy namespace: flyte diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index 123f5a105b9..8bd0ca2b005 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -752,7 +752,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-proxy-config namespace: flyte @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: SjFIazJlcWsxWGljTWNENA== + haSharedSecret: aGtXbUVsYnhhcVRRS0RwRA== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1052,7 +1052,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-proxy namespace: flyte @@ -1097,7 +1097,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-db-storage namespace: flyte @@ -1117,7 +1117,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-minio-storage namespace: flyte @@ -1137,7 +1137,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-db-storage namespace: flyte @@ -1157,7 +1157,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-minio-storage namespace: flyte @@ -1287,7 +1287,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-buildkit namespace: flyte @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: e88fbc90ab076d9b4f212621f01add7ad99d08e3be4049c88ed5ac091b081688 + checksum/secret: 9f699df433a7f3227784261437025f01a0ddb97d1514041ab1d3a93533b70135 labels: app: docker-registry release: flyte-sandbox @@ -1627,7 +1627,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-proxy namespace: flyte diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index 98b251d0f03..a5fe4c4109b 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -479,7 +479,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-proxy-config namespace: flyte @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: MEY3VjlyYWxhZjBINnBxZQ== + haSharedSecret: R2NGVWU3dmpId2prNHFlbw== proxyPassword: "" proxyUsername: "" kind: Secret @@ -588,7 +588,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-local namespace: flyte @@ -659,7 +659,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-local namespace: flyte @@ -758,7 +758,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-proxy namespace: flyte @@ -781,7 +781,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-db-storage namespace: flyte @@ -801,7 +801,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-minio-storage namespace: flyte @@ -821,7 +821,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-db-storage namespace: flyte @@ -841,7 +841,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-minio-storage namespace: flyte @@ -861,7 +861,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-buildkit namespace: flyte @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 252636f3dae489573bd05ddb3aac0c58dd1b49448612897c399aae29f668d03a + checksum/secret: ddccf9a515ebaf4fcc214a064ef0223cca9d7c0b063247810d7f1e5c5ef51311 labels: app: docker-registry release: flyte-sandbox @@ -1201,7 +1201,7 @@ metadata: app.kubernetes.io/instance: flyte-sandbox app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: flyte-sandbox - app.kubernetes.io/version: 1.16.0 + app.kubernetes.io/version: 1.16.1 helm.sh/chart: flyte-sandbox-0.1.0 name: flyte-sandbox-proxy namespace: flyte From 1cd775a417e4280fd78c9334f7e9329e53b017d3 Mon Sep 17 00:00:00 2001 From: Paul Dittamo <37558497+pvditt@users.noreply.github.com> Date: Wed, 14 Feb 2024 07:13:56 -0800 Subject: [PATCH 017/107] [BUG] Support loading cached sublists with multiple data types (#4572) * update catalog artifact data type mapping to support loading cached sublists with multiple types Signed-off-by: Paul Dittamo * add unit tests Signed-off-by: Paul Dittamo * use proto equals for unit tests Signed-off-by: Paul Dittamo --------- Signed-off-by: Paul Dittamo --- .../pkg/compiler/validators/utils.go | 53 +++- .../pkg/compiler/validators/utils_test.go | 285 ++++++++++++++++++ 2 files changed, 330 insertions(+), 8 deletions(-) diff --git a/flytepropeller/pkg/compiler/validators/utils.go b/flytepropeller/pkg/compiler/validators/utils.go index cc7245a6e2b..5f41a6e65e6 100644 --- a/flytepropeller/pkg/compiler/validators/utils.go +++ b/flytepropeller/pkg/compiler/validators/utils.go @@ -162,12 +162,51 @@ func UnionDistinctVariableMaps(m1, m2 map[string]*core.Variable) (map[string]*co return res, nil } +func buildMultipleTypeUnion(innerType []*core.LiteralType) *core.LiteralType { + var variants []*core.LiteralType + isNested := false + + for _, x := range innerType { + unionType := x.GetCollectionType().GetUnionType() + if unionType != nil { + isNested = true + variants = append(variants, unionType.Variants...) + } else { + variants = append(variants, x) + } + } + unionLiteralType := &core.LiteralType{ + Type: &core.LiteralType_UnionType{ + UnionType: &core.UnionType{ + Variants: variants, + }, + }, + } + + if isNested { + return &core.LiteralType{ + Type: &core.LiteralType_CollectionType{ + CollectionType: unionLiteralType, + }, + } + } + + return unionLiteralType +} + func literalTypeForLiterals(literals []*core.Literal) *core.LiteralType { innerType := make([]*core.LiteralType, 0, 1) innerTypeSet := sets.NewString() + var noneType *core.LiteralType for _, x := range literals { otherType := LiteralTypeForLiteral(x) otherTypeKey := otherType.String() + if _, ok := x.GetValue().(*core.Literal_Collection); ok { + if x.GetCollection().GetLiterals() == nil { + noneType = otherType + continue + } + } if !innerTypeSet.Has(otherTypeKey) { innerType = append(innerType, otherType) @@ -175,6 +214,11 @@ func literalTypeForLiterals(literals []*core.Literal) *core.LiteralType { } } + // only add none type if there aren't other types + if len(innerType) == 0 && noneType != nil { + innerType = append(innerType, noneType) + } + if len(innerType) == 0 { return &core.LiteralType{ Type: &core.LiteralType_Simple{Simple: core.SimpleType_NONE}, @@ -195,14 +239,7 @@ func literalTypeForLiterals(literals []*core.Literal) *core.LiteralType { return 0 }) - - return &core.LiteralType{ - Type: &core.LiteralType_UnionType{ - UnionType: &core.UnionType{ - Variants: innerType, - }, - }, - } + return buildMultipleTypeUnion(innerType) } // LiteralTypeForLiteral gets LiteralType for literal, nil if the value of literal is unknown, or type collection/map of diff --git a/flytepropeller/pkg/compiler/validators/utils_test.go b/flytepropeller/pkg/compiler/validators/utils_test.go index a5e5d3f23cf..29daed99ae9 100644 --- a/flytepropeller/pkg/compiler/validators/utils_test.go +++ b/flytepropeller/pkg/compiler/validators/utils_test.go @@ -1,6 +1,7 @@ package validators import ( + "github.com/golang/protobuf/proto" "testing" "github.com/stretchr/testify/assert" @@ -51,6 +52,290 @@ func TestLiteralTypeForLiterals(t *testing.T) { assert.Equal(t, core.SimpleType_INTEGER.String(), lt.GetUnionType().Variants[0].GetSimple().String()) assert.Equal(t, core.SimpleType_STRING.String(), lt.GetUnionType().Variants[1].GetSimple().String()) }) + + t.Run("list with mixed types", func(t *testing.T) { + literals := &core.Literal{ + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Union{ + Union: &core.Union{ + Value: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 1, + }, + }, + }, + }, + }, + }, + Type: &core.LiteralType{ + Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_INTEGER, + }, + }, + }, + }, + }, + }, + }, + { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Union{ + Union: &core.Union{ + Value: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_StringValue{ + StringValue: "foo", + }, + }, + }, + }, + }, + }, + Type: &core.LiteralType{ + Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_STRING, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + } + + lt := LiteralTypeForLiteral(literals) + + expectedLt := &core.LiteralType{ + Type: &core.LiteralType_CollectionType{ + CollectionType: &core.LiteralType{ + Type: &core.LiteralType_UnionType{ + UnionType: &core.UnionType{ + Variants: []*core.LiteralType{ + { + Type: &core.LiteralType_UnionType{ + UnionType: &core.UnionType{ + Variants: []*core.LiteralType{ + { + Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_INTEGER, + }, + }, + }, + }, + }, + }, + { + Type: &core.LiteralType_UnionType{ + UnionType: &core.UnionType{ + Variants: []*core.LiteralType{ + { + Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_STRING, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + } + + assert.True(t, proto.Equal(expectedLt, lt)) + }) + + t.Run("nested lists with empty list", func(t *testing.T) { + literals := &core.Literal{ + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + { + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_StringValue{ + StringValue: "foo", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{}, + }, + }, + }, + }, + }, + } + + lt := LiteralTypeForLiteral(literals) + + expectedLt := &core.LiteralType{ + Type: &core.LiteralType_CollectionType{ + CollectionType: &core.LiteralType{ + Type: &core.LiteralType_CollectionType{ + CollectionType: &core.LiteralType{ + Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_STRING, + }, + }, + }, + }, + }, + } + + assert.True(t, proto.Equal(expectedLt, lt)) + }) + + t.Run("nested Lists with different types", func(t *testing.T) { + literals := &core.Literal{ + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + { + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Union{ + Union: &core.Union{ + Type: &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_INTEGER}}, + Value: &core.Literal{Value: &core.Literal_Scalar{Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{Primitive: &core.Primitive{Value: &core.Primitive_Integer{Integer: 1}}}}}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Union{ + Union: &core.Union{ + Type: &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_STRING}}, + Value: &core.Literal{Value: &core.Literal_Scalar{Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{Primitive: &core.Primitive{Value: &core.Primitive_StringValue{StringValue: "foo"}}}}}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + } + + expectedLt := &core.LiteralType{ + Type: &core.LiteralType_CollectionType{ + CollectionType: &core.LiteralType{ + Type: &core.LiteralType_CollectionType{ + CollectionType: &core.LiteralType{ + Type: &core.LiteralType_UnionType{ + UnionType: &core.UnionType{ + Variants: []*core.LiteralType{ + { + Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_INTEGER, + }, + }, + { + Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_STRING, + }, + }, + }, + }, + }, + }, + }, + }, + }, + } + + lt := LiteralTypeForLiteral(literals) + + assert.True(t, proto.Equal(expectedLt, lt)) + }) + + t.Run("empty nested listed", func(t *testing.T) { + literals := &core.Literal{ + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + { + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{}, + }, + }, + }, + }, + }, + } + + expectedLt := &core.LiteralType{ + Type: &core.LiteralType_CollectionType{ + CollectionType: &core.LiteralType{ + Type: &core.LiteralType_CollectionType{ + CollectionType: &core.LiteralType{ + Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_NONE, + }, + }, + }, + }, + }, + } + + lt := LiteralTypeForLiteral(literals) + + assert.True(t, proto.Equal(expectedLt, lt)) + }) + } func TestJoinVariableMapsUniqueKeys(t *testing.T) { From b6f5b479fa089105a56d8549f2e811746cd8cff9 Mon Sep 17 00:00:00 2001 From: Andrew Dye Date: Wed, 14 Feb 2024 07:28:41 -0800 Subject: [PATCH 018/107] Add opentelemetry BlobstoreClientTracer to flyteadmin (#57) (#4901) Signed-off-by: Andrew Dye --- flyteadmin/cmd/entrypoints/serve.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flyteadmin/cmd/entrypoints/serve.go b/flyteadmin/cmd/entrypoints/serve.go index 7ef146a1fe7..7880cdd96c9 100644 --- a/flyteadmin/cmd/entrypoints/serve.go +++ b/flyteadmin/cmd/entrypoints/serve.go @@ -34,7 +34,7 @@ var serveCmd = &cobra.Command{ server.SetMetricKeys(cfg.ApplicationConfiguration().GetTopLevelConfig()) // register otel tracer providers - for _, serviceName := range []string{otelutils.AdminGormTracer, otelutils.AdminServerTracer} { + for _, serviceName := range []string{otelutils.AdminGormTracer, otelutils.AdminServerTracer, otelutils.BlobstoreClientTracer} { if err := otelutils.RegisterTracerProvider(serviceName, otelutils.GetConfig()); err != nil { logger.Errorf(ctx, "Failed to create otel tracer provider. %v", err) return err From eb78b6bb00cfcabe496d6a7d03220e2ef87ad5e5 Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Wed, 14 Feb 2024 10:37:30 -0600 Subject: [PATCH 019/107] Update docs links for monodocs (#4834) * update docs links in main README Signed-off-by: nikki everett * update links in contribution guide Signed-off-by: nikki everett * update links in concepts docs Signed-off-by: nikki everett * update docs links in community roadmap Signed-off-by: nikki everett * update link in contribution guide Signed-off-by: nikki everett * update link in concept doc Signed-off-by: nikki everett * update links in deployment docs Signed-off-by: nikki everett * update link in API docs landing page Signed-off-by: nikki everett * update CHANGELOG links Signed-off-by: nikki everett * update flyteidl links Signed-off-by: nikki everett * update links in rfcs Signed-off-by: nikki everett * update remaining old docs links Signed-off-by: nikki everett * change flyteidl files back to master state Signed-off-by: nikki everett --------- Signed-off-by: nikki everett --- CHANGELOG/CHANGELOG-v0.11.0.md | 2 +- CHANGELOG/CHANGELOG-v0.14.0.md | 2 +- CHANGELOG/CHANGELOG-v0.17.0.md | 8 +++---- CHANGELOG/CHANGELOG-v1.1.0.md | 2 +- CHANGELOG/CHANGELOG-v1.10.0.md | 4 ++-- CHANGELOG/CHANGELOG-v1.2.0.md | 2 +- CHANGELOG/CHANGELOG-v1.3.0.md | 2 +- CHANGELOG/CHANGELOG-v1.5.0.md | 4 ++-- CHANGELOG/CHANGELOG-v1.9.0.md | 4 ++-- README.md | 22 +++++++++---------- docs/community/contribute.rst | 12 +++++----- docs/community/roadmap.rst | 2 +- .../native_scheduler_architecture.rst | 2 +- docs/concepts/registration.rst | 2 +- docs/concepts/tasks.rst | 4 ++-- docs/deployment/configuration/auth_setup.rst | 2 +- .../configuration/customizable_resources.rst | 2 +- docs/deployment/configuration/general.rst | 6 ++--- docs/deployment/plugins/aws/batch.rst | 2 +- .../registering_workflows.md | 3 +-- .../flyte_project_components.md | 2 +- docs/reference/index.rst | 4 ++-- rfc/system/0001-flyte-execution-tags.md | 2 +- rfc/system/1476-task-resources.md | 6 ++--- .../1893-caching-of-offloaded-objects.md | 2 +- .../2633-eviction-of-cached-task-outputs.md | 6 ++--- rfc/system/3902-simplify-retry-behaviour.md | 2 +- 27 files changed, 56 insertions(+), 57 deletions(-) diff --git a/CHANGELOG/CHANGELOG-v0.11.0.md b/CHANGELOG/CHANGELOG-v0.11.0.md index ab19f1e21a7..16c450a82ec 100644 --- a/CHANGELOG/CHANGELOG-v0.11.0.md +++ b/CHANGELOG/CHANGELOG-v0.11.0.md @@ -4,7 +4,7 @@ * New to flyte? https://start.flyte.org takes you through first run experience. (Thanks to @jeevb) * [Grafana templates](https://docs.flyte.org/en/latest/howto/monitoring/index.html) for monitoring Flyte System and User Workflows. * [Extend Flyte](https://docs.flyte.org/en/latest/plugins/index.html) docs. -* [FlyteIdl Docs](https://docs.flyte.org/projects/flyteidl/en/latest/) are published! You can learn about the core language that makes it all work. +* [FlyteIdl Docs](https://docs.flyte.org/en/latest/) are published! You can learn about the core language that makes it all work. * [Additional knob](https://github.com/flyteorg/flytepropeller/pull/219/files#diff-91657d6448dfbf87f4cecf126ad02bd668ea233edcf74e860ef4f54bdd4cb552R78) for fine tuning flyte propeller performance that speeds up executions drastically. * OidC support for Google Idp (And other OidC compliant Idps) * Various stabilization bugs. diff --git a/CHANGELOG/CHANGELOG-v0.14.0.md b/CHANGELOG/CHANGELOG-v0.14.0.md index 344ccac9196..705ab6ac037 100644 --- a/CHANGELOG/CHANGELOG-v0.14.0.md +++ b/CHANGELOG/CHANGELOG-v0.14.0.md @@ -27,6 +27,6 @@ - More use case driven examples in flytesnacks ## flytectl - - flytectl is ready for BETA. check it out - https://docs.flyte.org/projects/flytectl/en/latest/ + - flytectl is ready for BETA. check it out - https://docs.flyte.org/en/latest/flytectl/ Please see the [flytekit release](https://github.com/flyteorg/flytekit/releases/tag/v0.18.0) for the full list and more details. diff --git a/CHANGELOG/CHANGELOG-v0.17.0.md b/CHANGELOG/CHANGELOG-v0.17.0.md index 1a7d951ae28..2605bfae45a 100644 --- a/CHANGELOG/CHANGELOG-v0.17.0.md +++ b/CHANGELOG/CHANGELOG-v0.17.0.md @@ -1,16 +1,16 @@ # Flyte v0.17.0 ## Platform -1. Recovery Mode: Executions that fail due to external system failures (e.g. external system being down) can now be rerun in recovery mode ([flytectl --recover docs](https://docs.flyte.org/projects/flytectl/en/latest/gen/flytectl_create_execution.html)). It's also available in the UI: +1. Recovery Mode: Executions that fail due to external system failures (e.g. external system being down) can now be rerun in recovery mode ([flytectl --recover docs](https://docs.flyte.org/en/latest/flytectl/gen/flytectl_create_execution.html)). It's also available in the UI: Recovery mode in the UI ## Flytekit -1. Great Expectations Integration ([docs](https://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/flytekit_plugins/greatexpectations/index.html#great-expectations)). +1. Great Expectations Integration ([docs](https://docs.flyte.org/en/latest/flytesnacks/auto/integrations/flytekit_plugins/greatexpectations/index.html#great-expectations)). 1. Access to durable blob stores (AWS/GCS/etc) are now pluggable. 1. Local task execution has been updated to also trigger the type engine. -1. Tasks that have `cache=True` should now be cached when running locally as well ([docs](https://docs.flyte.org/projects/cookbook/en/latest/auto/core/flyte_basics/task_cache.html#how-local-caching-works)). +1. Tasks that have `cache=True` should now be cached when running locally as well ([docs](https://docs.flyte.org/en/latest/flytesnacks/auto/core/flyte_basics/task_cache.html#how-local-caching-works)). Please see the [flytekit release](https://github.com/flyteorg/flytekit/releases/tag/v0.22.0) for the full list and more details. @@ -32,7 +32,7 @@ Please see the [flytekit release](https://github.com/flyteorg/flytekit/releases/ ## FlyteCtl -1. `flytectl upgrade` to automatically upgrade itself ([docs](https://docs.flyte.org/projects/flytectl/en/latest/gen/flytectl_upgrade.html)). +1. `flytectl upgrade` to automatically upgrade itself ([docs](https://docs.flyte.org/en/latest/flytectl/gen/flytectl_upgrade.html)). 1. `--dryRun` is available in most commands with server-side-effects to simulate the operations before committing any changes. And various stabilization [fixes](https://github.com/flyteorg/flyte/milestone/17?closed=1)! diff --git a/CHANGELOG/CHANGELOG-v1.1.0.md b/CHANGELOG/CHANGELOG-v1.1.0.md index f6906a6a5e5..9b84ae94d8a 100644 --- a/CHANGELOG/CHANGELOG-v1.1.0.md +++ b/CHANGELOG/CHANGELOG-v1.1.0.md @@ -4,7 +4,7 @@ ### User Improvements Support for [Optional types](https://github.com/flyteorg/flyte/issues/2426). With the inclusion of Union types in flytekit, we can now support optional types. -[Flyte Deck](https://github.com/flyteorg/flyte/issues/2175) is now available. Please take a look at the [documentation](https://docs.flyte.org/projects/cookbook/en/latest/auto/core/flyte_basics/deck.html#sphx-glr-auto-core-flyte-basics-deck-py) and also the [OSS presentation](https://www.youtube.com/watch?v=KqyBYIaAZ7c) that was done a few weeks back. +[Flyte Deck](https://github.com/flyteorg/flyte/issues/2175) is now available. Please take a look at the [documentation](https://docs.flyte.org/en/latest/flytesnacks/auto/core/flyte_basics/deck.html#sphx-glr-auto-core-flyte-basics-deck-py) and also the [OSS presentation](https://www.youtube.com/watch?v=KqyBYIaAZ7c) that was done a few weeks back. ### Backend Improvements diff --git a/CHANGELOG/CHANGELOG-v1.10.0.md b/CHANGELOG/CHANGELOG-v1.10.0.md index 42c301ac2ed..48d298ccf73 100644 --- a/CHANGELOG/CHANGELOG-v1.10.0.md +++ b/CHANGELOG/CHANGELOG-v1.10.0.md @@ -8,9 +8,9 @@ Programmatically consuming inputs and outputs using flyteremote became a lot eas ![Usage snippet](./images/v1.10.0-flyteconsole-programmatic-access.png) -You'll now be able to use offloaded types in [eager workflows](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/eager_workflows.html#id1). +You'll now be able to use offloaded types in [eager workflows](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/eager_workflows.html). -More ergonomic improvements to [pyflyte](https://docs.flyte.org/projects/flytekit/en/latest/pyflyte.html#pyflyte-cli), including the inclusion of a progress bar, the ability to activate launchplans, and the ability to interact with gate nodes in local executions. +More ergonomic improvements to [pyflyte](https://docs.flyte.org/en/latest/api/flytekit/pyflyte.html), including the inclusion of a progress bar, the ability to activate launchplans, and the ability to interact with gate nodes in local executions. And much more. Here's the exhaustive list of changes: diff --git a/CHANGELOG/CHANGELOG-v1.2.0.md b/CHANGELOG/CHANGELOG-v1.2.0.md index 4dbd2f3a2a5..6ceafe8cfe1 100644 --- a/CHANGELOG/CHANGELOG-v1.2.0.md +++ b/CHANGELOG/CHANGELOG-v1.2.0.md @@ -18,7 +18,7 @@ - dbt plugin (https://github.com/flyteorg/flyte/issues/2202) - cache overriding behavior is now open to all types (https://github.com/flyteorg/flyte/issues/2912) - Bug: Fallback to pickling in the case of unknown types used Unions (https://github.com/flyteorg/flyte/issues/2823) -- [pyflyte run](https://docs.flyte.org/projects/flytekit/en/latest/design/clis.html#pyflyte-run) now supports [imperative workflows](https://docs.flyte.org/projects/cookbook/en/latest/auto/core/flyte_basics/imperative_wf_style.html#sphx-glr-auto-core-flyte-basics-imperative-wf-style-py) +- [pyflyte run](https://docs.flyte.org/en/latest/api/flytekit/design/clis.html#pyflyte-run) now supports [imperative workflows](https://docs.flyte.org/en/latest/flytesnacks/auto/core/flyte_basics/imperative_wf_style.html#sphx-glr-auto-core-flyte-basics-imperative-wf-style-py) - Newlines are now stripped from client secrets (https://github.com/flyteorg/flytekit/pull/1163) - Ensure repeatability in the generation of cache keys in the case of dictionaries (https://github.com/flyteorg/flytekit/pull/1126) - Support for multiple images in the yaml config file (https://github.com/flyteorg/flytekit/pull/1106) diff --git a/CHANGELOG/CHANGELOG-v1.3.0.md b/CHANGELOG/CHANGELOG-v1.3.0.md index c710af9334a..44b836313c1 100644 --- a/CHANGELOG/CHANGELOG-v1.3.0.md +++ b/CHANGELOG/CHANGELOG-v1.3.0.md @@ -99,7 +99,7 @@ Users can now configure workflow execution to overwrite the cache. Each task in ### Support for Dask -Users will be able to spawn [Dask](https://www.dask.org/) ephemeral clusters as part of their workflows, similar to the support for [Ray](https://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/kubernetes/ray_example/ray_example.html#sphx-glr-auto-integrations-kubernetes-ray-example-ray-example-py) and [Spark](https://docs.flyte.org/projects/cookbook/en/stable/auto/integrations/kubernetes/k8s_spark/pyspark_pi.html). +Users will be able to spawn [Dask](https://www.dask.org/) ephemeral clusters as part of their workflows, similar to the support for [Ray](https://docs.flyte.org/en/latest/flytesnacks/auto/integrations/kubernetes/ray_example/ray_example.html#sphx-glr-auto-integrations-kubernetes-ray-example-ray-example-py) and [Spark](https://docs.flyte.org/en/latest/flytesnacks/examples/k8s_spark_plugin/index.html). ## Looking Ahead diff --git a/CHANGELOG/CHANGELOG-v1.5.0.md b/CHANGELOG/CHANGELOG-v1.5.0.md index 718cb6f61af..0c4c7eb4ebb 100644 --- a/CHANGELOG/CHANGELOG-v1.5.0.md +++ b/CHANGELOG/CHANGELOG-v1.5.0.md @@ -63,7 +63,7 @@ def wf(a: int) -> str: Notice how calls to `t1_fixed_b` do not need to specify the `b` parameter. -This also works for [MapTasks](https://docs.flyte.org/projects/cookbook/en/latest/auto/core/control_flow/map_task.html#sphx-glr-auto-core-control-flow-map-task-py) in a limited capacity. For example: +This also works for [MapTasks](https://docs.flyte.org/en/latest/flytesnacks/auto/core/control_flow/map_task.html#sphx-glr-auto-core-control-flow-map-task-py) in a limited capacity. For example: ``` from flytekit import task, workflow, partial, map_task @@ -107,5 +107,5 @@ Map tasks do not support partial tasks with lists as inputs. ## Flyteconsole -Multiple bug fixes around [waiting for external inputs](https://docs.flyte.org/projects/cookbook/en/latest/auto/core/control_flow/waiting_for_external_inputs.html#waiting-for-external-inputs). +Multiple bug fixes around [waiting for external inputs](https://docs.flyte.org/en/latest/flytesnacks/auto/core/control_flow/waiting_for_external_inputs.html#waiting-for-external-inputs). Better support for dataclasses in the launch form. diff --git a/CHANGELOG/CHANGELOG-v1.9.0.md b/CHANGELOG/CHANGELOG-v1.9.0.md index 47c62b92a3b..90371e5c117 100644 --- a/CHANGELOG/CHANGELOG-v1.9.0.md +++ b/CHANGELOG/CHANGELOG-v1.9.0.md @@ -5,7 +5,7 @@ In this release we're announcing two experimental features, namely (1) ArrayNode ### ArrayNode map tasks -ArrayNodes are described more fully in [RFC 3346](https://github.com/flyteorg/flyte/blob/master/rfc/system/3346-array-node.md), but the summary is that ArrayNode map tasks are a drop-in replacement for [regular map tasks](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/control_flow/map_task.html#map-tasks), the only difference being the submodule used to import the `map_task` function. +ArrayNodes are described more fully in [RFC 3346](https://github.com/flyteorg/flyte/blob/master/rfc/system/3346-array-node.md), but the summary is that ArrayNode map tasks are a drop-in replacement for [regular map tasks](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/map_task.html), the only difference being the submodule used to import the `map_task` function. More explicitly, let's say you have this code: ```python @@ -42,7 +42,7 @@ def wf(xs: List[int]) -> List[int]: Execution tags allow users to can discover their executions and other flyte entities more easily, by creating smarter groupings. The feature is described in this [RFC](https://github.com/flyteorg/flyte/blob/master/rfc/system/0001-flyte-execution-tags.md). -As mentioned before, this feature is shipped in an experimental capacity, the idea being that we're going to incorporate the feedback of the community as we iterate. More work is expected to give prominence to the feature in flyteconsole, in the meanwhile, the feature is supported via [Remote](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/remote_access/index.html). +As mentioned before, this feature is shipped in an experimental capacity, the idea being that we're going to incorporate the feedback of the community as we iterate. More work is expected to give prominence to the feature in flyteconsole, in the meanwhile, the feature is supported via [Remote](https://docs.flyte.org/en/latest/api/flytekit/remote.html#remote-access). ## Flytekit diff --git a/README.md b/README.md index 24c2b3aff60..43c9e72a82e 100644 --- a/README.md +++ b/README.md @@ -99,32 +99,32 @@ Go to the [Deployment guide](https://docs.flyte.org/en/latest/deployment/deploym ## Tutorials - [Fine-tune Code Llama on the Flyte codebase](https://github.com/unionai-oss/llm-fine-tuning/tree/main/flyte_llama#readme) -- [Forecast sales with Horovod and Spark](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/forecasting_sales/index.html) -- [Nucleotide Sequence Querying with BLASTX](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/blast/index.html) +- [Forecast sales with Horovod and Spark](https://docs.flyte.org/en/latest/flytesnacks/examples/forecasting_sales/index.html) +- [Nucleotide Sequence Querying with BLASTX](https://docs.flyte.org/en/latest/flytesnacks/examples/blast/index.html) ## Features 🚀 **Strongly typed interfaces**: Validate your data at every step of the workflow by defining data guardrails using Flyte types.
🌐 **Any language**: Write code in any language using raw containers, or choose [Python](https://github.com/flyteorg/flytekit), [Java](https://github.com/flyteorg/flytekit-java), [Scala](https://github.com/flyteorg/flytekit-java) or [JavaScript](https://github.com/NotMatthewGriffin/pterodactyl) SDKs to develop your Flyte workflows.
🔒 **Immutability**: Immutable executions help ensure reproducibility by preventing any changes to the state of an execution.
🧬 **Data lineage**: Track the movement and transformation of data throughout the lifecycle of your data and ML workflows.
-📊 **Map tasks**: Achieve parallel code execution with minimal configuration using [map tasks](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/map_task.html).
+📊 **Map tasks**: Achieve parallel code execution with minimal configuration using [map tasks](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/map_task.html).
🌎 **Multi-tenancy**: Multiple users can share the same platform while maintaining their own distinct data and configurations.
-🌟 **Dynamic workflows**: [Build flexible and adaptable workflows](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/dynamics.html) that can change and evolve as needed, making it easier to respond to changing requirements.
-⏯️ [Wait](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/waiting_for_external_inputs.html) for **external inputs** before proceeding with the execution.
-🌳 **Branching**: [Selectively execute branches](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/conditions.html) of your workflow based on static or dynamic data produced by other tasks or input data.
+🌟 **Dynamic workflows**: [Build flexible and adaptable workflows](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/dynamic_workflow.html) that can change and evolve as needed, making it easier to respond to changing requirements.
+⏯️ [Wait](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/waiting_for_external_inputs.html) for **external inputs** before proceeding with the execution.
+🌳 **Branching**: [Selectively execute branches](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/conditional.html) of your workflow based on static or dynamic data produced by other tasks or input data.
📈 **Data visualization**: Visualize data, monitor models and view training history through plots.
-📂 **FlyteFile & FlyteDirectory**: Transfer [files](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/files.html) and [directories](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/folders.html) between local and cloud storage.
-🗃️ **Structured dataset**: Convert dataframes between types and enforce column-level type checking using the abstract 2D representation provided by [Structured Dataset](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/data_types_and_io/structured_dataset.html).
+📂 **FlyteFile & FlyteDirectory**: Transfer [files](https://docs.flyte.org/en/latest/flytesnacks/examples/data_types_and_io/file.html#file) and [directories](https://docs.flyte.org/en/latest/flytesnacks/examples/data_types_and_io/folder.html) between local and cloud storage.
+🗃️ **Structured dataset**: Convert dataframes between types and enforce column-level type checking using the abstract 2D representation provided by [Structured Dataset](https://docs.flyte.org/en/latest/flytesnacks/examples/data_types_and_io/structured_dataset.html).
🛡️ **Recover from failures**: Recover only the failed tasks.
🔁 **Rerun a single task**: Rerun workflows at the most granular level without modifying the previous state of a data/ML workflow.
🔍 **Cache outputs**: Cache task outputs by passing `cache=True` to the task decorator.
-🚩 **Intra-task checkpointing**: [Checkpoint progress](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/checkpoint.html) within a task execution.
+🚩 **Intra-task checkpointing**: [Checkpoint progress](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/checkpoint.html) within a task execution.
⏰ **Timeout**: Define a timeout period, after which the task is marked as failure.
🏭 **Dev to prod**: As simple as changing your [domain](https://docs.flyte.org/en/latest/concepts/domains.html) from development or staging to production.
💸 **Spot or preemptible instances**: Schedule your workflows on spot instances by setting `interruptible` to `True` in the task decorator.
☁️ **Cloud-native deployment**: Deploy Flyte on AWS, GCP, Azure and other cloud services.
-📅 **Scheduling**: [Schedule](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/productionizing/lp_schedules.html) your data and ML workflows to run at a specific time.
-📢 **Notifications**: Stay informed about changes to your workflow's state by configuring [notifications](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/productionizing/lp_notifications.html) through Slack, PagerDuty or email.
+📅 **Scheduling**: [Schedule](https://docs.flyte.org/en/latest/flytesnacks/examples/productionizing/lp_schedules.html) your data and ML workflows to run at a specific time.
+📢 **Notifications**: Stay informed about changes to your workflow's state by configuring [notifications](https://docs.flyte.org/en/latest/flytesnacks/examples/productionizing/lp_notifications.html) through Slack, PagerDuty or email.
⌛️ **Timeline view**: Evaluate the duration of each of your Flyte tasks and identify potential bottlenecks.
💨 **GPU acceleration**: Enable and control your tasks’ GPU demands by requesting resources in the task decorator.
🐳 **Dependency isolation via containers**: Maintain separate sets of dependencies for your tasks so no dependency conflicts arise.
diff --git a/docs/community/contribute.rst b/docs/community/contribute.rst index f99b5adaecd..12cbf38b014 100644 --- a/docs/community/contribute.rst +++ b/docs/community/contribute.rst @@ -227,7 +227,7 @@ The resulting ``html`` files will be in ``docs/_build/html``. You can view them * - `Repo `__ * - **Purpose**: Python SDK & Tools * - **Language**: Python - * - **Guidelines**: Refer to the `Flytekit Contribution Guide `__ + * - **Guidelines**: Refer to the `Flytekit Contribution Guide `__ ``flyteconsole`` **************** @@ -281,8 +281,8 @@ The resulting ``html`` files will be in ``docs/_build/html``. You can view them * - `Repo `__ * - **Purpose**: Examples, Tips, and Tricks to use Flytekit SDKs * - **Language**: Python (In the future, Java examples will be added) - * - **Guidelines**: Refer to the `Flytesnacks Contribution Guide `__ - + * - **Guidelines**: Refer to the `Flytesnacks Contribution Guide `__ + ``flytectl`` ************ @@ -291,7 +291,7 @@ The resulting ``html`` files will be in ``docs/_build/html``. You can view them * - `Repo `__ * - **Purpose**: A standalone Flyte CLI * - **Language**: Go - * - **Guidelines**: Refer to the `FlyteCTL Contribution Guide `__ + * - **Guidelines**: Refer to the `FlyteCTL Contribution Guide `__ 🔮 Development Environment Setup Guide @@ -505,7 +505,7 @@ If not, we can start backends with a single command. export PATH=$PATH:/home/ubuntu/bin # replace with your path # Step3: Starts the Flyte demo cluster. This will setup a k3s cluster running minio, postgres Pods, and all Flyte components: flyteadmin, flyteplugins, flytepropeller, etc. - # See https://docs.flyte.org/projects/flytectl/en/latest/gen/flytectl_demo_start.html for more details. + # See https://docs.flyte.org/en/latest/flytectl/gen/flytectl_demo_start.html for more details. flytectl demo start # 👨‍💻 Flyte is ready! Flyte UI is available at http://localhost:30080/console 🚀 🚀 🎉 # ❇️ Run the following command to export demo environment variables for accessing flytectl @@ -677,7 +677,7 @@ You can access it via http://localhost:30080/console. Core Flyte components, such as admin, propeller, and datacatalog, as well as user runtime containers rely on an object store (in this case, minio) to hold files. -During development, you might need to examine files such as `input.pb/output.pb `__, or `deck.html `__ stored in minio. +During development, you might need to examine files such as `input.pb/output.pb `__, or `deck.html `__ stored in minio. Access the minio console at: http://localhost:30080/minio/login. The default credentials are: diff --git a/docs/community/roadmap.rst b/docs/community/roadmap.rst index 3e6bc3f5aeb..6ea83ec5d96 100644 --- a/docs/community/roadmap.rst +++ b/docs/community/roadmap.rst @@ -17,7 +17,7 @@ It is extremely important to let the community know about your use cases, so tha Milestones and Release Processes ================================ -Flyte consists of many components and services. Each service is independently iterated and coordinated by maintaining backwards compatible contracts using Protobuf messages defined in `FlyteIDL `__. +Flyte consists of many components and services. Each service is independently iterated and coordinated by maintaining backwards compatible contracts using Protobuf messages defined in `FlyteIDL `__. Release Cadence --------------- diff --git a/docs/concepts/component_architecture/native_scheduler_architecture.rst b/docs/concepts/component_architecture/native_scheduler_architecture.rst index 19f13ef6c75..a923403625a 100644 --- a/docs/concepts/component_architecture/native_scheduler_architecture.rst +++ b/docs/concepts/component_architecture/native_scheduler_architecture.rst @@ -35,7 +35,7 @@ Components Schedule Management ------------------- -This component supports creation/activation and deactivation of schedules. Each schedule is tied to a launch plan and is versioned in a similar manner. The schedule is created or its state is changed to activated/deactivated whenever the `admin API `__ is invoked for it with `ACTIVE/INACTIVE state `__. This is done either through `flytectl `__ or through any other client that calls the GRPC API. +This component supports creation/activation and deactivation of schedules. Each schedule is tied to a launch plan and is versioned in a similar manner. The schedule is created or its state is changed to activated/deactivated whenever the `admin API `__ is invoked for it with `ACTIVE/INACTIVE state `__. This is done either through `flytectl `__ or through any other client that calls the GRPC API. The API is similar to a launchplan, ensuring that only one schedule is active for a given launchplan. diff --git a/docs/concepts/registration.rst b/docs/concepts/registration.rst index bc745f7a0f0..b7552d9fb9c 100644 --- a/docs/concepts/registration.rst +++ b/docs/concepts/registration.rst @@ -16,7 +16,7 @@ The following steps elaborate on the specifics of the registration process: * Define the tasks using the :py:mod:`Flytekit ` Task Definition language. * Define a workflow using the :py:mod:`Flytekit ` Workflow definition language. -* Use `flytectl register CLI `__ to compile the tasks into their serialized representation as described in :std:ref:`Flyte Specification language `. During this, the task representation is bound to a container that constitutes the code for the task. This associated entity is registered with FlyteAdmin using the registerTask API. +* Use `flytectl register CLI `__ to compile the tasks into their serialized representation as described in :std:ref:`Flyte Specification language `. During this, the task representation is bound to a container that constitutes the code for the task. This associated entity is registered with FlyteAdmin using the registerTask API. * Use flytectl register CLI to compile the workflow into their serialized representation as described in :std:ref:`Flyte Specification language `. The referenced tasks are replaced by their FlyteAdmin registered Identifiers, obtained in the previous step. The associated entity is registered with FlyteAdmin using the registerWorkflow API. * Launch an execution using the FlyteAdmin launch execution API, which requires the necessary inputs provided. This is automatically done if the user uses flytectl to launch the execution. * Use the FlyteAdmin read APIs to get details of the execution, monitor it to completion, or retrieve a historical execution. diff --git a/docs/concepts/tasks.rst b/docs/concepts/tasks.rst index 301287fc7bd..f3ae87709e7 100644 --- a/docs/concepts/tasks.rst +++ b/docs/concepts/tasks.rst @@ -99,7 +99,7 @@ System retry can be of two types: - Or update `max-workflow-retries `__ in helm. -2. User retry: If a task fails to execute, it is retried for a specific number of times, and this number is set by the user in `TaskMetadata `__. The number of retries must be less than or equal to 10. +2. User retry: If a task fails to execute, it is retried for a specific number of times, and this number is set by the user in `TaskMetadata `__. The number of retries must be less than or equal to 10. .. note:: @@ -113,7 +113,7 @@ System retry can be of two types: **Timeouts** -To ensure that the system is always making progress, tasks must be guaranteed to end gracefully/successfully. The system defines a default timeout period for the tasks. It is possible for task authors to define a timeout period, after which the task is marked as ``failure``. Note that a timed-out task will be retried if it has a retry strategy defined. The timeout can be handled in the `TaskMetadata `__. +To ensure that the system is always making progress, tasks must be guaranteed to end gracefully/successfully. The system defines a default timeout period for the tasks. It is possible for task authors to define a timeout period, after which the task is marked as ``failure``. Note that a timed-out task will be retried if it has a retry strategy defined. The timeout can be handled in the `TaskMetadata `__. Caching/Memoization diff --git a/docs/deployment/configuration/auth_setup.rst b/docs/deployment/configuration/auth_setup.rst index 41c10f03b13..2887e830ede 100644 --- a/docs/deployment/configuration/auth_setup.rst +++ b/docs/deployment/configuration/auth_setup.rst @@ -702,7 +702,7 @@ If your organization does any automated registration, then you'll need to authen .. group-tab:: flytectl - Flytectl's `config.yaml `_ can be + Flytectl's `config.yaml `_ can be configured to use either PKCE (`Proof key for code exchange `_) or Client Credentials (`Client Credentials `_) flows. diff --git a/docs/deployment/configuration/customizable_resources.rst b/docs/deployment/configuration/customizable_resources.rst index 1de7664130a..5e41863a7a5 100644 --- a/docs/deployment/configuration/customizable_resources.rst +++ b/docs/deployment/configuration/customizable_resources.rst @@ -153,7 +153,7 @@ Example ^^^^^^^^ Let's take an example to understand resource allocation and deallocation when a plugin requests resources. -Flyte has a built-in `Qubole `__ plugin. This plugin allows Flyte tasks to send Hive commands to Qubole. In the plugin, a single Qubole cluster is considered a resource, and sending a single Hive command to a Qubole cluster consumes a token of the corresponding resource. +Flyte has a built-in `Qubole `__ plugin. This plugin allows Flyte tasks to send Hive commands to Qubole. In the plugin, a single Qubole cluster is considered a resource, and sending a single Hive command to a Qubole cluster consumes a token of the corresponding resource. The resource is allocated when the status is **“AllocationGranted”**. Qubole plugin calls: .. code-block:: go diff --git a/docs/deployment/configuration/general.rst b/docs/deployment/configuration/general.rst index 3cd1db0f129..828ff3871b6 100644 --- a/docs/deployment/configuration/general.rst +++ b/docs/deployment/configuration/general.rst @@ -217,7 +217,7 @@ Workflow Execution Config ========================= This helps with overriding the config used for workflows execution which includes -`security context `__, `annotations or labels `__ +`security context `__, `annotations or labels `__ etc. in the `Workflow execution config `__. These can be defined at two levels of project-domain or project-domain-workflow: @@ -315,7 +315,7 @@ Starting with the Flyte 1.4 release, we now have 2 ways of defining `PodTemplate Compile-time PodTemplates ========================= -We can define a compile-time pod template, as part of the definition of a `Task `__, for example: +We can define a compile-time pod template, as part of the definition of a `Task `__, for example: .. code-block:: python @@ -354,7 +354,7 @@ Notice how in this example we are defining a new PodTemplate inline, which allow `V1PodSpec `__ and also define the name of the primary container, labels, and annotations. -The term compile-time here refers to the fact that the pod template definition is part of the `TaskSpec `__. +The term compile-time here refers to the fact that the pod template definition is part of the `TaskSpec `__. Runtime PodTemplates ==================== diff --git a/docs/deployment/plugins/aws/batch.rst b/docs/deployment/plugins/aws/batch.rst index ba6d069b747..15bfe5939da 100644 --- a/docs/deployment/plugins/aws/batch.rst +++ b/docs/deployment/plugins/aws/batch.rst @@ -146,7 +146,7 @@ These configurations reside within FlytePropeller's configMap. Modify the config .. note:: To register the `map task - `__ on Flyte, + `__ on Flyte, use the command ``pyflyte register ``. Launch the execution through the FlyteConsole by selecting the appropriate ``IAM Role`` and entering the full ``AWS Arn`` of an IAM Role configured according to the above guide. diff --git a/docs/flyte_fundamentals/registering_workflows.md b/docs/flyte_fundamentals/registering_workflows.md index 4e2186df7f9..9e503e41278 100644 --- a/docs/flyte_fundamentals/registering_workflows.md +++ b/docs/flyte_fundamentals/registering_workflows.md @@ -23,8 +23,7 @@ If you have custom Python dependencies, update the `requirements.txt` file that ships with the {ref}`project template ` and those changes will be incorporated into the Docker image. -You can also update the Dockerfile (if using a Dockerfile) or the [ImageSpec configuration](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/customizing_dependencies/image_spec.html#image-spec-example) if you -want to use a different base image or if the additional Python dependencies +You can also update the Dockerfile (if using a Dockerfile) or the {ref}`ImageSpec configuration ` if you want to use a different base image or if the additional Python dependencies require installing binaries or packages from other languages. ## Registration patterns diff --git a/docs/getting_started_with_workflow_development/flyte_project_components.md b/docs/getting_started_with_workflow_development/flyte_project_components.md index bbd0f66a79d..18fcf861367 100644 --- a/docs/getting_started_with_workflow_development/flyte_project_components.md +++ b/docs/getting_started_with_workflow_development/flyte_project_components.md @@ -52,7 +52,7 @@ The workflow directory also contains an `__init__.py` file to indicate that the ### ImageSpec -The workflow code file in the basic template includes an optional ImageSpec configuration. ImageSpec is a Flyte feature that enables you to build a custom container image without having to write a Dockerfile. To learn more, see the [ImageSpec documentation](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/customizing_dependencies/image_spec.html#image-spec-example) +The workflow code file in the basic template includes an optional ImageSpec configuration. ImageSpec is a Flyte feature that enables you to build a custom container image without having to write a Dockerfile. To learn more, see the {ref}`ImageSpec documentation `. ```python # basic_image = ImageSpec( diff --git a/docs/reference/index.rst b/docs/reference/index.rst index 1e40110b0c7..2b4d977a454 100644 --- a/docs/reference/index.rst +++ b/docs/reference/index.rst @@ -44,7 +44,7 @@ API Reference --- - .. link-button:: https://docs.flyte.org/projects/flyteidl/en/latest/protos/docs/service/service.html + .. link-button:: https://docs.flyte.org/en/latest/protos/docs/service/service.html :type: url :text: FlyteAdmin :classes: btn-block stretched-link @@ -71,5 +71,5 @@ API Reference FlyteIDL Flytekit Python Flytekit Java - FlyteAdmin + FlyteAdmin swagger diff --git a/rfc/system/0001-flyte-execution-tags.md b/rfc/system/0001-flyte-execution-tags.md index a30ea7c9de0..e1c8f8b82dd 100644 --- a/rfc/system/0001-flyte-execution-tags.md +++ b/rfc/system/0001-flyte-execution-tags.md @@ -32,7 +32,7 @@ As a User I want to We propose to solve the problem of discovery by supporting arbitrary metadata association with an entity. This is similar to concept of “tags” as in AWS. The tags are represented as plain string. -We'll add tags to [ExecutionCreateRequest](https://docs.flyte.org/projects/flyteidl/en/latest/protos/docs/admin/admin.html#executioncreaterequest) -> [ExecutionSpec](https://docs.flyte.org/projects/flyteidl/en/latest/protos/docs/admin/admin.html#executionspec). +We'll add tags to [ExecutionCreateRequest](https://docs.flyte.org/en/latest/protos/docs/admin/admin.html#executioncreaterequest) -> [ExecutionSpec](https://docs.flyte.org/en/latest/protos/docs/admin/admin.html#executionspec). The resultant tags will be persisted in the database, instead of being applied to the execution in Kubernetes. We'll create two new tables in the flyteadmin database. diff --git a/rfc/system/1476-task-resources.md b/rfc/system/1476-task-resources.md index 8889b53752f..638cfbfbb54 100644 --- a/rfc/system/1476-task-resources.md +++ b/rfc/system/1476-task-resources.md @@ -6,7 +6,7 @@ ## 1 Executive Summary -Task resource allocation in Flyte includes the process of setting *CPU, memory, GPU* and *ephemeral storage* requests and limits for containers running Flyte tasks on [kubernetes](https://docs.flyte.org/projects/cookbook/en/latest/native_backend_plugins.html#native-backend-plugins). These resource selections affect pod scheduling decisions and as such sensible defaults ought to be applied when a user doesn't specify requests or limits. This fallback behavior currently exists in Flyte but has been configured and modified organically such that the default value assignment has grown convoluted and unfortunately error-prone. +Task resource allocation in Flyte includes the process of setting *CPU, memory, GPU* and *ephemeral storage* requests and limits for containers running Flyte tasks on [kubernetes](https://docs.flyte.org/en/latest/flytesnacks/native_backend_plugins.html#native-backend-plugins). These resource selections affect pod scheduling decisions and as such sensible defaults ought to be applied when a user doesn't specify requests or limits. This fallback behavior currently exists in Flyte but has been configured and modified organically such that the default value assignment has grown convoluted and unfortunately error-prone. ## 2 Motivation @@ -18,7 +18,7 @@ Background ---------- Kubernetes allows users to specify both [requests and limits](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). **Requests** are used to schedule pods onto nodes. **Limits** are hard stops that running containers are not permitted to exceed. -In the context of what a Flyte user can specify, flytekit [task decorators](https://docs.flyte.org/projects/flytekit/en/latest/generated/flytekit.task.html#flytekit-task) permit setting both requests and limits. Furthermore, in their workflow definitions, users can specify node-level overrides which supersede static task definition resource values. +In the context of what a Flyte user can specify, flytekit [task decorators](https://docs.flyte.org/en/latest/api/flytekit/generated/flytekit.task.html#flytekit-task) permit setting both requests and limits. Furthermore, in their workflow definitions, users can specify node-level overrides which supersede static task definition resource values. In the Flyte back-end, **default** values can be applied as requests and limits when a user omits them from a task specification. Furthermore, **max** values are used to enforce that either user-specified resource requests or limits do not exceed a configured threshold. @@ -34,7 +34,7 @@ The `ExecutionConfig` already stores the [admin-resolved values](https://github. When building a task container, the default container task plugin will use user-specified resource values and verify they do not exceed the platform-supplied **max** values. When a request and/or limit for a specific resource (e.g. CPU, memory, etc) is not user-supplied the platform-supplied **default** values will be used. After this resolution is performed, the plugin handler will finally make sure that no resource requests exceed resource limits, leading to an impossible-to-schedule situation. ### K8s Pod Plugin Behavior -This will behave similarly to the default container plugin behavior. Platform-supplied **max** values will be enforced for *all* containers defined in a k8s pod spec for a task. However, platform-supplied **default** values will only be substituted for primary container tasks (see more [here](https://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/kubernetes/pod/pod.html#sphx-glr-auto-integrations-kubernetes-pod-pod-py)). +This will behave similarly to the default container plugin behavior. Platform-supplied **max** values will be enforced for *all* containers defined in a k8s pod spec for a task. However, platform-supplied **default** values will only be substituted for primary container tasks (see more [here](https://docs.flyte.org/en/latest/flytesnacks/auto/integrations/kubernetes/pod/pod.html#sphx-glr-auto-integrations-kubernetes-pod-pod-py)). diff --git a/rfc/system/1893-caching-of-offloaded-objects.md b/rfc/system/1893-caching-of-offloaded-objects.md index 9547cf33c9e..c08bf450bae 100644 --- a/rfc/system/1893-caching-of-offloaded-objects.md +++ b/rfc/system/1893-caching-of-offloaded-objects.md @@ -6,7 +6,7 @@ ## 1 Executive Summary -We propose a way to override the default behavior of [caching task executions](https://docs.flyte.org/projects/cookbook/en/latest/auto/core/flyte_basics/task_cache.html), enabling cache-by-value semantics for certain categories of objects. +We propose a way to override the default behavior of [caching task executions](https://docs.flyte.org/en/latest/flytesnacks/auto/core/flyte_basics/task_cache.html), enabling cache-by-value semantics for certain categories of objects. ## 2 Motivation diff --git a/rfc/system/2633-eviction-of-cached-task-outputs.md b/rfc/system/2633-eviction-of-cached-task-outputs.md index b60fd56eff0..04774d8cbde 100644 --- a/rfc/system/2633-eviction-of-cached-task-outputs.md +++ b/rfc/system/2633-eviction-of-cached-task-outputs.md @@ -70,7 +70,7 @@ Similar to the `interruptible` override currently available, we propose to add a #### `flytekit` -We should extend the [`flytekit.remote`](https://docs.flyte.org/projects/flytekit/en/latest/remote.html#remote-access) functionality to support setting the `skip_cache` flag for a single execution. +We should extend the [`flytekit.remote`](https://docs.flyte.org/en/latest/api/flytekit/remote.html#remote-access) functionality to support setting the `skip_cache` flag for a single execution. #### `flytectl` @@ -112,7 +112,7 @@ Whilst our main intent for this `AdminService` extension is for automated/script #### `flytekit` -[`flytekit.remote`](https://docs.flyte.org/projects/flytekit/en/latest/remote.html#remote-access) could be extended to support eviction of a task/workflow's cached results remotely. +[`flytekit.remote`](https://docs.flyte.org/en/latest/api/flytekit/remote.html#remote-access) could be extended to support eviction of a task/workflow's cached results remotely. #### `flytectl` @@ -158,7 +158,7 @@ The potential for malicious exploitation is deemed non-existent as no access to 3. Which Flyte tools (`flyteconsole`/`flytectl`) should support the proposed `AdminService` API extension for `flyteadmin`, if any? - **RESOLVED**: `flytectl`, `flytekit.remote`, `flyteconsole` 4. Should we support automatic eviction of cached results on workflow archival (opt-out via `flyteconsole`)? -5. Should we evict [Infratask Checkpoints](https://docs.flyte.org/projects/cookbook/en/latest/auto/core/control_flow/checkpoint.html) from the cache as well since they might return cached results? If so, should we evict them from the backend side or pass the `cache_override` flag along to `flytekit`/its `Checkpointer` to skip any available entries? +5. Should we evict [Infratask Checkpoints](https://docs.flyte.org/en/latest/flytesnacks/auto/core/control_flow/checkpoint.html) from the cache as well since they might return cached results? If so, should we evict them from the backend side or pass the `cache_override` flag along to `flytekit`/its `Checkpointer` to skip any available entries? - **RESOLVED**: not for the initial implementation. Infratask checkpoints are only relevant for consecutive retries of a task - their results would not be considered when launching another execution with a `cache_override` flag set. ## 9 Conclusion diff --git a/rfc/system/3902-simplify-retry-behaviour.md b/rfc/system/3902-simplify-retry-behaviour.md index c15bc185b62..1e6bd832f78 100644 --- a/rfc/system/3902-simplify-retry-behaviour.md +++ b/rfc/system/3902-simplify-retry-behaviour.md @@ -10,7 +10,7 @@ Flyte implements a retry mechanism to make workflows robust against failure. This retry mechanism has two different budgets, one for which the user defines the maximum number of retries in the `@task` decorator and one for system failures, which is defined on the platform side. -> We distinguish between Flytekit/system-level exceptions and user exceptions. For instance, if Flytekit encounters an issue while uploading outputs, it is considered a system exception. On the other hand, if a user raises a ValueError due to an unexpected input in the task code, it is classified as a user exception. [(Source)](https://docs.flyte.org/projects/flytekit/en/latest/design/authoring.html#exception-handling) +> We distinguish between Flytekit/system-level exceptions and user exceptions. For instance, if Flytekit encounters an issue while uploading outputs, it is considered a system exception. On the other hand, if a user raises a ValueError due to an unexpected input in the task code, it is classified as a user exception. [(Source)](https://docs.flyte.org/en/latest/api/flytekit/design/authoring.html#exception-handling) Especially when it comes to interruptions/node terminations, the details of the retry behavior (which budget a retry counts against and how many retry possibilities are remaining) are intransparent and difficult to understand. The behavior is unfortunately also not consistent between plugins or even within the Pod plugin. From 57e21f8aeaef75f3b464a4815649109d89441bc0 Mon Sep 17 00:00:00 2001 From: Neil <150836163+neilisaur@users.noreply.github.com> Date: Wed, 14 Feb 2024 10:48:14 -0700 Subject: [PATCH 020/107] Adding securityContext configuration to flyte-core charts (#4895) * Adding securityContext configuration to flyte-core charts Signed-off-by: Neil Stout * Removing S3 endpoint location Signed-off-by: Neil Stout * Updates from make helm Signed-off-by: Neil Stout --------- Signed-off-by: Neil Stout --- charts/flyte-core/README.md | 6 +++ .../templates/admin/deployment.yaml | 10 ++--- .../templates/console/deployment.yaml | 9 ++-- .../templates/datacatalog/deployment.yaml | 10 ++--- .../templates/flytescheduler/deployment.yaml | 10 ++--- .../templates/propeller/deployment.yaml | 7 ++- .../templates/propeller/manager.yaml | 7 ++- .../templates/propeller/webhook.yaml | 10 ++--- charts/flyte-core/values.yaml | 44 +++++++++++++++++++ .../flyte_aws_scheduler_helm_generated.yaml | 24 +++++----- .../flyte_helm_controlplane_generated.yaml | 22 +++++----- .../eks/flyte_helm_dataplane_generated.yaml | 8 ++-- deployment/eks/flyte_helm_generated.yaml | 30 ++++++------- .../flyte_helm_controlplane_generated.yaml | 22 +++++----- .../gcp/flyte_helm_dataplane_generated.yaml | 8 ++-- deployment/gcp/flyte_helm_generated.yaml | 30 ++++++------- deployment/sandbox/flyte_helm_generated.yaml | 30 ++++++------- 17 files changed, 158 insertions(+), 129 deletions(-) diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index 47130dca5ee..e287e67633e 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -137,6 +137,7 @@ helm install gateway bitnami/contour -n flyte | datacatalog.priorityClassName | string | `""` | Sets priorityClassName for datacatalog pod(s). | | datacatalog.replicaCount | int | `1` | Replicas count for Datacatalog deployment | | datacatalog.resources | object | `{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}}` | Default resources requests and limits for Datacatalog deployment | +| datacatalog.securityContext | object | `{"fsGroup":1001,"fsGroupChangePolicy":"OnRootMismatch","runAsNonRoot":true,"runAsUser":1001,"seLinuxOptions":{"type":"spc_t"}}` | Sets securityContext for datacatalog pod(s). | | datacatalog.service | object | `{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"}` | Service settings for Datacatalog | | datacatalog.serviceAccount | object | `{"annotations":{},"create":true,"imagePullSecrets":[]}` | Configuration for service accounts for Datacatalog | | datacatalog.serviceAccount.annotations | object | `{}` | Annotations for ServiceAccount attached to Datacatalog pods | @@ -172,6 +173,7 @@ helm install gateway bitnami/contour -n flyte | flyteadmin.replicaCount | int | `1` | Replicas count for Flyteadmin deployment | | flyteadmin.resources | object | `{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}}` | Default resources requests and limits for Flyteadmin deployment | | flyteadmin.secrets | object | `{}` | | +| flyteadmin.securityContext | object | `{"fsGroup":65534,"fsGroupChangePolicy":"Always","runAsNonRoot":true,"runAsUser":1001,"seLinuxOptions":{"type":"spc_t"}}` | Sets securityContext for flyteadmin pod(s). | | flyteadmin.service | object | `{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"}` | Service settings for Flyteadmin | | flyteadmin.serviceAccount | object | `{"alwaysCreate":false,"annotations":{},"clusterRole":{"apiGroups":["","flyte.lyft.com","rbac.authorization.k8s.io"],"resources":["configmaps","flyteworkflows","namespaces","pods","resourcequotas","roles","rolebindings","secrets","services","serviceaccounts","spark-role","limitranges"],"verbs":["*"]},"create":true,"createClusterRole":true,"imagePullSecrets":[]}` | Configuration for service accounts for FlyteAdmin | | flyteadmin.serviceAccount.alwaysCreate | bool | `false` | Should a service account always be created for flyteadmin even without an actual flyteadmin deployment running (e.g. for multi-cluster setups) | @@ -207,6 +209,7 @@ helm install gateway bitnami/contour -n flyte | flyteconsole.priorityClassName | string | `""` | Sets priorityClassName for flyte console pod(s). | | flyteconsole.replicaCount | int | `1` | Replicas count for Flyteconsole deployment | | flyteconsole.resources | object | `{"limits":{"cpu":"500m","memory":"250Mi"},"requests":{"cpu":"10m","memory":"50Mi"}}` | Default resources requests and limits for Flyteconsole deployment | +| flyteconsole.securityContext | object | `{"fsGroupChangePolicy":"OnRootMismatch","runAsNonRoot":true,"runAsUser":1000,"seLinuxOptions":{"type":"spc_t"}}` | Sets securityContext for flyteconsole pod(s). | | flyteconsole.service | object | `{"annotations":{},"type":"ClusterIP"}` | Service settings for Flyteconsole | | flyteconsole.tolerations | list | `[]` | tolerations for Flyteconsole deployment | | flytepropeller.additionalContainers | list | `[]` | Appends additional containers to the deployment spec. May include template values. | @@ -230,6 +233,7 @@ helm install gateway bitnami/contour -n flyte | flytepropeller.priorityClassName | string | `""` | Sets priorityClassName for propeller pod(s). | | flytepropeller.replicaCount | int | `1` | Replicas count for Flytepropeller deployment | | flytepropeller.resources | object | `{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"100Mi"}}` | Default resources requests and limits for Flytepropeller deployment | +| flytepropeller.securityContext | object | `{"fsGroup":65534,"fsGroupChangePolicy":"Always","runAsUser":1001}` | Sets securityContext for flytepropeller pod(s). | | flytepropeller.service | object | `{"enabled":false}` | Settings for flytepropeller service | | flytepropeller.service.enabled | bool | `false` | If enabled create the flytepropeller service | | flytepropeller.serviceAccount | object | `{"annotations":{},"create":true,"imagePullSecrets":[]}` | Configuration for service accounts for FlytePropeller | @@ -259,6 +263,7 @@ helm install gateway bitnami/contour -n flyte | flytescheduler.resources | object | `{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}}` | Default resources requests and limits for Flytescheduler deployment | | flytescheduler.runPrecheck | bool | `true` | Whether to inject an init container which waits on flyteadmin | | flytescheduler.secrets | object | `{}` | | +| flytescheduler.securityContext | object | `{"fsGroup":65534,"fsGroupChangePolicy":"Always","runAsNonRoot":true,"runAsUser":1001,"seLinuxOptions":{"type":"spc_t"}}` | Sets securityContext for flytescheduler pod(s). | | flytescheduler.serviceAccount | object | `{"annotations":{},"create":true,"imagePullSecrets":[]}` | Configuration for service accounts for Flytescheduler | | flytescheduler.serviceAccount.annotations | object | `{}` | Annotations for ServiceAccount attached to Flytescheduler pods | | flytescheduler.serviceAccount.create | bool | `true` | Should a service account be created for Flytescheduler | @@ -283,6 +288,7 @@ helm install gateway bitnami/contour -n flyte | storage.s3.secretKey | string | `""` | AWS IAM user secret access key to use for S3 bucket auth, only used if authType is set to accesskey | | storage.type | string | `"sandbox"` | Sets the storage type. Supported values are sandbox, s3, gcs and custom. | | webhook.enabled | bool | `true` | enable or disable secrets webhook | +| webhook.securityContext | object | `{"fsGroup":65534,"fsGroupChangePolicy":"Always","runAsNonRoot":true,"runAsUser":1001,"seLinuxOptions":{"type":"spc_t"}}` | Sets securityContext for webhook pod(s). | | webhook.service | object | `{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"}` | Service settings for the webhook | | webhook.serviceAccount | object | `{"annotations":{},"create":true,"imagePullSecrets":[]}` | Configuration for service accounts for the webhook | | webhook.serviceAccount.annotations | object | `{}` | Annotations for ServiceAccount attached to the webhook | diff --git a/charts/flyte-core/templates/admin/deployment.yaml b/charts/flyte-core/templates/admin/deployment.yaml index 60d4b6a969b..dc61d29c28e 100755 --- a/charts/flyte-core/templates/admin/deployment.yaml +++ b/charts/flyte-core/templates/admin/deployment.yaml @@ -18,13 +18,9 @@ spec: {{- end }} labels: {{ include "flyteadmin.podLabels" . | nindent 8 }} spec: - securityContext: - runAsNonRoot: true - fsGroup: 65534 - runAsUser: 1001 - fsGroupChangePolicy: "Always" - seLinuxOptions: - type: spc_t + {{- with .Values.flyteadmin.securityContext }} + securityContext: {{ tpl (toYaml .) $ | nindent 8 }} + {{- end }} {{- if .Values.flyteadmin.priorityClassName }} priorityClassName: {{ .Values.flyteadmin.priorityClassName }} {{- end }} diff --git a/charts/flyte-core/templates/console/deployment.yaml b/charts/flyte-core/templates/console/deployment.yaml index d9675a00728..2d89e0265a6 100644 --- a/charts/flyte-core/templates/console/deployment.yaml +++ b/charts/flyte-core/templates/console/deployment.yaml @@ -22,12 +22,9 @@ spec: imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - fsGroupChangePolicy: "OnRootMismatch" - seLinuxOptions: - type: spc_t + {{- with .Values.flyteconsole.securityContext }} + securityContext: {{ tpl (toYaml .) $ | nindent 8 }} + {{- end }} {{- if .Values.flyteconsole.priorityClassName }} priorityClassName: {{ .Values.flyteconsole.priorityClassName }} {{- end }} diff --git a/charts/flyte-core/templates/datacatalog/deployment.yaml b/charts/flyte-core/templates/datacatalog/deployment.yaml index 904762eb79e..94e096466d9 100644 --- a/charts/flyte-core/templates/datacatalog/deployment.yaml +++ b/charts/flyte-core/templates/datacatalog/deployment.yaml @@ -18,13 +18,9 @@ spec: {{- end }} labels: {{ include "datacatalog.podLabels" . | nindent 8 }} spec: - securityContext: - runAsNonRoot: true - fsGroup: 1001 - runAsUser: 1001 - fsGroupChangePolicy: "OnRootMismatch" - seLinuxOptions: - type: spc_t + {{- with .Values.datacatalog.securityContext }} + securityContext: {{ tpl (toYaml .) $ | nindent 8 }} + {{- end }} {{- if .Values.datacatalog.priorityClassName }} priorityClassName: {{ .Values.datacatalog.priorityClassName }} {{- end }} diff --git a/charts/flyte-core/templates/flytescheduler/deployment.yaml b/charts/flyte-core/templates/flytescheduler/deployment.yaml index 3892cfbb836..8e6cd2a4eae 100755 --- a/charts/flyte-core/templates/flytescheduler/deployment.yaml +++ b/charts/flyte-core/templates/flytescheduler/deployment.yaml @@ -19,13 +19,9 @@ spec: {{- end }} labels: {{ include "flytescheduler.podLabels" . | nindent 8 }} spec: - securityContext: - runAsNonRoot: true - fsGroup: 65534 - runAsUser: 1001 - fsGroupChangePolicy: "Always" - seLinuxOptions: - type: spc_t + {{- with .Values.flytescheduler.securityContext }} + securityContext: {{ tpl (toYaml .) $ | nindent 8 }} + {{- end }} {{- if .Values.flytescheduler.priorityClassName }} priorityClassName: {{ .Values.flytescheduler.priorityClassName }} {{- end }} diff --git a/charts/flyte-core/templates/propeller/deployment.yaml b/charts/flyte-core/templates/propeller/deployment.yaml index 0efb3b5dc9c..d24101582b3 100644 --- a/charts/flyte-core/templates/propeller/deployment.yaml +++ b/charts/flyte-core/templates/propeller/deployment.yaml @@ -31,10 +31,9 @@ spec: labels: {{ include "flytepropeller.podLabels" . | nindent 8 }} {{- end }} spec: - securityContext: - fsGroup: 65534 - runAsUser: 1001 - fsGroupChangePolicy: "Always" + {{- with .Values.flytepropeller.securityContext }} + securityContext: {{ tpl (toYaml .) $ | nindent 8 }} + {{- end }} {{- if .Values.flytepropeller.priorityClassName }} priorityClassName: {{ .Values.flytepropeller.priorityClassName }} {{- end }} diff --git a/charts/flyte-core/templates/propeller/manager.yaml b/charts/flyte-core/templates/propeller/manager.yaml index bace6485c80..875d05dab41 100644 --- a/charts/flyte-core/templates/propeller/manager.yaml +++ b/charts/flyte-core/templates/propeller/manager.yaml @@ -15,10 +15,9 @@ template: labels: {{ include "flytepropeller.labels" . | nindent 6 }} app: {{ index .Values.configmap.core.manager "pod-application" }} spec: - securityContext: - fsGroup: 65534 - runAsUser: 1001 - fsGroupChangePolicy: "Always" + {{- with .Values.flytepropeller.securityContext }} + securityContext: {{ tpl (toYaml .) $ | nindent 8 }} + {{- end }} {{- if .Values.flytepropeller.priorityClassName }} priorityClassName: {{ .Values.flytepropeller.priorityClassName }} {{- end }} diff --git a/charts/flyte-core/templates/propeller/webhook.yaml b/charts/flyte-core/templates/propeller/webhook.yaml index 9a1f279350a..941ed1add1f 100644 --- a/charts/flyte-core/templates/propeller/webhook.yaml +++ b/charts/flyte-core/templates/propeller/webhook.yaml @@ -35,13 +35,9 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} spec: - securityContext: - fsGroup: 65534 - runAsNonRoot: true - runAsUser: 1001 - fsGroupChangePolicy: "Always" - seLinuxOptions: - type: spc_t + {{- with .Values.webhook.securityContext }} + securityContext: {{ tpl (toYaml .) $ | nindent 8 }} + {{- end }} serviceAccountName: {{ template "flyte-pod-webhook.name" . }} {{- if .Values.webhook.enabled }} initContainers: diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index 6f3dd49f24a..4f6d9d12bc7 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -111,6 +111,14 @@ flyteadmin: extraArgs: {} # -- Sets priorityClassName for flyteadmin pod(s). priorityClassName: "" + # -- Sets securityContext for flyteadmin pod(s). + securityContext: + runAsNonRoot: true + fsGroup: 65534 + runAsUser: 1001 + fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t # -- Settings for flyteadmin service monitor serviceMonitor: @@ -179,6 +187,14 @@ flytescheduler: additionalContainers: [] # -- Sets priorityClassName for flyte scheduler pod(s). priorityClassName: "" + # -- Sets securityContext for flytescheduler pod(s). + securityContext: + runAsNonRoot: true + fsGroup: 65534 + runAsUser: 1001 + fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t # # DATACATALOG SETTINGS @@ -242,6 +258,14 @@ datacatalog: extraArgs: {} # -- Sets priorityClassName for datacatalog pod(s). priorityClassName: "" + # -- Sets securityContext for datacatalog pod(s). + securityContext: + runAsNonRoot: true + fsGroup: 1001 + runAsUser: 1001 + fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t # # FLYTE_AGENT SETTINGS @@ -320,6 +344,11 @@ flytepropeller: clusterName: "" # -- Sets priorityClassName for propeller pod(s). priorityClassName: "" + # -- Sets securityContext for flytepropeller pod(s). + securityContext: + fsGroup: 65534 + runAsUser: 1001 + fsGroupChangePolicy: "Always" # -- Settings for flytepropeller service service: @@ -382,6 +411,13 @@ flyteconsole: priorityClassName: "" # -- ImagePullSecrets to assign to the Flyteconsole deployment imagePullSecrets: [] + # -- Sets securityContext for flyteconsole pod(s). + securityContext: + runAsNonRoot: true + runAsUser: 1000 + fsGroupChangePolicy: "OnRootMismatch" + seLinuxOptions: + type: spc_t # It will enable the redoc route in ingress deployRedoc: false @@ -419,6 +455,14 @@ webhook: annotations: projectcontour.io/upstream-protocol.h2c: grpc type: ClusterIP + # -- Sets securityContext for webhook pod(s). + securityContext: + fsGroup: 65534 + runAsNonRoot: true + runAsUser: 1001 + fsGroupChangePolicy: "Always" + seLinuxOptions: + type: spc_t # ------------------------------------------------ # diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index a281d51ada5..18c60208b86 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -856,11 +856,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: @@ -1107,10 +1107,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: + fsGroupChangePolicy: OnRootMismatch runAsNonRoot: true runAsUser: 1000 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t containers: @@ -1174,11 +1174,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t initContainers: @@ -1276,10 +1276,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsUser: 1001 - fsGroupChangePolicy: "Always" priorityClassName: system-cluster-critical containers: - command: @@ -1353,11 +1353,11 @@ spec: annotations: configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t serviceAccountName: flyte-pod-webhook diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml index 322a193a19c..520e7f2a038 100644 --- a/deployment/eks/flyte_helm_controlplane_generated.yaml +++ b/deployment/eks/flyte_helm_controlplane_generated.yaml @@ -562,11 +562,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: @@ -813,10 +813,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: + fsGroupChangePolicy: OnRootMismatch runAsNonRoot: true runAsUser: 1000 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t containers: @@ -880,11 +880,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t initContainers: @@ -982,11 +982,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index a2bd2fe259e..b6dd553ba44 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -434,10 +434,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsUser: 1001 - fsGroupChangePolicy: "Always" priorityClassName: system-cluster-critical containers: - command: @@ -511,11 +511,11 @@ spec: annotations: configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t serviceAccountName: flyte-pod-webhook diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index 1affaea520d..ab009db4cb6 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -887,11 +887,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: @@ -1138,10 +1138,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: + fsGroupChangePolicy: OnRootMismatch runAsNonRoot: true runAsUser: 1000 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t containers: @@ -1205,11 +1205,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t initContainers: @@ -1307,11 +1307,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: @@ -1406,10 +1406,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsUser: 1001 - fsGroupChangePolicy: "Always" priorityClassName: system-cluster-critical containers: - command: @@ -1483,11 +1483,11 @@ spec: annotations: configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t serviceAccountName: flyte-pod-webhook diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml index 19dea02fc39..3ede3cd5bea 100644 --- a/deployment/gcp/flyte_helm_controlplane_generated.yaml +++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml @@ -577,11 +577,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: @@ -828,10 +828,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: + fsGroupChangePolicy: OnRootMismatch runAsNonRoot: true runAsUser: 1000 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t containers: @@ -895,11 +895,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t initContainers: @@ -997,11 +997,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index b0b4410f81c..4ba186eb481 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -442,10 +442,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsUser: 1001 - fsGroupChangePolicy: "Always" containers: - command: - flytepropeller @@ -518,11 +518,11 @@ spec: annotations: configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t serviceAccountName: flyte-pod-webhook diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index 17a6f7fc49e..a3ead16e951 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -910,11 +910,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: @@ -1161,10 +1161,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: + fsGroupChangePolicy: OnRootMismatch runAsNonRoot: true runAsUser: 1000 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t containers: @@ -1228,11 +1228,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t initContainers: @@ -1330,11 +1330,11 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: @@ -1429,10 +1429,10 @@ spec: helm.sh/chart: flyte-core-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsUser: 1001 - fsGroupChangePolicy: "Always" containers: - command: - flytepropeller @@ -1505,11 +1505,11 @@ spec: annotations: configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t serviceAccountName: flyte-pod-webhook diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index a4259f863c4..c1145fb7247 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -6693,11 +6693,11 @@ spec: helm.sh/chart: flyte-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: @@ -6928,10 +6928,10 @@ spec: helm.sh/chart: flyte-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: + fsGroupChangePolicy: OnRootMismatch runAsNonRoot: true runAsUser: 1000 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t containers: @@ -6993,11 +6993,11 @@ spec: helm.sh/chart: flyte-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "OnRootMismatch" seLinuxOptions: type: spc_t initContainers: @@ -7084,11 +7084,11 @@ spec: helm.sh/chart: flyte-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: - runAsNonRoot: true + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always + runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t initContainers: @@ -7179,10 +7179,10 @@ spec: helm.sh/chart: flyte-v0.1.10 app.kubernetes.io/managed-by: Helm spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsUser: 1001 - fsGroupChangePolicy: "Always" containers: - command: - flytepropeller @@ -7248,11 +7248,11 @@ spec: annotations: configChecksum: "348a3f88031dd95422276b1d3162236cfae3cf720040a8465668611ca6b1948" spec: - securityContext: + securityContext: fsGroup: 65534 + fsGroupChangePolicy: Always runAsNonRoot: true runAsUser: 1001 - fsGroupChangePolicy: "Always" seLinuxOptions: type: spc_t serviceAccountName: flyte-pod-webhook From 84723808c7e6a45465ab2742c07e7bd29497931c Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Wed, 14 Feb 2024 13:54:46 -0800 Subject: [PATCH 021/107] Update imageSpec doc (#4875) Signed-off-by: Kevin Su --- .../flyte_project_components.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/docs/getting_started_with_workflow_development/flyte_project_components.md b/docs/getting_started_with_workflow_development/flyte_project_components.md index 18fcf861367..8c24946aad8 100644 --- a/docs/getting_started_with_workflow_development/flyte_project_components.md +++ b/docs/getting_started_with_workflow_development/flyte_project_components.md @@ -55,17 +55,13 @@ The workflow directory also contains an `__init__.py` file to indicate that the The workflow code file in the basic template includes an optional ImageSpec configuration. ImageSpec is a Flyte feature that enables you to build a custom container image without having to write a Dockerfile. To learn more, see the {ref}`ImageSpec documentation `. ```python -# basic_image = ImageSpec( -# name="flytekit", # rename this to your docker image name -# base_image="ghcr.io/flyteorg/flytekit:py3.11-1.10.2", -# # the base image that flytekit will use to build your image -# packages=["example-package"], # packages to add to the base image -# # remove "example-package" before using. -# registry="ghcr.io/unionai-oss", -# # the registry your image will be pushed to -# python_version="3.11" -# # the python version; optional if not different from the base image -# ) +basic_image = ImageSpec( + name="flytekit", # default docker image name. + base_image="ghcr.io/flyteorg/flytekit:py3.11-1.10.2", # the base image that flytekit will use to build your image. + packages=["pandas"], # python packages to install. + registry="ghcr.io/unionai-oss", # the registry your image will be pushed to. + python_version="3.11" # Optional if python is installed in the base image. +) ``` ```{note} From 5bed5cc761ebf8cf06733018fe97734b707a99dc Mon Sep 17 00:00:00 2001 From: Yee Hing Tong Date: Wed, 14 Feb 2024 14:11:34 -0800 Subject: [PATCH 022/107] add unused org (#4898) Signed-off-by: Yee Hing Tong --- flyteidl/clients/go/assets/admin.swagger.json | 3 + .../gen/pb-es/flyteidl/core/artifact_id_pb.ts | 6 + .../gen/pb-go/flyteidl/core/artifact_id.pb.go | 201 +++++++++--------- .../flyteidl/service/admin.swagger.json | 3 + .../flyteidl/service/agent.swagger.json | 3 + .../external_plugin_service.swagger.json | 3 + flyteidl/gen/pb-js/flyteidl.d.ts | 6 + flyteidl/gen/pb-js/flyteidl.js | 17 ++ .../flyteidl/core/artifact_id_pb2.py | 40 ++-- .../flyteidl/core/artifact_id_pb2.pyi | 6 +- flyteidl/gen/pb_rust/flyteidl.core.rs | 2 + .../protos/flyteidl/core/artifact_id.proto | 1 + 12 files changed, 173 insertions(+), 118 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 5b7e650ee36..291459fa556 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -11089,6 +11089,9 @@ }, "name": { "type": "string" + }, + "org": { + "type": "string" } } }, diff --git a/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts index 09850f3d7e1..2e03e3916f6 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts @@ -27,6 +27,11 @@ export class ArtifactKey extends Message { */ name = ""; + /** + * @generated from field: string org = 4; + */ + org = ""; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -38,6 +43,7 @@ export class ArtifactKey extends Message { { no: 1, name: "project", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "domain", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 3, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "org", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): ArtifactKey { diff --git a/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go b/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go index 36933ae6d66..86cc4025eb7 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go @@ -30,6 +30,7 @@ type ArtifactKey struct { Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Org string `protobuf:"bytes,4,opt,name=org,proto3" json:"org,omitempty"` } func (x *ArtifactKey) Reset() { @@ -85,6 +86,13 @@ func (x *ArtifactKey) GetName() string { return "" } +func (x *ArtifactKey) GetOrg() string { + if x != nil { + return x.Org + } + return "" +} + // Only valid for triggers type ArtifactBindingData struct { state protoimpl.MessageState @@ -694,107 +702,108 @@ var file_flyteidl_core_artifact_id_proto_rawDesc = []byte{ 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x53, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, + 0x6f, 0x22, 0x65, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x41, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, - 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x16, 0x62, - 0x69, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x13, 0x62, - 0x69, 0x6e, 0x64, 0x54, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x24, 0x0a, 0x10, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x22, 0x92, 0x02, 0x0a, 0x0a, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, - 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 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, 0x48, 0x00, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x65, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x0d, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9d, 0x01, - 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x53, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x40, 0x0a, - 0x0d, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0xe5, 0x01, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, 0x12, 0x3d, - 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, - 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, - 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x54, 0x61, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 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, 0x41, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x61, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x07, 0x62, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0xb5, 0x01, 0x0a, 0x11, 0x63, 0x6f, - 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, - 0x0f, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 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, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x0a, + 0x16, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x13, 0x62, 0x69, 0x6e, 0x64, 0x54, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x24, 0x0a, 0x10, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x22, 0x92, 0x02, 0x0a, 0x0a, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, + 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 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, 0x48, 0x00, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x74, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x74, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x46, + 0x0a, 0x0d, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x9d, 0x01, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x53, 0x0a, 0x0a, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x40, 0x0a, 0x0d, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, + 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, + 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x0b, 0x41, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x61, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, + 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x0d, 0x41, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 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, + 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, + 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x61, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3e, 0x0a, + 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, + 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, + 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0xb5, 0x01, 0x0a, 0x11, + 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x42, 0x0f, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 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 ( 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 5b7e650ee36..291459fa556 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -11089,6 +11089,9 @@ }, "name": { "type": "string" + }, + "org": { + "type": "string" } } }, 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 1a17685ff61..5ce68f3e615 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -416,6 +416,9 @@ }, "name": { "type": "string" + }, + "org": { + "type": "string" } } }, 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 a7e7dcf7fd5..5dd386c39c5 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 @@ -215,6 +215,9 @@ }, "name": { "type": "string" + }, + "org": { + "type": "string" } } }, diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index b815ae4a82f..0c056241314 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -16,6 +16,9 @@ export namespace flyteidl { /** ArtifactKey name */ name?: (string|null); + + /** ArtifactKey org */ + org?: (string|null); } /** Represents an ArtifactKey. */ @@ -36,6 +39,9 @@ export namespace flyteidl { /** ArtifactKey name. */ public name: string; + /** ArtifactKey org. */ + public org: string; + /** * Creates a new ArtifactKey instance using the specified properties. * @param [properties] Properties to set diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 9af0d61e141..4fe6ae7a4ad 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -43,6 +43,7 @@ * @property {string|null} [project] ArtifactKey project * @property {string|null} [domain] ArtifactKey domain * @property {string|null} [name] ArtifactKey name + * @property {string|null} [org] ArtifactKey org */ /** @@ -84,6 +85,14 @@ */ ArtifactKey.prototype.name = ""; + /** + * ArtifactKey org. + * @member {string} org + * @memberof flyteidl.core.ArtifactKey + * @instance + */ + ArtifactKey.prototype.org = ""; + /** * Creates a new ArtifactKey instance using the specified properties. * @function create @@ -114,6 +123,8 @@ writer.uint32(/* id 2, wireType 2 =*/18).string(message.domain); if (message.name != null && message.hasOwnProperty("name")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); + if (message.org != null && message.hasOwnProperty("org")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.org); return writer; }; @@ -144,6 +155,9 @@ case 3: message.name = reader.string(); break; + case 4: + message.org = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -172,6 +186,9 @@ if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; + if (message.org != null && message.hasOwnProperty("org")) + if (!$util.isString(message.org)) + return "org: string expected"; return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py index ff603987f35..06e8ff7f81f 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py @@ -15,7 +15,7 @@ from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x66lyteidl/core/artifact_id.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\"S\n\x0b\x41rtifactKey\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\"\xb9\x01\n\x13\x41rtifactBindingData\x12\x14\n\x05index\x18\x01 \x01(\rR\x05index\x12%\n\rpartition_key\x18\x02 \x01(\tH\x00R\x0cpartitionKey\x12\x35\n\x16\x62ind_to_time_partition\x18\x03 \x01(\x08H\x00R\x13\x62indToTimePartition\x12\x1c\n\ttransform\x18\x04 \x01(\tR\ttransformB\x10\n\x0epartition_data\"$\n\x10InputBindingData\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\"\x92\x02\n\nLabelValue\x12#\n\x0cstatic_value\x18\x01 \x01(\tH\x00R\x0bstaticValue\x12;\n\ntime_value\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimeValue\x12Q\n\x11triggered_binding\x18\x03 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x10triggeredBinding\x12\x46\n\rinput_binding\x18\x04 \x01(\x0b\x32\x1f.flyteidl.core.InputBindingDataH\x00R\x0cinputBindingB\x07\n\x05value\"\x9d\x01\n\nPartitions\x12:\n\x05value\x18\x01 \x03(\x0b\x32$.flyteidl.core.Partitions.ValueEntryR\x05value\x1aS\n\nValueEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value:\x02\x38\x01\"@\n\rTimePartition\x12/\n\x05value\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xe5\x01\n\nArtifactID\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12\x39\n\npartitions\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.PartitionsR\npartitions\x12\x43\n\x0etime_partition\x18\x04 \x01(\x0b\x32\x1c.flyteidl.core.TimePartitionR\rtimePartition\"}\n\x0b\x41rtifactTag\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xf0\x01\n\rArtifactQuery\x12<\n\x0b\x61rtifact_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.ArtifactIDH\x00R\nartifactId\x12?\n\x0c\x61rtifact_tag\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactTagH\x00R\x0b\x61rtifactTag\x12\x12\n\x03uri\x18\x03 \x01(\tH\x00R\x03uri\x12>\n\x07\x62inding\x18\x04 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x07\x62indingB\x0c\n\nidentifierB\xb5\x01\n\x11\x63om.flyteidl.coreB\x0f\x41rtifactIdProtoP\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\x1f\x66lyteidl/core/artifact_id.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\"e\n\x0b\x41rtifactKey\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\x10\n\x03org\x18\x04 \x01(\tR\x03org\"\xb9\x01\n\x13\x41rtifactBindingData\x12\x14\n\x05index\x18\x01 \x01(\rR\x05index\x12%\n\rpartition_key\x18\x02 \x01(\tH\x00R\x0cpartitionKey\x12\x35\n\x16\x62ind_to_time_partition\x18\x03 \x01(\x08H\x00R\x13\x62indToTimePartition\x12\x1c\n\ttransform\x18\x04 \x01(\tR\ttransformB\x10\n\x0epartition_data\"$\n\x10InputBindingData\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\"\x92\x02\n\nLabelValue\x12#\n\x0cstatic_value\x18\x01 \x01(\tH\x00R\x0bstaticValue\x12;\n\ntime_value\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimeValue\x12Q\n\x11triggered_binding\x18\x03 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x10triggeredBinding\x12\x46\n\rinput_binding\x18\x04 \x01(\x0b\x32\x1f.flyteidl.core.InputBindingDataH\x00R\x0cinputBindingB\x07\n\x05value\"\x9d\x01\n\nPartitions\x12:\n\x05value\x18\x01 \x03(\x0b\x32$.flyteidl.core.Partitions.ValueEntryR\x05value\x1aS\n\nValueEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value:\x02\x38\x01\"@\n\rTimePartition\x12/\n\x05value\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xe5\x01\n\nArtifactID\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12\x39\n\npartitions\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.PartitionsR\npartitions\x12\x43\n\x0etime_partition\x18\x04 \x01(\x0b\x32\x1c.flyteidl.core.TimePartitionR\rtimePartition\"}\n\x0b\x41rtifactTag\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xf0\x01\n\rArtifactQuery\x12<\n\x0b\x61rtifact_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.ArtifactIDH\x00R\nartifactId\x12?\n\x0c\x61rtifact_tag\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactTagH\x00R\x0b\x61rtifactTag\x12\x12\n\x03uri\x18\x03 \x01(\tH\x00R\x03uri\x12>\n\x07\x62inding\x18\x04 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x07\x62indingB\x0c\n\nidentifierB\xb5\x01\n\x11\x63om.flyteidl.coreB\x0f\x41rtifactIdProtoP\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) @@ -27,23 +27,23 @@ _PARTITIONS_VALUEENTRY._options = None _PARTITIONS_VALUEENTRY._serialized_options = b'8\001' _globals['_ARTIFACTKEY']._serialized_start=115 - _globals['_ARTIFACTKEY']._serialized_end=198 - _globals['_ARTIFACTBINDINGDATA']._serialized_start=201 - _globals['_ARTIFACTBINDINGDATA']._serialized_end=386 - _globals['_INPUTBINDINGDATA']._serialized_start=388 - _globals['_INPUTBINDINGDATA']._serialized_end=424 - _globals['_LABELVALUE']._serialized_start=427 - _globals['_LABELVALUE']._serialized_end=701 - _globals['_PARTITIONS']._serialized_start=704 - _globals['_PARTITIONS']._serialized_end=861 - _globals['_PARTITIONS_VALUEENTRY']._serialized_start=778 - _globals['_PARTITIONS_VALUEENTRY']._serialized_end=861 - _globals['_TIMEPARTITION']._serialized_start=863 - _globals['_TIMEPARTITION']._serialized_end=927 - _globals['_ARTIFACTID']._serialized_start=930 - _globals['_ARTIFACTID']._serialized_end=1159 - _globals['_ARTIFACTTAG']._serialized_start=1161 - _globals['_ARTIFACTTAG']._serialized_end=1286 - _globals['_ARTIFACTQUERY']._serialized_start=1289 - _globals['_ARTIFACTQUERY']._serialized_end=1529 + _globals['_ARTIFACTKEY']._serialized_end=216 + _globals['_ARTIFACTBINDINGDATA']._serialized_start=219 + _globals['_ARTIFACTBINDINGDATA']._serialized_end=404 + _globals['_INPUTBINDINGDATA']._serialized_start=406 + _globals['_INPUTBINDINGDATA']._serialized_end=442 + _globals['_LABELVALUE']._serialized_start=445 + _globals['_LABELVALUE']._serialized_end=719 + _globals['_PARTITIONS']._serialized_start=722 + _globals['_PARTITIONS']._serialized_end=879 + _globals['_PARTITIONS_VALUEENTRY']._serialized_start=796 + _globals['_PARTITIONS_VALUEENTRY']._serialized_end=879 + _globals['_TIMEPARTITION']._serialized_start=881 + _globals['_TIMEPARTITION']._serialized_end=945 + _globals['_ARTIFACTID']._serialized_start=948 + _globals['_ARTIFACTID']._serialized_end=1177 + _globals['_ARTIFACTTAG']._serialized_start=1179 + _globals['_ARTIFACTTAG']._serialized_end=1304 + _globals['_ARTIFACTQUERY']._serialized_start=1307 + _globals['_ARTIFACTQUERY']._serialized_end=1547 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi index 53a9420bc1c..5eacdbb52ff 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi @@ -8,14 +8,16 @@ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Opti DESCRIPTOR: _descriptor.FileDescriptor class ArtifactKey(_message.Message): - __slots__ = ["project", "domain", "name"] + __slots__ = ["project", "domain", "name", "org"] PROJECT_FIELD_NUMBER: _ClassVar[int] DOMAIN_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] + ORG_FIELD_NUMBER: _ClassVar[int] project: str domain: str name: str - def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ... + org: str + def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., name: _Optional[str] = ..., org: _Optional[str] = ...) -> None: ... class ArtifactBindingData(_message.Message): __slots__ = ["index", "partition_key", "bind_to_time_partition", "transform"] diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index 6f38b7b50b9..8485a6d7559 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -723,6 +723,8 @@ pub struct ArtifactKey { pub domain: ::prost::alloc::string::String, #[prost(string, tag="3")] pub name: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub org: ::prost::alloc::string::String, } /// Only valid for triggers #[allow(clippy::derive_partial_eq_without_eq)] diff --git a/flyteidl/protos/flyteidl/core/artifact_id.proto b/flyteidl/protos/flyteidl/core/artifact_id.proto index ab0fa866233..11efd831608 100644 --- a/flyteidl/protos/flyteidl/core/artifact_id.proto +++ b/flyteidl/protos/flyteidl/core/artifact_id.proto @@ -13,6 +13,7 @@ message ArtifactKey { string project = 1; string domain = 2; string name = 3; + string org = 4; } // Only valid for triggers From c5863dedbab5b86a790de31eef3065d221d83796 Mon Sep 17 00:00:00 2001 From: Katrina Rogan Date: Wed, 14 Feb 2024 15:52:31 -0800 Subject: [PATCH 023/107] Remove org-based additional bindings paths to avoid conflicts (#4896) --- flyteidl/clients/go/assets/admin.swagger.json | 7979 ++------- .../gen/pb-go/flyteidl/service/admin.pb.go | 1822 +- .../gen/pb-go/flyteidl/service/signal.pb.go | 98 +- .../gateway/flyteidl/service/admin.pb.gw.go | 14893 +++------------- .../flyteidl/service/admin.swagger.json | 7979 ++------- .../gateway/flyteidl/service/signal.pb.gw.go | 300 - .../flyteidl/service/signal.swagger.json | 184 - .../pb_python/flyteidl/service/admin_pb2.py | 112 +- .../pb_python/flyteidl/service/signal_pb2.py | 8 +- flyteidl/protos/flyteidl/service/admin.proto | 191 - flyteidl/protos/flyteidl/service/signal.proto | 7 - 11 files changed, 6750 insertions(+), 26823 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 291459fa556..30e653daa3a 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -16,141 +16,6 @@ "application/json" ], "paths": { - "/api/v1/active_launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch the active version of a :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Retrieve the active launch plan version specified by input request filters.", - "operationId": "AdminService_GetActiveLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlan" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/active_launch_plans/org/{org}/{project}/{domain}": { - "get": { - "summary": "List active versions of :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Fetch the active launch plan versions specified by input request filters.", - "operationId": "AdminService_ListActiveLaunchPlans2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required.", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, "/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}": { "get": { "summary": "Fetch the active version of a :ref:`ref_flyteidl.admin.LaunchPlan`.", @@ -286,10 +151,10 @@ ] } }, - "/api/v1/children/org/{task_execution_id.node_execution_id.execution_id.org}/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}": { + "/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}": { "get": { "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution` launched by the reference :ref:`ref_flyteidl.admin.TaskExecution`.", - "operationId": "AdminService_ListNodeExecutionsForTask2", + "operationId": "AdminService_ListNodeExecutionsForTask", "responses": { "200": { "description": "A successful response.", @@ -305,13 +170,6 @@ } }, "parameters": [ - { - "name": "task_execution_id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, { "name": "task_execution_id.node_execution_id.execution_id.project", "description": "Name of the project the resource belongs to.", @@ -396,6 +254,13 @@ "required": false, "type": "string" }, + { + "name": "task_execution_id.node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, { "name": "limit", "description": "Indicates the number of resources to be returned.\n+required", @@ -443,15 +308,15 @@ ] } }, - "/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}": { + "/api/v1/data/executions/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution` launched by the reference :ref:`ref_flyteidl.admin.TaskExecution`.", - "operationId": "AdminService_ListNodeExecutionsForTask", + "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_GetExecutionData", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNodeExecutionList" + "$ref": "#/definitions/adminWorkflowExecutionGetDataResponse" } }, "default": { @@ -463,185 +328,204 @@ }, "parameters": [ { - "name": "task_execution_id.node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.node_execution_id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.node_execution_id.execution_id.name", + "name": "id.name", "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.node_execution_id.node_id", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { + "get": { + "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.NodeExecution`.", + "operationId": "AdminService_GetNodeExecutionData", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNodeExecutionGetDataResponse" + } }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "task_execution_id.task_id.project", + "name": "id.execution_id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.task_id.domain", + "name": "id.execution_id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.task_id.name", - "description": "User provided value for the resource.", + "name": "id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.task_id.version", - "description": "Specific version of the resource.", + "name": "id.node_id", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "task_execution_id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "task_execution_id.task_id.org", + "name": "id.execution_id.org", "description": "Optional, org key applied to the resource.", "in": "query", "required": false, "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "get": { + "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.TaskExecution`.", + "description": "Retrieve input and output data from an existing task execution.", + "operationId": "AdminService_GetTaskExecutionData", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminTaskExecutionGetDataResponse" + } }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "task_execution_id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, + "name": "id.node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" + "name": "id.node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" }, { - "name": "token", - "description": "In the case of multiple pages of results, the, server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, + "name": "id.node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, "type": "string" }, { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, + "name": "id.node_execution_id.node_id", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, + "name": "id.task_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/data/executions/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_GetExecutionData", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetDataResponse" - } + "name": "id.task_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "id.task_id.name", + "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "id.task_id.version", + "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User or system provided value for the resource.", + "name": "id.retry_attempt", "in": "path", "required": true, + "type": "integer", + "format": "int64" + }, + { + "name": "id.task_id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + }, + { + "name": "id.task_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.org", + "name": "id.node_execution_id.execution_id.org", "description": "Optional, org key applied to the resource.", "in": "query", "required": false, @@ -653,15 +537,16 @@ ] } }, - "/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { + "/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}": { "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecutionData", + "summary": "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object.", + "description": "Retrieve an existing description entity description.", + "operationId": "AdminService_GetDescriptionEntity", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNodeExecutionGetDataResponse" + "$ref": "#/definitions/adminDescriptionEntity" } }, "default": { @@ -673,34 +558,49 @@ }, "parameters": [ { - "name": "id.execution_id.project", + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", + "name": "id.name", + "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.node_id", + "name": "id.version", + "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.org", + "name": "id.org", "description": "Optional, org key applied to the resource.", "in": "query", "required": false, @@ -712,15 +612,16 @@ ] } }, - "/api/v1/data/org/{id.execution_id.org}/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { + "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}": { "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecutionData2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", + "description": "Fetch existing description entity definitions matching input filters.", + "operationId": "AdminService_ListDescriptionEntities2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNodeExecutionGetDataResponse" + "$ref": "#/definitions/adminDescriptionEntityList" } }, "default": { @@ -732,38 +633,87 @@ }, "parameters": [ { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", + "name": "resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", "in": "path", "required": true, - "type": "string" + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] }, { - "name": "id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.node_id", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" } ], "tags": [ @@ -771,16 +721,16 @@ ] } }, - "/api/v1/data/org/{id.node_execution_id.execution_id.org}/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve input and output data from an existing task execution.", - "operationId": "AdminService_GetTaskExecutionData2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", + "description": "Fetch existing description entity definitions matching input filters.", + "operationId": "AdminService_ListDescriptionEntities", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskExecutionGetDataResponse" + "$ref": "#/definitions/adminDescriptionEntityList" } }, "default": { @@ -792,4228 +742,104 @@ }, "parameters": [ { - "name": "id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", + "name": "resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", "in": "path", "required": true, - "type": "string" + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] }, { - "name": "id.node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/data/org/{id.org}/executions/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_GetExecutionData2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetDataResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { - "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve input and output data from an existing task execution.", - "operationId": "AdminService_GetTaskExecutionData", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskExecutionGetDataResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.node_execution_id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/org/{id.org}/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object.", - "description": "Retrieve an existing description entity description.", - "operationId": "AdminService_GetDescriptionEntity2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities4", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object.", - "description": "Retrieve an existing description entity description.", - "operationId": "AdminService_GetDescriptionEntity", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities3", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/nodes": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", - "description": "Create a node execution event recording a phase transition.", - "operationId": "AdminService_CreateNodeEvent", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to send a notification that a node execution event has occurred.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminNodeExecutionEventRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/org/{event.execution_id.org}/workflows": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred.", - "description": "Create a workflow execution event recording a phase transition.", - "operationId": "AdminService_CreateWorkflowEvent2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "event.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateWorkflowEventBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/org/{event.id.execution_id.org}/nodes": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", - "description": "Create a node execution event recording a phase transition.", - "operationId": "AdminService_CreateNodeEvent2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "event.id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateNodeEventBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/org/{event.parent_node_execution_id.execution_id.org}/tasks": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.TaskExecutionEvent` has occurred.", - "description": "Create a task execution event recording a phase transition.", - "operationId": "AdminService_CreateTaskEvent2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "event.parent_node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateTaskEventBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/tasks": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.TaskExecutionEvent` has occurred.", - "description": "Create a task execution event recording a phase transition.", - "operationId": "AdminService_CreateTaskEvent", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to send a notification that a task execution event has occurred.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminTaskExecutionEventRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/workflows": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred.", - "description": "Create a workflow execution event recording a phase transition.", - "operationId": "AdminService_CreateWorkflowEvent", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to send a notification that a workflow execution event has occurred.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionEventRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions": { - "post": { - "summary": "Triggers the creation of a :ref:`ref_flyteidl.admin.Execution`", - "description": "Create a workflow execution.", - "operationId": "AdminService_CreateExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to launch an execution with the given project, domain and optionally-assigned name.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminExecutionCreateRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{id.org}/recover": { - "post": { - "summary": "Recreates a previously-run workflow execution that will only start executing from the last known failure point.\nIn Recover mode, users cannot change any input parameters or update the version of the execution.\nThis is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures,\ndownstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\nSee :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details.", - "description": "Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.", - "operationId": "AdminService_RecoverExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceRecoverExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{id.org}/relaunch": { - "post": { - "summary": "Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution`", - "description": "Relaunch a workflow execution.", - "operationId": "AdminService_RelaunchExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceRelaunchExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_ListExecutions2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve an existing workflow execution.", - "operationId": "AdminService_GetExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Terminates an in-progress :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_TerminateExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionTerminateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceTerminateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Update execution belonging to project domain :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_UpdateExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{org}": { - "put": { - "summary": "Triggers the creation of a :ref:`ref_flyteidl.admin.Execution`", - "description": "Create a workflow execution.", - "operationId": "AdminService_CreateExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/recover": { - "post": { - "summary": "Recreates a previously-run workflow execution that will only start executing from the last known failure point.\nIn Recover mode, users cannot change any input parameters or update the version of the execution.\nThis is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures,\ndownstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\nSee :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details.", - "description": "Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.", - "operationId": "AdminService_RecoverExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to recover the referenced execution.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminExecutionRecoverRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/relaunch": { - "post": { - "summary": "Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution`", - "description": "Relaunch a workflow execution.", - "operationId": "AdminService_RelaunchExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to relaunch the referenced execution.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminExecutionRelaunchRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_ListExecutions", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve an existing workflow execution.", - "operationId": "AdminService_GetExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Terminates an in-progress :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_TerminateExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionTerminateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceTerminateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Update execution belonging to project domain :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_UpdateExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plan_ids/org/{org}/{project}/{domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects.", - "description": "Fetch existing launch plan definition identifiers matching input filters.", - "operationId": "AdminService_ListLaunchPlanIds2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plan_ids/{project}/{domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects.", - "description": "Fetch existing launch plan definition identifiers matching input filters.", - "operationId": "AdminService_ListLaunchPlanIds", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.LaunchPlan` definition", - "description": "Create and register a launch plan definition.", - "operationId": "AdminService_CreateLaunchPlan", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanCreateResponse" - } - }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminLaunchPlanCreateRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/org/{id.org}": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.LaunchPlan` definition", - "description": "Create and register a launch plan definition.", - "operationId": "AdminService_CreateLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanCreateResponse" - } - }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateLaunchPlanBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans4", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition.", - "description": "Retrieve an existing launch plan definition.", - "operationId": "AdminService_GetLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlan" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.", - "operationId": "AdminService_UpdateLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "state", - "description": "Desired state to apply to the launch plan.\n+required.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "INACTIVE", - "ACTIVE" - ], - "default": "INACTIVE" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans3", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition.", - "description": "Retrieve an existing launch plan definition.", - "operationId": "AdminService_GetLaunchPlan", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlan" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.", - "operationId": "AdminService_UpdateLaunchPlan", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateLaunchPlanBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/matchable_attributes": { - "get": { - "summary": "Lists custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a specific resource type.", - "description": "Retrieve a list of MatchableAttributesConfiguration objects.", - "operationId": "AdminService_ListMatchableAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminListMatchableAttributesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - }, - { - "name": "org", - "description": "Optional, org filter applied to list project requests.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/matchable_attributes/org/{org}": { - "get": { - "summary": "Lists custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a specific resource type.", - "description": "Retrieve a list of MatchableAttributesConfiguration objects.", - "operationId": "AdminService_ListMatchableAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminListMatchableAttributesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org filter applied to list project requests.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/metrics/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve metrics from an existing workflow execution.", - "operationId": "AdminService_GetExecutionMetrics2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetMetricsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "depth", - "description": "depth defines the number of Flyte entity levels to traverse when breaking down execution details.", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve metrics from an existing workflow execution.", - "operationId": "AdminService_GetExecutionMetrics", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetMetricsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "depth", - "description": "depth defines the number of Flyte entity levels to traverse when breaking down execution details.", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/named_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Retrieve a NamedEntity object.", - "operationId": "AdminService_GetNamedEntity2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Resource type of the metadata to get. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Update the fields associated with a NamedEntity", - "operationId": "AdminService_UpdateNamedEntity2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Resource type of the metadata to update\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateNamedEntityBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/named_entities/org/{org}/{resource_type}/{project}/{domain}": { - "get": { - "summary": "Returns a list of :ref:`ref_flyteidl.admin.NamedEntity` objects.", - "description": "Retrieve a list of NamedEntity objects sharing a common resource type, project, and domain.", - "operationId": "AdminService_ListNamedEntities2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Resource type of the metadata to query. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Retrieve a NamedEntity object.", - "operationId": "AdminService_GetNamedEntity", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Resource type of the metadata to get. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Update the fields associated with a NamedEntity", - "operationId": "AdminService_UpdateNamedEntity", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Resource type of the metadata to update\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateNamedEntityBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/named_entities/{resource_type}/{project}/{domain}": { - "get": { - "summary": "Returns a list of :ref:`ref_flyteidl.admin.NamedEntity` objects.", - "description": "Retrieve a list of NamedEntity objects sharing a common resource type, project, and domain.", - "operationId": "AdminService_ListNamedEntities", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Resource type of the metadata to query. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/flyteidladminNodeExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.DynamicNodeWorkflowResponse`.", - "operationId": "AdminService_GetDynamicNodeWorkflow2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDynamicNodeWorkflowResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/org/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_ListNodeExecutions2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "workflow_execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "unique_parent_id", - "description": "Unique identifier of the parent node in the execution\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/flyteidladminNodeExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.DynamicNodeWorkflowResponse`.", - "operationId": "AdminService_GetDynamicNodeWorkflow", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDynamicNodeWorkflowResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_ListNodeExecutions", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "workflow_execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "unique_parent_id", - "description": "Unique identifier of the parent node in the execution\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_attributes/{attributes.project}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", - "description": "Update the customized resource attributes associated with a project", - "operationId": "AdminService_UpdateProjectAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_attributes/{project}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project", - "operationId": "AdminService_GetProjectAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - }, - { - "name": "org", - "description": "Optional, org key applied to the project.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project", - "operationId": "AdminService_DeleteProjectAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesDeleteResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", - "description": "Update the customized resource attributes associated with a project", - "operationId": "AdminService_UpdateProjectAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "attributes.org", - "description": "Optional, org key applied to the project.", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", "in": "path", "required": true, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Update the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_UpdateProjectDomainAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "attributes.org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" }, { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" }, { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", - "in": "path", - "required": true, + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectDomainAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_domain_attributes/org/{org}/{project}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project", - "operationId": "AdminService_GetProjectAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the project.", - "in": "path", - "required": true, + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, "type": "string" }, { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", "in": "query", "required": false, "type": "string", "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" + "DESCENDING", + "ASCENDING" ], - "default": "TASK_RESOURCE" + "default": "DESCENDING" } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project", - "operationId": "AdminService_DeleteProjectAttributes2", + } + }, + "/api/v1/events/nodes": { + "post": { + "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", + "description": "Create a node execution event recording a phase transition.", + "operationId": "AdminService_CreateNodeEvent", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectAttributesDeleteResponse" + "$ref": "#/definitions/adminNodeExecutionEventResponse" } }, "default": { @@ -5024,26 +850,13 @@ } }, "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to send a notification that a node execution event has occurred.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectAttributesBody" + "$ref": "#/definitions/adminNodeExecutionEventRequest" } } ], @@ -5052,16 +865,16 @@ ] } }, - "/api/v1/project_domain_attributes/org/{org}/{project}/{domain}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_GetProjectDomainAttributes2", + "/api/v1/events/tasks": { + "post": { + "summary": "Indicates a :ref:`ref_flyteidl.event.TaskExecutionEvent` has occurred.", + "description": "Create a task execution event recording a phase transition.", + "operationId": "AdminService_CreateTaskEvent", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesGetResponse" + "$ref": "#/definitions/adminTaskExecutionEventResponse" } }, "default": { @@ -5073,58 +886,30 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", + "name": "body", + "description": "Request to send a notification that a task execution event has occurred.", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" + "schema": { + "$ref": "#/definitions/adminTaskExecutionEventRequest" + } } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_DeleteProjectDomainAttributes2", + } + }, + "/api/v1/events/workflows": { + "post": { + "summary": "Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred.", + "description": "Create a workflow execution event recording a phase transition.", + "operationId": "AdminService_CreateWorkflowEvent", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesDeleteResponse" + "$ref": "#/definitions/adminWorkflowExecutionEventResponse" } }, "default": { @@ -5135,51 +920,31 @@ } }, "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to send a notification that a workflow execution event has occurred.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectDomainAttributesBody" + "$ref": "#/definitions/adminWorkflowExecutionEventRequest" } } ], "tags": [ "AdminService" - ] - } - }, - "/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Update the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_UpdateProjectDomainAttributes", + ] + } + }, + "/api/v1/executions": { + "post": { + "summary": "Triggers the creation of a :ref:`ref_flyteidl.admin.Execution`", + "description": "Create a workflow execution.", + "operationId": "AdminService_CreateExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesUpdateResponse" + "$ref": "#/definitions/adminExecutionCreateResponse" } }, "default": { @@ -5190,26 +955,13 @@ } }, "parameters": [ - { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to launch an execution with the given project, domain and optionally-assigned name.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectDomainAttributesBody" + "$ref": "#/definitions/adminExecutionCreateRequest" } } ], @@ -5218,16 +970,16 @@ ] } }, - "/api/v1/project_domain_attributes/{project}/{domain}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_GetProjectDomainAttributes", + "/api/v1/executions/recover": { + "post": { + "summary": "Recreates a previously-run workflow execution that will only start executing from the last known failure point.\nIn Recover mode, users cannot change any input parameters or update the version of the execution.\nThis is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures,\ndownstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\nSee :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details.", + "description": "Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.", + "operationId": "AdminService_RecoverExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesGetResponse" + "$ref": "#/definitions/adminExecutionCreateResponse" } }, "default": { @@ -5239,58 +991,30 @@ }, "parameters": [ { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", + "name": "body", + "description": "Request to recover the referenced execution.", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - }, - { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "query", - "required": false, - "type": "string" + "schema": { + "$ref": "#/definitions/adminExecutionRecoverRequest" + } } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_DeleteProjectDomainAttributes", + } + }, + "/api/v1/executions/relaunch": { + "post": { + "summary": "Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution`", + "description": "Relaunch a workflow execution.", + "operationId": "AdminService_RelaunchExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesDeleteResponse" + "$ref": "#/definitions/adminExecutionCreateResponse" } }, "default": { @@ -5301,26 +1025,13 @@ } }, "parameters": [ - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to relaunch the referenced execution.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectDomainAttributesBody" + "$ref": "#/definitions/adminExecutionRelaunchRequest" } } ], @@ -5329,16 +1040,15 @@ ] } }, - "/api/v1/projects": { + "/api/v1/executions/{id.project}/{id.domain}": { "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.Project`", - "description": "Fetch registered projects.", - "operationId": "AdminService_ListProjects", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_ListExecutions", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjects" + "$ref": "#/definitions/adminExecutionList" } }, "default": { @@ -5349,9 +1059,37 @@ } }, "parameters": [ + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, { "name": "limit", - "description": "Indicates the number of projects to be returned.\n+required", + "description": "Indicates the number of resources to be returned.\n+required", "in": "query", "required": false, "type": "integer", @@ -5389,27 +1127,23 @@ "ASCENDING" ], "default": "DESCENDING" - }, - { - "name": "org", - "description": "Optional, org filter applied to list project requests.", - "in": "query", - "required": false, - "type": "string" } ], "tags": [ "AdminService" ] - }, - "post": { - "summary": "Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment.", - "operationId": "AdminService_RegisterProject", + } + }, + "/api/v1/executions/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.Execution`.", + "description": "Retrieve an existing workflow execution.", + "operationId": "AdminService_GetExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectRegisterResponse" + "$ref": "#/definitions/adminExecution" } }, "default": { @@ -5421,29 +1155,46 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/adminProjectRegisterRequest" - } + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/projects/org/{org}": { - "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.Project`", - "description": "Fetch registered projects.", - "operationId": "AdminService_ListProjects2", + }, + "delete": { + "summary": "Terminates an in-progress :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_TerminateExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjects" + "$ref": "#/definitions/adminExecutionTerminateResponse" } }, "default": { @@ -5455,69 +1206,47 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org filter applied to list project requests.", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of projects to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceTerminateExecutionBody" + } } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/projects/org/{org}/{id}": { + }, "put": { - "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", - "description": "Update a project.", - "operationId": "AdminService_UpdateProject2", + "summary": "Update execution belonging to project domain :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_UpdateExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectUpdateResponse" + "$ref": "#/definitions/adminExecutionUpdateResponse" } }, "default": { @@ -5529,15 +1258,22 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the resource.", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id", - "description": "Globally unique project name.", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" @@ -5547,7 +1283,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectBody" + "$ref": "#/definitions/AdminServiceUpdateExecutionBody" } } ], @@ -5556,15 +1292,16 @@ ] } }, - "/api/v1/projects/org/{project.org}": { - "post": { - "summary": "Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment.", - "operationId": "AdminService_RegisterProject2", + "/api/v1/launch_plan_ids/{project}/{domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects.", + "description": "Fetch existing launch plan definition identifiers matching input filters.", + "operationId": "AdminService_ListLaunchPlanIds", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectRegisterResponse" + "$ref": "#/definitions/adminNamedEntityIdentifierList" } }, "default": { @@ -5576,19 +1313,66 @@ }, "parameters": [ { - "name": "project.org", - "description": "Optional, org key applied to the resource.", + "name": "project", + "description": "Name of the project that contains the identifiers.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "body", - "in": "body", + "name": "domain", + "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceRegisterProjectBody" - } + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -5596,18 +1380,26 @@ ] } }, - "/api/v1/projects/{id}": { - "put": { - "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", - "description": "Update a project.", - "operationId": "AdminService_UpdateProject", + "/api/v1/launch_plans": { + "post": { + "summary": "Create and upload a :ref:`ref_flyteidl.admin.LaunchPlan` definition", + "description": "Create and register a launch plan definition.", + "operationId": "AdminService_CreateLaunchPlan", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectUpdateResponse" + "$ref": "#/definitions/adminLaunchPlanCreateResponse" } }, + "400": { + "description": "Returned for bad request that may have failed validation.", + "schema": {} + }, + "409": { + "description": "Returned for a request that references an identical entity that has already been registered.", + "schema": {} + }, "default": { "description": "An unexpected error response.", "schema": { @@ -5616,19 +1408,13 @@ } }, "parameters": [ - { - "name": "id", - "description": "Globally unique project name.", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectBody" + "$ref": "#/definitions/adminLaunchPlanCreateRequest" } } ], @@ -5637,16 +1423,16 @@ ] } }, - "/api/v1/task_executions/org/{id.node_execution_id.execution_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "/api/v1/launch_plans/{id.project}/{id.domain}": { "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve an existing task execution.", - "operationId": "AdminService_GetTaskExecution2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", + "description": "Fetch existing launch plan definitions matching input filters.", + "operationId": "AdminService_ListLaunchPlans2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/flyteidladminTaskExecution" + "$ref": "#/definitions/adminLaunchPlanList" } }, "default": { @@ -5658,95 +1444,73 @@ }, "parameters": [ { - "name": "id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.node_execution_id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.task_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" }, { - "name": "id.task_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.task_id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.task_id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", "in": "query", "required": false, "type": "string", "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" + "DESCENDING", + "ASCENDING" ], - "default": "UNSPECIFIED" - }, - { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" + "default": "DESCENDING" } ], "tags": [ @@ -5754,16 +1518,16 @@ ] } }, - "/api/v1/task_executions/org/{node_execution_id.execution_id.org}/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}": { + "/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Fetch existing task executions matching input filters.", - "operationId": "AdminService_ListTaskExecutions2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", + "description": "Fetch existing launch plan definitions matching input filters.", + "operationId": "AdminService_ListLaunchPlans", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskExecutionList" + "$ref": "#/definitions/adminLaunchPlanList" } }, "default": { @@ -5775,37 +1539,31 @@ }, "parameters": [ { - "name": "node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.node_id", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" }, { @@ -5818,7 +1576,7 @@ }, { "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", "in": "query", "required": false, "type": "string" @@ -5855,16 +1613,16 @@ ] } }, - "/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}": { "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve an existing task execution.", - "operationId": "AdminService_GetTaskExecution", + "summary": "Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition.", + "description": "Retrieve an existing launch plan definition.", + "operationId": "AdminService_GetLaunchPlan", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/flyteidladminTaskExecution" + "$ref": "#/definitions/adminLaunchPlan" } }, "default": { @@ -5876,69 +1634,35 @@ }, "parameters": [ { - "name": "id.node_execution_id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.task_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.task_id.name", + "name": "id.name", "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.task_id.version", + "name": "id.version", "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", + "name": "id.resource_type", "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", "in": "query", "required": false, @@ -5953,14 +1677,7 @@ "default": "UNSPECIFIED" }, { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.org", + "name": "id.org", "description": "Optional, org key applied to the resource.", "in": "query", "required": false, @@ -5970,18 +1687,16 @@ "tags": [ "AdminService" ] - } - }, - "/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}": { - "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Fetch existing task executions matching input filters.", - "operationId": "AdminService_ListTaskExecutions", + }, + "put": { + "summary": "Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`.", + "description": "Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.", + "operationId": "AdminService_UpdateLaunchPlan", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskExecutionList" + "$ref": "#/definitions/adminLaunchPlanUpdateResponse" } }, "default": { @@ -5993,79 +1708,91 @@ }, "parameters": [ { - "name": "node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", + "name": "id.name", + "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.node_id", + "name": "id.version", + "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateLaunchPlanBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/matchable_attributes": { + "get": { + "summary": "Lists custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a specific resource type.", + "description": "Retrieve a list of MatchableAttributesConfiguration objects.", + "operationId": "AdminService_ListMatchableAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminListMatchableAttributesResponse" + } }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "name": "resource_type", + "description": "+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", "in": "query", "required": false, - "type": "string" + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", + "name": "org", + "description": "Optional, org filter applied to list project requests.", "in": "query", "required": false, "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" } ], "tags": [ @@ -6073,16 +1800,16 @@ ] } }, - "/api/v1/task_ids/{project}/{domain}": { + "/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of task objects.", - "description": "Fetch existing task definition identifiers matching input filters.", - "operationId": "AdminService_ListTaskIds", + "summary": "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`.", + "description": "Retrieve metrics from an existing workflow execution.", + "operationId": "AdminService_GetExecutionMetrics", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" + "$ref": "#/definitions/adminWorkflowExecutionGetMetricsResponse" } }, "default": { @@ -6094,66 +1821,40 @@ }, "parameters": [ { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", + "name": "id.org", + "description": "Optional, org key applied to the resource.", "in": "query", "required": false, "type": "string" }, { - "name": "org", - "description": "Optional, org key applied to the resource.", + "name": "depth", + "description": "depth defines the number of Flyte entity levels to traverse when breaking down execution details.", "in": "query", "required": false, - "type": "string" + "type": "integer", + "format": "int32" } ], "tags": [ @@ -6161,26 +1862,18 @@ ] } }, - "/api/v1/tasks": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Task` definition", - "description": "Create and register a task definition.", - "operationId": "AdminService_CreateTask", + "/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object.", + "description": "Retrieve a NamedEntity object.", + "operationId": "AdminService_GetNamedEntity", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/flyteidladminTaskCreateResponse" + "$ref": "#/definitions/adminNamedEntity" } }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, "default": { "description": "An unexpected error response.", "schema": { @@ -6190,39 +1883,63 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "resource_type", + "description": "Resource type of the metadata to get. One of Task, Workflow or LaunchPlan.\n+required", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/flyteidladminTaskCreateRequest" - } + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/tasks/org/{id.org}": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Task` definition", - "description": "Create and register a task definition.", - "operationId": "AdminService_CreateTask2", + }, + "put": { + "summary": "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object.", + "description": "Update the fields associated with a NamedEntity", + "operationId": "AdminService_UpdateNamedEntity", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/flyteidladminTaskCreateResponse" + "$ref": "#/definitions/adminNamedEntityUpdateResponse" } }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, "default": { "description": "An unexpected error response.", "schema": { @@ -6232,8 +1949,36 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", + "name": "resource_type", + "description": "Resource type of the metadata to update\n+required", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", "in": "path", "required": true, "type": "string" @@ -6243,7 +1988,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/serviceAdminServiceCreateTaskBody" + "$ref": "#/definitions/AdminServiceUpdateNamedEntityBody" } } ], @@ -6252,16 +1997,16 @@ ] } }, - "/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}": { + "/api/v1/named_entities/{resource_type}/{project}/{domain}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks4", + "summary": "Returns a list of :ref:`ref_flyteidl.admin.NamedEntity` objects.", + "description": "Retrieve a list of NamedEntity objects sharing a common resource type, project, and domain.", + "operationId": "AdminService_ListNamedEntities", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskList" + "$ref": "#/definitions/adminNamedEntityList" } }, "default": { @@ -6273,36 +2018,36 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", + "name": "resource_type", + "description": "Resource type of the metadata to query. One of Task, Workflow or LaunchPlan.\n+required", "in": "path", "required": true, - "type": "string" + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] }, { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "project", + "description": "Name of the project that contains the identifiers.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "domain", + "description": "Name of the domain the identifiers belongs to within the project.", "in": "path", "required": true, "type": "string" }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, { "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", + "description": "Indicates the number of resources to be returned.", "in": "query", "required": false, "type": "integer", @@ -6310,14 +2055,7 @@ }, { "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", "in": "query", "required": false, "type": "string" @@ -6340,6 +2078,20 @@ "ASCENDING" ], "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -6347,16 +2099,15 @@ ] } }, - "/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}": { + "/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks2", + "summary": "Fetches a :ref:`ref_flyteidl.admin.NodeExecution`.", + "operationId": "AdminService_GetNodeExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskList" + "$ref": "#/definitions/flyteidladminNodeExecution" } }, "default": { @@ -6368,73 +2119,38 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", + "name": "id.execution_id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", + "name": "id.execution_id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "name": "id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, + "name": "id.node_id", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", + "name": "id.execution_id.org", + "description": "Optional, org key applied to the resource.", "in": "query", "required": false, "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" } ], "tags": [ @@ -6442,16 +2158,15 @@ ] } }, - "/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { + "/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow": { "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Task` definition.", - "description": "Retrieve an existing task definition.", - "operationId": "AdminService_GetTask2", + "summary": "Fetches a :ref:`ref_flyteidl.admin.DynamicNodeWorkflowResponse`.", + "operationId": "AdminService_GetDynamicNodeWorkflow", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTask" + "$ref": "#/definitions/adminDynamicNodeWorkflowResponse" } }, "default": { @@ -6463,54 +2178,38 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", + "name": "id.execution_id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", + "name": "id.execution_id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.", + "name": "id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.version", - "description": "Specific version of the resource.", + "name": "id.node_id", "in": "path", "required": true, "type": "string" }, { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "name": "id.execution_id.org", + "description": "Optional, org key applied to the resource.", "in": "query", "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" + "type": "string" } ], "tags": [ @@ -6518,16 +2217,15 @@ ] } }, - "/api/v1/tasks/org/{org}/{project}/{domain}": { + "/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of task objects.", - "description": "Fetch existing task definition identifiers matching input filters.", - "operationId": "AdminService_ListTaskIds2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution`.", + "operationId": "AdminService_ListNodeExecutions", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" + "$ref": "#/definitions/adminNodeExecutionList" } }, "default": { @@ -6539,26 +2237,33 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the resource.", + "name": "workflow_execution_id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", + "name": "workflow_execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "name": "workflow_execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, + { + "name": "workflow_execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, { "name": "limit", "description": "Indicates the number of resources to be returned.\n+required", @@ -6569,7 +2274,13 @@ }, { "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", "in": "query", "required": false, "type": "string" @@ -6594,8 +2305,8 @@ "default": "DESCENDING" }, { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", + "name": "unique_parent_id", + "description": "Unique identifier of the parent node in the execution\n+optional", "in": "query", "required": false, "type": "string" @@ -6606,16 +2317,16 @@ ] } }, - "/api/v1/tasks/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks3", + "/api/v1/project_attributes/{attributes.project}": { + "put": { + "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", + "description": "Update the customized resource attributes associated with a project", + "operationId": "AdminService_UpdateProjectAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskList" + "$ref": "#/definitions/adminProjectAttributesUpdateResponse" } }, "default": { @@ -6627,90 +2338,244 @@ }, "parameters": [ { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "attributes.project", + "description": "Unique project id for which this set of attributes will be applied.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/project_attributes/{project}": { + "get": { + "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Retrieve the customized resource attributes associated with a project", + "operationId": "AdminService_GetProjectAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectAttributesGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "name": "resource_type", + "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", "in": "query", "required": false, - "type": "string" + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" }, { - "name": "id.org", - "description": "Optional, org key applied to the resource.", + "name": "org", + "description": "Optional, org key applied to the project.", "in": "query", "required": false, "type": "string" + } + ], + "tags": [ + "AdminService" + ] + }, + "delete": { + "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Delete the customized resource attributes associated with a project", + "operationId": "AdminService_DeleteProjectAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectAttributesDeleteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceDeleteProjectAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}": { + "put": { + "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Update the customized resource attributes associated with a project-domain combination", + "operationId": "AdminService_UpdateProjectDomainAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectDomainAttributesUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "attributes.project", + "description": "Unique project id for which this set of attributes will be applied.", + "in": "path", + "required": true, + "type": "string" }, { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, + "name": "attributes.domain", + "description": "Unique domain id for which this set of attributes will be applied.", + "in": "path", + "required": true, "type": "string" }, { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectDomainAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/project_domain_attributes/{project}/{domain}": { + "get": { + "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Retrieve the customized resource attributes associated with a project-domain combination", + "operationId": "AdminService_GetProjectDomainAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectDomainAttributesGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "name": "resource_type", + "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", "in": "query", "required": false, "type": "string", "enum": [ - "DESCENDING", - "ASCENDING" + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" ], - "default": "DESCENDING" + "default": "TASK_RESOURCE" + }, + { + "name": "org", + "description": "Optional, org key applied to the attributes.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/tasks/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks", + }, + "delete": { + "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Delete the customized resource attributes associated with a project-domain combination", + "operationId": "AdminService_DeleteProjectDomainAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskList" + "$ref": "#/definitions/adminProjectDomainAttributesDeleteResponse" } }, "default": { @@ -6722,36 +2587,56 @@ }, "parameters": [ { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" + "schema": { + "$ref": "#/definitions/AdminServiceDeleteProjectDomainAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/projects": { + "get": { + "summary": "Fetches a list of :ref:`ref_flyteidl.admin.Project`", + "description": "Fetch registered projects.", + "operationId": "AdminService_ListProjects", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjects" + } }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", + "description": "Indicates the number of projects to be returned.\n+required", "in": "query", "required": false, "type": "integer", @@ -6789,23 +2674,27 @@ "ASCENDING" ], "default": "DESCENDING" + }, + { + "name": "org", + "description": "Optional, org filter applied to list project requests.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Task` definition.", - "description": "Retrieve an existing task definition.", - "operationId": "AdminService_GetTask", + }, + "post": { + "summary": "Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment.", + "operationId": "AdminService_RegisterProject", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTask" + "$ref": "#/definitions/adminProjectRegisterResponse" } }, "default": { @@ -6817,54 +2706,12 @@ }, "parameters": [ { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" + "schema": { + "$ref": "#/definitions/adminProjectRegisterRequest" + } } ], "tags": [ @@ -6872,15 +2719,16 @@ ] } }, - "/api/v1/version": { - "get": { - "description": "Retrieve the Version (including the Build information) for FlyteAdmin service", - "operationId": "AdminService_GetVersion", + "/api/v1/projects/{id}": { + "put": { + "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", + "description": "Update a project.", + "operationId": "AdminService_UpdateProject", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminGetVersionResponse" + "$ref": "#/definitions/adminProjectUpdateResponse" } }, "default": { @@ -6890,21 +2738,38 @@ } } }, + "parameters": [ + { + "name": "id", + "description": "Globally unique project name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectBody" + } + } + ], "tags": [ "AdminService" ] } }, - "/api/v1/workflow_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}/{attributes.workflow}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Update the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_UpdateWorkflowAttributes2", + "/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.TaskExecution`.", + "description": "Retrieve an existing task execution.", + "operationId": "AdminService_GetTaskExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowAttributesUpdateResponse" + "$ref": "#/definitions/flyteidladminTaskExecution" } }, "default": { @@ -6916,127 +2781,112 @@ }, "parameters": [ { - "name": "attributes.org", - "description": "Optional, org key applied to the attributes.", + "name": "id.node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", + "name": "id.node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", + "name": "id.node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "attributes.workflow", - "description": "Workflow name for which this set of attributes will be applied.", + "name": "id.node_execution_id.node_id", "in": "path", "required": true, "type": "string" }, { - "name": "body", - "in": "body", + "name": "id.task_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateWorkflowAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Retrieve the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_GetWorkflowAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowAttributesGetResponse" - } + "type": "string" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the attributes.", + "name": "id.task_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", + "name": "id.task_id.name", + "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", + "name": "id.task_id.version", + "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", + "name": "id.retry_attempt", "in": "path", "required": true, - "type": "string" + "type": "integer", + "format": "int64" }, { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "name": "id.task_id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", "in": "query", "required": false, "type": "string", "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" ], - "default": "TASK_RESOURCE" + "default": "UNSPECIFIED" + }, + { + "name": "id.task_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "id.node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Delete the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_DeleteWorkflowAttributes2", + } + }, + "/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}": { + "get": { + "summary": "Fetches a list of :ref:`ref_flyteidl.admin.TaskExecution`.", + "description": "Fetch existing task executions matching input filters.", + "operationId": "AdminService_ListTaskExecutions", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowAttributesDeleteResponse" + "$ref": "#/definitions/adminTaskExecutionList" } }, "default": { @@ -7048,95 +2898,79 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the attributes.", + "name": "node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", + "name": "node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", + "name": "node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", + "name": "node_execution_id.node_id", "in": "path", "required": true, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceDeleteWorkflowAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Update the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_UpdateWorkflowAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowAttributesUpdateResponse" - } + "name": "node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", - "in": "path", - "required": true, + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "attributes.workflow", - "description": "Workflow name for which this set of attributes will be applied.", - "in": "path", - "required": true, + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateWorkflowAttributesBody" - } + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" } ], "tags": [ @@ -7144,16 +2978,16 @@ ] } }, - "/api/v1/workflow_attributes/{project}/{domain}/{workflow}": { + "/api/v1/task_ids/{project}/{domain}": { "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Retrieve the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_GetWorkflowAttributes", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of task objects.", + "description": "Fetch existing task definition identifiers matching input filters.", + "operationId": "AdminService_ListTaskIds", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowAttributesGetResponse" + "$ref": "#/definitions/adminNamedEntityIdentifierList" } }, "default": { @@ -7166,64 +3000,124 @@ "parameters": [ { "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", + "description": "Name of the project that contains the identifiers.\n+required", "in": "path", "required": true, "type": "string" }, { "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", + "description": "Name of the domain the identifiers belongs to within the project.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", - "in": "path", - "required": true, + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", "in": "query", "required": false, "type": "string", "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" + "DESCENDING", + "ASCENDING" ], - "default": "TASK_RESOURCE" + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/tasks": { + "post": { + "summary": "Create and upload a :ref:`ref_flyteidl.admin.Task` definition", + "description": "Create and register a task definition.", + "operationId": "AdminService_CreateTask", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/flyteidladminTaskCreateResponse" + } + }, + "400": { + "description": "Returned for bad request that may have failed validation.", + "schema": {} + }, + "409": { + "description": "Returned for a request that references an identical entity that has already been registered.", + "schema": {} }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/flyteidladminTaskCreateRequest" + } } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Delete the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_DeleteWorkflowAttributes", + } + }, + "/api/v1/tasks/{id.project}/{id.domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", + "description": "Fetch existing task definitions matching input filters.", + "operationId": "AdminService_ListTasks2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowAttributesDeleteResponse" + "$ref": "#/definitions/adminTaskList" } }, "default": { @@ -7235,33 +3129,73 @@ }, "parameters": [ { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", - "in": "path", - "required": true, + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceDeleteWorkflowAttributesBody" - } + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" } ], "tags": [ @@ -7269,15 +3203,16 @@ ] } }, - "/api/v1/workflow_ids/{project}/{domain}": { + "/api/v1/tasks/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of workflow objects.", - "operationId": "AdminService_ListWorkflowIds", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", + "description": "Fetch existing task definitions matching input filters.", + "operationId": "AdminService_ListTasks", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" + "$ref": "#/definitions/adminTaskList" } }, "default": { @@ -7289,19 +3224,33 @@ }, "parameters": [ { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", "in": "path", "required": true, "type": "string" }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, { "name": "limit", "description": "Indicates the number of resources to be returned.\n+required", @@ -7312,7 +3261,14 @@ }, { "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", "in": "query", "required": false, "type": "string" @@ -7335,20 +3291,6 @@ "ASCENDING" ], "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" } ], "tags": [ @@ -7356,26 +3298,18 @@ ] } }, - "/api/v1/workflows": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Workflow` definition", - "description": "Create and register a workflow definition.", - "operationId": "AdminService_CreateWorkflow", + "/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.Task` definition.", + "description": "Retrieve an existing task definition.", + "operationId": "AdminService_GetTask", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowCreateResponse" + "$ref": "#/definitions/adminTask" } }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, "default": { "description": "An unexpected error response.", "schema": { @@ -7385,12 +3319,54 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/adminWorkflowCreateRequest" - } + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -7398,26 +3374,17 @@ ] } }, - "/api/v1/workflows/org/{id.org}": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Workflow` definition", - "description": "Create and register a workflow definition.", - "operationId": "AdminService_CreateWorkflow2", + "/api/v1/version": { + "get": { + "description": "Retrieve the Version (including the Build information) for FlyteAdmin service", + "operationId": "AdminService_GetVersion", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowCreateResponse" + "$ref": "#/definitions/adminGetVersionResponse" } }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, "default": { "description": "An unexpected error response.", "schema": { @@ -7425,38 +3392,21 @@ } } }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateWorkflowBody" - } - } - ], "tags": [ "AdminService" ] } }, - "/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", - "description": "Fetch existing workflow definitions matching input filters.", - "operationId": "AdminService_ListWorkflows4", + "/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}": { + "put": { + "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", + "description": "Update the customized resource attributes associated with a project, domain and workflow combination", + "operationId": "AdminService_UpdateWorkflowAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowList" + "$ref": "#/definitions/adminWorkflowAttributesUpdateResponse" } }, "default": { @@ -7468,73 +3418,33 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", + "name": "attributes.project", + "description": "Unique project id for which this set of attributes will be applied.", "in": "path", "required": true, "type": "string" }, { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "attributes.domain", + "description": "Unique domain id for which this set of attributes will be applied.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "attributes.workflow", + "description": "Workflow name for which this set of attributes will be applied.", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateWorkflowAttributesBody" + } } ], "tags": [ @@ -7542,16 +3452,16 @@ ] } }, - "/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}": { + "/api/v1/workflow_attributes/{project}/{domain}/{workflow}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", - "description": "Fetch existing workflow definitions matching input filters.", - "operationId": "AdminService_ListWorkflows2", + "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", + "description": "Retrieve the customized resource attributes associated with a project, domain and workflow combination", + "operationId": "AdminService_GetWorkflowAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowList" + "$ref": "#/definitions/adminWorkflowAttributesGetResponse" } }, "default": { @@ -7563,90 +3473,65 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "name": "workflow", + "description": "Workflow name which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "name": "resource_type", + "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", "in": "query", "required": false, - "type": "string" + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", + "name": "org", + "description": "Optional, org key applied to the attributes.", "in": "query", "required": false, "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Workflow` definition.", - "description": "Retrieve an existing workflow definition.", - "operationId": "AdminService_GetWorkflow2", + }, + "delete": { + "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", + "description": "Delete the customized resource attributes associated with a project, domain and workflow combination", + "operationId": "AdminService_DeleteWorkflowAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflow" + "$ref": "#/definitions/adminWorkflowAttributesDeleteResponse" } }, "default": { @@ -7658,54 +3543,33 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.", + "name": "workflow", + "description": "Workflow name which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" + "schema": { + "$ref": "#/definitions/AdminServiceDeleteWorkflowAttributesBody" + } } ], "tags": [ @@ -7713,10 +3577,10 @@ ] } }, - "/api/v1/workflows/org/{org}/{project}/{domain}": { + "/api/v1/workflow_ids/{project}/{domain}": { "get": { "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of workflow objects.", - "operationId": "AdminService_ListWorkflowIds2", + "operationId": "AdminService_ListWorkflowIds", "responses": { "200": { "description": "A successful response.", @@ -7732,13 +3596,6 @@ } }, "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, { "name": "project", "description": "Name of the project that contains the identifiers.\n+required", @@ -7775,24 +3632,73 @@ "required": false, "type": "string" }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/workflows": { + "post": { + "summary": "Create and upload a :ref:`ref_flyteidl.admin.Workflow` definition", + "description": "Create and register a workflow definition.", + "operationId": "AdminService_CreateWorkflow", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowCreateResponse" + } + }, + "400": { + "description": "Returned for bad request that may have failed validation.", + "schema": {} + }, + "409": { + "description": "Returned for a request that references an identical entity that has already been registered.", + "schema": {} }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/adminWorkflowCreateRequest" + } } ], "tags": [ @@ -7804,7 +3710,7 @@ "get": { "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", "description": "Fetch existing workflow definitions matching input filters.", - "operationId": "AdminService_ListWorkflows3", + "operationId": "AdminService_ListWorkflows2", "responses": { "200": { "description": "A successful response.", @@ -7984,513 +3890,100 @@ ], "default": "DESCENDING" } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Workflow` definition.", - "description": "Retrieve an existing workflow definition.", - "operationId": "AdminService_GetWorkflow", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflow" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - } - }, - "definitions": { - "AdminServiceCreateExecutionBody": { - "type": "object", - "properties": { - "project": { - "type": "string", - "title": "Name of the project the execution belongs to.\n+required" - }, - "domain": { - "type": "string", - "title": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required" - }, - "name": { - "type": "string", - "title": "User provided value for the resource.\nIf none is provided the system will generate a unique string.\n+optional" - }, - "spec": { - "$ref": "#/definitions/adminExecutionSpec", - "title": "Additional fields necessary to launch the execution.\n+optional" - }, - "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": "Request to launch an execution with the given project, domain and optionally-assigned name." - }, - "AdminServiceCreateLaunchPlanBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." - } - }, - "description": "Uniquely identifies a launch plan entity.", - "title": "Uniquely identifies a launch plan entity." - }, - "spec": { - "$ref": "#/definitions/adminLaunchPlanSpec", - "description": "User-provided launch plan details, including reference workflow, inputs and other metadata." - } - }, - "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan." - }, - "AdminServiceCreateNodeEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "node_id": { - "type": "string" - }, - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" - } - }, - "title": "Unique identifier for this node execution" - }, - "producer_id": { - "type": "string", - "title": "the id of the originator (Propeller) of the event" - }, - "phase": { - "$ref": "#/definitions/coreNodeExecutionPhase" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the node." - }, - "input_uri": { - "type": "string" - }, - "input_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this node execution." - }, - "output_uri": { - "type": "string", - "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this node execution." - }, - "workflow_node_metadata": { - "$ref": "#/definitions/flyteidleventWorkflowNodeMetadata" - }, - "task_node_metadata": { - "$ref": "#/definitions/flyteidleventTaskNodeMetadata" - }, - "parent_task_metadata": { - "$ref": "#/definitions/eventParentTaskExecutionMetadata", - "description": "[To be deprecated] Specifies which task (if any) launched this node." - }, - "parent_node_metadata": { - "$ref": "#/definitions/eventParentNodeExecutionMetadata", - "description": "Specifies the parent node of the current node execution. Node executions at level zero will not have a parent node." - }, - "retry_group": { - "type": "string", - "title": "Retry group to indicate grouping of nodes by retries" - }, - "spec_node_id": { - "type": "string", - "title": "Identifier of the node in the original workflow/graph\nThis maps to value of WorkflowTemplate.nodes[X].id" - }, - "node_name": { - "type": "string", - "title": "Friendly readable name for the node" - }, - "event_version": { - "type": "integer", - "format": "int32" - }, - "is_parent": { - "type": "boolean", - "description": "Whether this node launched a subworkflow." - }, - "is_dynamic": { - "type": "boolean", - "description": "Whether this node yielded a dynamic workflow." - }, - "deck_uri": { - "type": "string", - "title": "String location uniquely identifying where the deck HTML file is\nNativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar)" - }, - "reported_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents the instant when the event was reported by the executing framework. For example,\nwhen first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when\nliteral inputs are initially copied. The event however will not be sent until after the copy completes.\nExtracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series." - }, - "is_array": { - "type": "boolean", - "description": "Indicates if this node is an ArrayNode." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a node execution event has occurred." - }, - "AdminServiceCreateTaskEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "task_id": { - "$ref": "#/definitions/coreIdentifier", - "description": "ID of the task. In combination with the retryAttempt this will indicate\nthe task execution uniquely for a given parent node execution." - }, - "parent_node_execution_id": { - "type": "object", - "properties": { - "node_id": { - "type": "string" - }, - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" - } - }, - "title": "A task execution is always kicked off by a node execution, the event consumer\nwill use the parent_id to relate the task to it's parent node execution" - }, - "retry_attempt": { - "type": "integer", - "format": "int64", - "title": "retry attempt number for this task, ie., 2 for the second attempt" - }, - "phase": { - "$ref": "#/definitions/coreTaskExecutionPhase", - "title": "Phase associated with the event" - }, - "producer_id": { - "type": "string", - "title": "id of the process that sent this event, mainly for trace debugging" - }, - "logs": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/coreTaskLog" - }, - "title": "log information for the task execution" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the task." - }, - "input_uri": { - "type": "string", - "description": "URI of the input file, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "input_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this task execution." - }, - "output_uri": { - "type": "string", - "description": "URI to the output of the execution, it will be in a format that encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this task execution." - }, - "custom_info": { - "type": "object", - "description": "Custom data that the task plugin sends back. This is extensible to allow various plugins in the system." - }, - "phase_version": { - "type": "integer", - "format": "int64", - "description": "Some phases, like RUNNING, can send multiple events with changed metadata (new logs, additional custom_info, etc)\nthat should be recorded regardless of the lack of phase change.\nThe version field should be incremented when metadata changes across the duration of an individual phase." - }, - "reason": { - "type": "string", - "description": "An optional explanation for the phase transition.\nDeprecated: Use reasons instead." - }, - "reasons": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/eventEventReason" - }, - "description": "An optional list of explanations for the phase transition." - }, - "task_type": { - "type": "string", - "description": "A predefined yet extensible Task type identifier. If the task definition is already registered in flyte admin\nthis type will be identical, but not all task executions necessarily use pre-registered definitions and this\ntype is useful to render the task in the UI, filter task executions, etc." - }, - "metadata": { - "$ref": "#/definitions/flyteidleventTaskExecutionMetadata", - "description": "Metadata around how a task was executed." - }, - "event_version": { - "type": "integer", - "format": "int32", - "description": "The event version is used to indicate versioned changes in how data is reported using this\nproto message. For example, event_verison \u003e 0 means that maps tasks report logs using the\nTaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog\nin this message." - }, - "reported_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s\npod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,\nbut this event will not be reported until the pod is marked as completed. Extracting both of these timestamps\nfacilitates a more accurate portrayal of the evaluation time-series." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a task execution event has occurred." + ], + "tags": [ + "AdminService" + ] + } }, - "AdminServiceCreateWorkflowBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." + "/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.Workflow` definition.", + "description": "Retrieve an existing workflow definition.", + "operationId": "AdminService_GetWorkflow", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflow" } }, - "title": "id represents the unique identifier of the workflow.\n+required" - }, - "spec": { - "$ref": "#/definitions/adminWorkflowSpec", - "title": "Represents the specification for workflow.\n+required" - } - }, - "title": "Represents a request structure to create a revision of a workflow.\nSee :ref:`ref_flyteidl.admin.Workflow` for more details" - }, - "AdminServiceCreateWorkflowEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Workflow execution id" - }, - "producer_id": { - "type": "string", - "title": "the id of the originator (Propeller) of the event" - }, - "phase": { - "$ref": "#/definitions/coreWorkflowExecutionPhase" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the workflow." - }, - "output_uri": { - "type": "string", - "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this workflow execution." + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" } + } + }, + "parameters": [ + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a workflow execution event has occurred." - }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + } + }, + "definitions": { "AdminServiceDeleteProjectAttributesBody": { "type": "object", "properties": { "resource_type": { "$ref": "#/definitions/adminMatchableResource", "title": "Which type of matchable attributes to delete.\n+required" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the project." } }, "title": "Request to delete a set matchable project level attribute override.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" @@ -8501,6 +3994,10 @@ "resource_type": { "$ref": "#/definitions/adminMatchableResource", "title": "Which type of matchable attributes to delete.\n+required" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the attributes." } }, "title": "Request to delete a set matchable project domain attribute override.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" @@ -8511,117 +4008,25 @@ "resource_type": { "$ref": "#/definitions/adminMatchableResource", "title": "Which type of matchable attributes to delete.\n+required" - } - }, - "title": "Request to delete a set matchable workflow attribute override.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" - }, - "AdminServiceRecoverExecutionBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "description": "Identifier of the workflow execution to recover.", - "title": "Identifier of the workflow execution to recover." }, - "name": { + "org": { "type": "string", - "title": "User provided value for the recovered execution.\nIf none is provided the system will generate a unique string.\n+optional" - }, - "metadata": { - "$ref": "#/definitions/adminExecutionMetadata", - "description": "Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution." - } - }, - "description": "Request to recover the referenced execution." - }, - "AdminServiceRegisterProjectBody": { - "type": "object", - "properties": { - "project": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Globally unique project name." - }, - "name": { - "type": "string", - "description": "Display name." - }, - "domains": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/adminDomain" - } - }, - "description": { - "type": "string" - }, - "labels": { - "$ref": "#/definitions/adminLabels", - "description": "Leverage Labels from flyteidl.admin.common.proto to\ntag projects with ownership information." - }, - "state": { - "$ref": "#/definitions/ProjectProjectState" - } - }, - "title": "+required" + "description": "Optional, org key applied to the attributes." } }, - "title": "Adds a new user-project within the Flyte deployment.\nSee :ref:`ref_flyteidl.admin.Project` for more details" + "title": "Request to delete a set matchable workflow attribute override.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" }, - "AdminServiceRelaunchExecutionBody": { + "AdminServiceTerminateExecutionBody": { "type": "object", "properties": { "id": { "type": "object", "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { + "org": { "type": "string", - "description": "User or system provided value for the resource." + "description": "Optional, org key applied to the resource." } }, - "title": "Identifier of the workflow execution to relaunch.\n+required" - }, - "name": { - "type": "string", - "title": "User provided value for the relaunched execution.\nIf none is provided the system will generate a unique string.\n+optional" - }, - "overwrite_cache": { - "type": "boolean", - "description": "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.\nIf enabled, all calculations are performed even if cached results would be available, overwriting the stored\ndata once execution finishes successfully." - } - }, - "description": "Request to relaunch the referenced execution." - }, - "AdminServiceTerminateExecutionBody": { - "type": "object", - "properties": { - "id": { - "type": "object", "description": "Uniquely identifies the individual workflow execution to be terminated.", "title": "Uniquely identifies the individual workflow execution to be terminated." }, @@ -8637,6 +4042,12 @@ "properties": { "id": { "type": "object", + "properties": { + "org": { + "type": "string", + "description": "Optional, org key applied to the resource." + } + }, "title": "Identifier of the execution to update" }, "state": { @@ -8675,6 +4086,12 @@ "properties": { "id": { "type": "object", + "properties": { + "org": { + "type": "string", + "description": "Optional, org key applied to the resource." + } + }, "title": "Identifier of the metadata to update\n+required" }, "metadata": { @@ -8692,6 +4109,10 @@ "properties": { "matching_attributes": { "$ref": "#/definitions/adminMatchingAttributes" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the project." } }, "title": "+required" @@ -8722,6 +4143,10 @@ }, "state": { "$ref": "#/definitions/ProjectProjectState" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the resource." } }, "description": "Top-level namespace used to classify different entities like workflows and executions." @@ -8734,6 +4159,10 @@ "properties": { "matching_attributes": { "$ref": "#/definitions/adminMatchingAttributes" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the attributes." } }, "title": "+required" @@ -8749,6 +4178,10 @@ "properties": { "matching_attributes": { "$ref": "#/definitions/adminMatchingAttributes" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the attributes." } }, "title": "Defines a set of custom matching attributes which defines resource defaults for a project, domain and workflow.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" @@ -13534,42 +8967,6 @@ ], "default": "NULL_VALUE", "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." - }, - "serviceAdminServiceCreateTaskBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." - } - }, - "title": "id represents the unique identifier of the task.\n+required" - }, - "spec": { - "$ref": "#/definitions/adminTaskSpec", - "title": "Represents the specification for task.\n+required" - } - }, - "title": "Represents a request structure to create a revision of a task.\nSee :ref:`ref_flyteidl.admin.Task` for more details" } } } diff --git a/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go b/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go index 6f8453e5dff..4fa8b64e866 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go @@ -65,175 +65,16 @@ var file_flyteidl_service_admin_proto_rawDesc = []byte{ 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xb0, - 0x9b, 0x01, 0x0a, 0x0c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0xe6, 0x02, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x90, 0x02, 0x92, 0x41, 0xd3, 0x01, 0x1a, 0x26, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x42, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x3b, 0x0a, 0x39, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, - 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, - 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x65, 0x0a, 0x03, 0x34, 0x30, 0x39, - 0x12, 0x5e, 0x0a, 0x5c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x61, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, - 0x62, 0x65, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x5a, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x6f, 0x72, - 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x22, 0x0d, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x82, 0x02, 0x0a, 0x07, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x22, 0xbe, 0x01, - 0x92, 0x41, 0x27, 0x1a, 0x25, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, - 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8d, - 0x01, 0x5a, 0x4c, 0x12, 0x4a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, - 0x6b, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, - 0x3d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x8d, - 0x02, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x30, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x89, + 0x72, 0x0a, 0x0c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0xc5, 0x02, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xa0, 0x01, 0x92, 0x41, - 0x44, 0x1a, 0x42, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x5a, 0x2c, 0x12, 0x2a, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x6f, 0x72, 0x67, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xe4, - 0x02, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x23, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x97, 0x02, 0x92, 0x41, - 0x39, 0x1a, 0x37, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd4, - 0x01, 0x5a, 0x3f, 0x12, 0x3d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, - 0x6b, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x5a, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, - 0x73, 0x6b, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x5a, 0x35, 0x12, 0x33, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x6f, 0x72, - 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x7d, 0x12, 0x30, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, - 0x6b, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xfe, 0x02, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x02, 0x92, 0x41, 0xd7, 0x01, 0x1a, 0x2a, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x42, 0x0a, 0x03, 0x34, 0x30, - 0x30, 0x12, 0x3b, 0x0a, 0x39, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x65, - 0x0a, 0x03, 0x34, 0x30, 0x39, 0x12, 0x5e, 0x0a, 0x5c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, - 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, - 0x74, 0x68, 0x61, 0x74, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, - 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, - 0x65, 0x61, 0x64, 0x79, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x65, 0x64, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x5a, 0x23, - 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, - 0x72, 0x67, 0x7d, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x96, 0x02, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x22, 0xca, 0x01, 0x92, 0x41, 0x2b, 0x1a, 0x29, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x95, 0x01, 0x5a, 0x50, 0x12, 0x4e, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, - 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x41, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, - 0xd1, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x49, 0x64, 0x73, 0x12, 0x30, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 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, 0x4c, 0x69, 0x73, 0x74, - 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x5a, 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, 0x6f, 0x72, - 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x27, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x7d, 0x12, 0x80, 0x03, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xab, 0x02, 0x92, 0x41, 0x3d, 0x1a, 0x3b, - 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0xe4, 0x01, 0x5a, 0x43, 0x12, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x2c, 0x12, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, - 0x12, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x8d, 0x03, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x27, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 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, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa5, - 0x02, 0x92, 0x41, 0xda, 0x01, 0x1a, 0x2d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x6c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xef, 0x01, 0x92, 0x41, 0xd3, 0x01, 0x1a, 0x26, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x42, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x3b, 0x0a, 0x39, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, @@ -245,119 +86,213 @@ var file_flyteidl_service_admin_proto_rawDesc = []byte{ 0x6e, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x5a, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, - 0x61, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, - 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0xa3, 0x02, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, 0x61, - 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 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, 0x22, 0xd3, 0x01, 0x92, 0x41, 0x2e, 0x1a, 0x2c, 0x52, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x20, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9b, - 0x01, 0x5a, 0x53, 0x12, 0x51, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x22, 0x6f, 0x92, 0x41, 0x27, + 0x1a, 0x25, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0xc3, 0x02, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 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, 0x22, 0xe6, 0x01, 0x92, 0x41, 0x4d, 0x1a, - 0x4b, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x8f, 0x01, 0x5a, 0x4d, 0x12, 0x4b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, - 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x12, 0x3e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x12, 0xa7, 0x02, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x1a, 0x1e, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xc0, 0x01, 0x92, 0x41, 0x4b, 0x1a, - 0x49, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x20, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x20, 0x62, 0x79, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, - 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, - 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x2e, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xab, 0x02, 0x0a, - 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x49, - 0x64, 0x73, 0x12, 0x30, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0xb8, 0x01, 0x92, 0x41, 0x4b, 0x1a, 0x49, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, - 0x6e, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x64, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x2a, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, - 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x93, 0x03, 0x0a, 0x0f, 0x4c, - 0x69, 0x73, 0x74, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x23, + 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0xde, 0x01, 0x0a, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x30, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 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, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0xba, 0x02, 0x92, 0x41, 0x40, 0x1a, 0x3e, 0x46, 0x65, 0x74, 0x63, 0x68, - 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x72, 0x92, 0x41, 0x44, 0x1a, 0x42, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, + 0x61, 0x73, 0x6b, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xeb, 0x01, + 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9e, 0x01, 0x92, 0x41, 0x39, + 0x1a, 0x37, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xf0, 0x01, - 0x5a, 0x46, 0x12, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, + 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5c, 0x5a, + 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x5a, 0x3c, 0x12, 0x3a, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, - 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, + 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x30, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xd9, 0x02, 0x0a, 0x0e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x25, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf7, 0x01, + 0x92, 0x41, 0xd7, 0x01, 0x1a, 0x2a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x4a, 0x42, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x3b, 0x0a, 0x39, 0x52, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, + 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x65, 0x0a, 0x03, 0x34, 0x30, 0x39, 0x12, 0x5e, 0x0a, 0x5c, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, + 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x22, 0x77, 0x92, 0x41, 0x2b, 0x1a, 0x29, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x9f, 0x01, 0x0a, + 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x73, + 0x12, 0x30, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2f, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xff, + 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, + 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0xaa, 0x01, 0x92, 0x41, 0x3d, 0x1a, 0x3b, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x64, 0x5a, 0x2c, 0x12, 0x2a, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, + 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x34, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x12, 0xe5, 0x02, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x27, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, + 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x01, 0x92, 0x41, 0xda, 0x01, 0x1a, + 0x2d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, + 0x61, 0x6e, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x42, + 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x3b, 0x0a, 0x39, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, + 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x4a, 0x65, 0x0a, 0x03, 0x34, 0x30, 0x39, 0x12, 0x5e, 0x0a, 0x5c, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x6c, + 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x73, + 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x72, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, + 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, + 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, + 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 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, 0x22, 0x7d, 0x92, 0x41, 0x2e, 0x1a, 0x2c, 0x52, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x20, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x46, 0x12, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, + 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0xf3, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x12, + 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 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, 0x22, 0x96, 0x01, 0x92, 0x41, 0x4d, 0x1a, 0x4b, 0x52, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, + 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x20, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x79, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xeb, 0x01, + 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x61, 0x75, 0x6e, + 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x1a, 0x1e, 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, + 0x4c, 0x69, 0x73, 0x74, 0x22, 0x84, 0x01, 0x92, 0x41, 0x4b, 0x1a, 0x49, 0x46, 0x65, 0x74, 0x63, + 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x61, 0x75, 0x6e, + 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xf3, 0x01, 0x0a, 0x11, + 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, + 0x73, 0x12, 0x30, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x29, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x80, + 0x01, 0x92, 0x41, 0x4b, 0x1a, 0x49, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, + 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, + 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x7d, 0x12, 0x8c, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xb3, 0x01, 0x92, 0x41, 0x40, + 0x1a, 0x3e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x20, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x5a, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x12, 0x96, 0x07, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, + 0x12, 0xc0, 0x06, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x27, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae, 0x06, 0x92, 0x41, 0x85, 0x05, 0x1a, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd8, 0x05, 0x92, 0x41, 0x85, 0x05, 0x1a, 0x82, 0x05, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x20, 0x64, @@ -398,276 +333,181 @@ var file_flyteidl_service_admin_proto_rawDesc = []byte{ 0x6c, 0x65, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x69, 0x74, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9e, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x53, - 0x1a, 0x51, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, - 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x6c, 0x65, 0x64, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x1a, 0x44, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, + 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x7d, 0x1a, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0xc5, 0x01, 0x0a, 0x0f, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, - 0x92, 0x41, 0x1e, 0x1a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x5a, 0x21, 0x3a, 0x01, 0x2a, 0x1a, - 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x22, 0x12, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0xe0, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x6f, 0x6e, 0x7d, 0x12, 0xa2, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 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, 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 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, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x92, 0x41, 0x20, 0x1a, - 0x1e, 0x52, 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x3a, 0x01, 0x2a, 0x5a, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x72, - 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x22, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x6c, 0x61, - 0x75, 0x6e, 0x63, 0x68, 0x12, 0xcb, 0x05, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 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, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 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, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe4, 0x04, 0x92, 0x41, - 0x8d, 0x04, 0x1a, 0x8a, 0x04, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, - 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x2d, 0x72, 0x75, 0x6e, 0x20, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6f, 0x6e, 0x6c, - 0x79, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, - 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x20, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x2e, 0x20, 0x49, 0x6e, 0x20, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x20, - 0x6d, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x6f, - 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, - 0x78, 0x74, 0x72, 0x65, 0x6d, 0x65, 0x6c, 0x79, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x20, - 0x74, 0x6f, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x62, 0x79, 0x7a, 0x61, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x20, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x2d, 0x20, 0x4c, 0x6f, 0x73, 0x73, 0x20, 0x6f, - 0x66, 0x20, 0x4b, 0x38, 0x73, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x62, - 0x75, 0x67, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x20, - 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2c, 0x20, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, - 0x2c, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x20, 0x28, 0x64, 0x6f, - 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x29, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x79, 0x20, 0x74, 0x6f, - 0x20, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, - 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x74, 0x72, 0x79, - 0x20, 0x65, 0x78, 0x68, 0x61, 0x75, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x20, - 0x69, 0x66, 0x20, 0x74, 0x72, 0x69, 0x65, 0x64, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x5a, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x72, - 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x12, 0x89, 0x02, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, - 0x1a, 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, 0x22, 0xb0, 0x01, 0x92, 0x41, - 0x2a, 0x1a, 0x28, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, - 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 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, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x92, 0x41, 0x1e, 0x1a, 0x1c, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x7d, 0x5a, 0x44, 0x12, 0x42, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xef, - 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x26, 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, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, + 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6c, + 0x61, 0x75, 0x6e, 0x63, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, + 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, 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x49, 0x92, 0x41, 0x20, 0x1a, 0x1e, 0x52, 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, + 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x12, 0x9d, 0x05, 0x0a, + 0x10, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x27, 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, 0x65, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xb6, 0x04, 0x92, 0x41, 0x8d, 0x04, 0x1a, 0x8a, 0x04, 0x52, 0x65, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, + 0x73, 0x6c, 0x79, 0x2d, 0x72, 0x75, 0x6e, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x20, 0x49, 0x6e, 0x20, + 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x54, + 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x78, 0x74, 0x72, 0x65, 0x6d, 0x65, 0x6c, 0x79, + 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x62, 0x79, 0x7a, 0x61, 0x6e, 0x74, + 0x69, 0x6e, 0x65, 0x20, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, + 0x2d, 0x20, 0x4c, 0x6f, 0x73, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x4b, 0x38, 0x73, 0x20, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x62, 0x75, 0x67, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2c, 0x20, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x20, + 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x66, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x73, 0x20, 0x28, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x29, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x73, + 0x69, 0x6d, 0x70, 0x6c, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, + 0x6f, 0x66, 0x20, 0x72, 0x65, 0x74, 0x72, 0x79, 0x20, 0x65, 0x78, 0x68, 0x61, 0x75, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x72, 0x69, 0x65, 0x64, + 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, + 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0xc2, 0x01, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x1a, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x8a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x83, 0x01, 0x3a, 0x01, 0x2a, - 0x5a, 0x47, 0x3a, 0x01, 0x2a, 0x1a, 0x42, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x1a, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6a, 0x92, 0x41, 0x2a, 0x1a, 0x28, 0x52, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x12, 0xa4, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 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, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, + 0x2a, 0x1a, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, + 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb9, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x1a, 0x30, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 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, + 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, + 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x33, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, + 0x12, 0xad, 0x01, 0x0a, 0x12, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 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, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2a, 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, 0x54, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x2a, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x12, 0x86, 0x02, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x22, 0x8e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x87, 0x01, 0x5a, 0x49, 0x12, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, - 0x74, 0x61, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x3a, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc5, 0x01, 0x0a, 0x0e, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 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, 0x4c, 0x69, 0x73, 0x74, - 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x69, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6f, - 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x12, 0xf8, 0x01, 0x0a, 0x12, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 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, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 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, 0x54, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x8a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x83, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x47, 0x3a, 0x01, - 0x2a, 0x2a, 0x42, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, - 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2a, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xe2, 0x02, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x02, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0xfe, 0x01, 0x5a, 0x8b, 0x01, 0x12, 0x88, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0x9e, 0x03, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, - 0x4e, 0x6f, 0x64, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x2d, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x79, 0x6e, + 0x12, 0xd2, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x76, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x70, 0x12, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xff, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 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, 0x22, 0xa7, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0xa0, 0x02, 0x5a, 0x9c, 0x01, 0x12, 0x99, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 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, 0x1a, + 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 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, 0x22, 0x88, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x81, 0x01, 0x12, 0x7f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x12, 0x7f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x12, 0xf9, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x95, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8e, 0x02, - 0x5a, 0x96, 0x01, 0x12, 0x93, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6f, 0x72, - 0x67, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, + 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0xde, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, + 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x7b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x75, 0x12, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x8f, - 0x08, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2f, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, - 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x54, 0x61, - 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, - 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, - 0x22, 0x9d, 0x07, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x96, 0x07, 0x5a, 0xe7, 0x03, 0x12, 0xe4, 0x03, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, - 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, - 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, - 0x6d, 0x70, 0x74, 0x7d, 0x12, 0xa9, 0x03, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xa5, 0x04, 0x0a, 0x19, 0x4c, 0x69, 0x73, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, + 0x6f, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xb3, 0x03, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0xac, 0x03, 0x12, 0xa9, 0x03, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, @@ -694,145 +534,147 @@ var file_flyteidl_service_admin_proto_rawDesc = []byte{ 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x7d, - 0x12, 0x83, 0x03, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, + 0x12, 0xee, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x22, 0x8f, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x88, 0x02, 0x5a, 0x90, - 0x01, 0x12, 0x8d, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, - 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, 0x12, 0x73, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa8, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x5a, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x6f, 0x72, - 0x67, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x22, - 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x12, 0xad, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0x25, 0x2e, 0x66, + 0x7d, 0x12, 0x7f, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x92, 0x41, 0x13, 0x1a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x40, 0x3a, 0x01, 0x2a, 0x5a, 0x24, 0x3a, 0x01, 0x2a, 0x1a, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, - 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x1a, 0x15, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x7d, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x12, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x22, 0x55, 0x92, 0x41, 0x1c, 0x1a, 0x1a, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x5a, 0x1c, 0x12, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, - 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x9a, 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, - 0x01, 0x92, 0x41, 0x41, 0x1a, 0x3f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x20, 0x61, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x59, 0x3a, 0x01, 0x2a, 0x5a, 0x3a, - 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, + 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0x25, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x92, 0x41, 0x13, 0x1a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x1a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, + 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x22, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x37, 0x92, 0x41, 0x1c, + 0x1a, 0x1a, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x65, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x12, 0xdd, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x92, 0x41, 0x41, + 0x1a, 0x3f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, + 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x85, 0x02, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, + 0x6c, 0x6f, 0x77, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x9a, 0x01, 0x92, 0x41, 0x3d, 0x1a, 0x3b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, - 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, - 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x54, 0x3a, 0x01, 0x2a, 0x5a, 0x39, 0x3a, 0x01, 0x2a, - 0x22, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x64, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x9b, 0x02, 0x0a, - 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x29, 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, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 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, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb0, 0x01, 0x92, 0x41, 0x3d, 0x1a, 0x3b, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, - 0x3a, 0x01, 0x2a, 0x5a, 0x4f, 0x3a, 0x01, 0x2a, 0x22, 0x4a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x5f, 0x92, 0x41, 0x3d, 0x1a, 0x3b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, + 0x6f, 0x64, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, + 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, + 0x12, 0xc9, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 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, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 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, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3d, + 0x1a, 0x3b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x70, 0x68, 0x61, 0x73, + 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0xa9, 0x03, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x27, 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, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 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, 0x22, 0xcc, 0x02, 0x92, 0x41, 0x26, 0x1a, + 0x24, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9c, 0x02, 0x12, 0x99, 0x02, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x74, - 0x61, 0x73, 0x6b, 0x73, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0xf4, 0x05, 0x0a, 0x10, 0x47, - 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x27, 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, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 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, 0x22, 0x97, 0x05, 0x92, 0x41, 0x26, 0x1a, 0x24, 0x52, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe7, 0x04, 0x5a, 0xc8, 0x02, 0x12, 0xc5, 0x02, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, - 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x7d, 0x12, 0x99, 0x02, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, + 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, + 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, + 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x7d, 0x12, 0xd3, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x28, 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, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xef, 0x01, 0x92, + 0x41, 0x38, 0x1a, 0x36, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xad, + 0x01, 0x12, 0xaa, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xe0, + 0x03, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 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, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 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, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xec, 0x02, 0x92, 0x41, 0x41, 0x1a, 0x3f, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x6e, + 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa1, 0x02, + 0x12, 0x9e, 0x02, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, @@ -850,478 +692,306 @@ var file_flyteidl_service_admin_proto_rawDesc = []byte{ 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, - 0x7d, 0x12, 0xac, 0x04, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xc8, 0x03, 0x92, 0x41, 0x38, 0x1a, 0x36, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, - 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x86, 0x03, 0x5a, 0xd6, 0x01, 0x12, 0xd3, 0x01, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0xaa, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x12, 0xb0, 0x06, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 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, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 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, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbc, 0x05, 0x92, 0x41, 0x41, 0x1a, 0x3f, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x76, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, - 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, - 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0xf1, 0x04, 0x5a, 0xcd, 0x02, 0x12, 0xca, 0x02, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, - 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, - 0x74, 0x7d, 0x12, 0x9e, 0x02, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, - 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, - 0x70, 0x74, 0x7d, 0x12, 0xa6, 0x03, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x7d, 0x12, 0xbf, 0x02, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xb0, 0x01, 0x92, 0x41, 0x58, 0x1a, 0x56, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4f, 0x3a, 0x01, 0x2a, 0x1a, 0x4a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x7d, 0x12, 0x9f, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x12, 0x31, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x97, 0x02, 0x92, 0x41, 0x58, 0x1a, 0x56, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb5, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x64, 0x3a, 0x01, 0x2a, 0x1a, - 0x5f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x99, 0x01, 0x92, 0x41, 0x5a, 0x1a, + 0x58, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x63, 0x6f, + 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, + 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, - 0x1a, 0x4a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xe1, 0x02, 0x0a, - 0x1a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xa9, 0x02, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xdb, 0x01, 0x92, 0x41, 0x5a, 0x1a, 0x58, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9a, 0x01, 0x92, 0x41, 0x58, 0x1a, 0x56, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x78, 0x5a, 0x40, 0x12, 0x3e, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6f, 0x72, - 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x34, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, - 0x12, 0xee, 0x02, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x12, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xdf, 0x01, 0x92, 0x41, 0x58, 0x1a, 0x56, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x7e, 0x3a, 0x01, 0x2a, 0x5a, 0x43, 0x3a, 0x01, 0x2a, 0x2a, 0x3e, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6f, - 0x72, 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2a, 0x34, 0x2f, 0x61, 0x70, + 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x3a, 0x01, 0x2a, 0x2a, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x12, 0xd2, 0x02, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x7d, 0x12, 0xff, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd5, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x92, 0x41, 0x45, 0x1a, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x86, 0x01, - 0x3a, 0x01, 0x2a, 0x5a, 0x50, 0x3a, 0x01, 0x2a, 0x1a, 0x4b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, - 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x1a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0xa3, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, - 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, + 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, + 0x01, 0x2a, 0x1a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x12, 0xe9, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaf, 0x01, 0x92, 0x41, 0x47, - 0x1a, 0x45, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, - 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x5a, 0x37, 0x12, - 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0xb0, 0x02, 0x0a, - 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, 0x01, 0x92, 0x41, 0x45, 0x1a, - 0x43, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, - 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x3a, 0x01, 0x2a, 0x5a, 0x3a, 0x3a, - 0x01, 0x2a, 0x2a, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2a, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x92, 0x41, 0x47, 0x1a, 0x45, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, - 0xc5, 0x03, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xc5, 0x02, 0x92, 0x41, 0x66, 0x1a, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, - 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0xd5, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x74, 0x3a, 0x01, 0x2a, 0x1a, 0x6f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x1a, 0x5a, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xeb, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf4, - 0x01, 0x92, 0x41, 0x68, 0x1a, 0x66, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x82, 0x01, 0x5a, 0x45, 0x12, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, - 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xf8, 0x02, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0xf3, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, 0x92, 0x41, + 0x45, 0x1a, 0x43, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x2a, + 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0xce, 0x02, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf8, 0x01, 0x92, 0x41, 0x66, 0x1a, 0x64, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xce, 0x01, 0x92, 0x41, 0x66, 0x1a, 0x64, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x88, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x48, 0x3a, 0x01, 0x2a, - 0x2a, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6f, 0x72, - 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x2a, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, - 0x12, 0x8c, 0x02, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8f, 0x01, - 0x92, 0x41, 0x3e, 0x1a, 0x3c, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, - 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x5a, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, - 0x7d, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, - 0xc8, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x26, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xe9, - 0x01, 0x92, 0x41, 0x5d, 0x1a, 0x5b, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, - 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x73, 0x68, 0x61, - 0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x82, 0x01, 0x5a, 0x45, 0x12, 0x43, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, - 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xa6, 0x02, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 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, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 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, 0x22, 0xcf, 0x01, 0x92, 0x41, 0x20, 0x1a, 0x1e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, - 0x65, 0x20, 0x61, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa5, 0x01, 0x5a, 0x58, - 0x12, 0x56, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x3a, 0x01, 0x2a, 0x1a, 0x5a, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, + 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xa3, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xac, 0x01, + 0x92, 0x41, 0x68, 0x1a, 0x66, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, + 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xad, 0x02, 0x0a, + 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x01, 0x92, + 0x41, 0x66, 0x1a, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x63, 0x6f, 0x6d, + 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, + 0x2a, 0x2a, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xe1, 0x01, 0x0a, + 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0x92, 0x41, 0x3e, 0x1a, 0x3c, + 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, + 0x6f, 0x66, 0x20, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x12, 0x80, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x26, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, + 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, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0xa1, 0x01, 0x92, 0x41, 0x5d, 0x1a, 0x5b, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, + 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x73, 0x68, + 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x12, 0xd1, 0x02, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x28, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 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, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe6, - 0x01, 0x92, 0x41, 0x31, 0x1a, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xab, 0x01, 0x3a, 0x01, 0x2a, 0x5a, - 0x5b, 0x3a, 0x01, 0x2a, 0x1a, 0x56, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x1a, 0x49, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xbf, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x92, - 0x41, 0x50, 0x1a, 0x4e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x20, 0x69, - 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xef, 0x02, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x91, 0x02, 0x92, 0x41, 0x36, 0x1a, 0x34, 0x52, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd1, 0x01, 0x5a, 0x6e, 0x12, 0x6c, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x5f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x92, 0x04, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xa1, 0x03, 0x92, - 0x41, 0x47, 0x1a, 0x45, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd0, 0x02, - 0x5a, 0x5e, 0x12, 0x5c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x5a, 0x47, 0x12, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x5a, 0x54, 0x12, 0x52, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, - 0x4f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x7d, 0x12, 0xca, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 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, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 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, 0x22, 0x74, 0x92, 0x41, 0x20, 0x1a, + 0x1e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, + 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x12, 0xcf, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x1a, 0x33, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x22, 0xce, 0x01, 0x92, 0x41, 0x37, 0x1a, 0x35, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, - 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x8d, 0x01, 0x5a, 0x4c, 0x12, 0x4a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x12, 0x3d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x42, 0xc2, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x0a, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 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, + 0x12, 0xf3, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x28, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x29, 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, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x92, 0x41, + 0x31, 0x1a, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x1a, 0x49, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xbf, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x92, 0x41, + 0x50, 0x1a, 0x4e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x20, 0x69, 0x6e, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x46, + 0x6c, 0x79, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xfe, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xa0, 0x01, 0x92, 0x41, 0x36, 0x1a, 0x34, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x61, 0x12, 0x5f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, + 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0xdc, 0x02, 0x0a, 0x17, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xeb, 0x01, 0x92, 0x41, 0x47, + 0x1a, 0x45, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9a, 0x01, 0x5a, 0x47, + 0x12, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, + 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x4f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, + 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xff, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x12, 0x32, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 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, 0x1a, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x22, 0x7f, 0x92, 0x41, 0x37, 0x1a, 0x35, + 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, + 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x42, 0xc2, 0x01, 0x0a, 0x14, 0x63, + 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x42, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 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 file_flyteidl_service_admin_proto_goTypes = []interface{}{ diff --git a/flyteidl/gen/pb-go/flyteidl/service/signal.pb.go b/flyteidl/gen/pb-go/flyteidl/service/signal.pb.go index dd07d276929..d3864887b2c 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/signal.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/signal.pb.go @@ -34,7 +34,7 @@ var file_flyteidl_service_signal_proto_rawDesc = []byte{ 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xa9, 0x07, 0x0a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xe7, 0x05, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, @@ -45,68 +45,56 @@ var file_flyteidl_service_signal_proto_rawDesc = []byte{ 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2c, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x74, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x2e, 0x12, 0xa0, 0x03, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x2e, 0x12, 0x8e, 0x02, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x73, 0x74, - 0x22, 0xd1, 0x02, 0x92, 0x41, 0x49, 0x1a, 0x47, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, + 0x22, 0xbf, 0x01, 0x92, 0x41, 0x49, 0x1a, 0x47, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x20, 0x69, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0xfe, 0x01, 0x5a, 0x8e, 0x01, 0x12, 0x8b, 0x01, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x2f, - 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xe1, 0x02, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x02, 0x92, 0x41, 0xc0, 0x01, 0x1a, 0x13, - 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x20, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x2e, 0x4a, 0x42, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x3b, 0x0a, 0x39, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, - 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x65, 0x0a, 0x03, 0x34, 0x30, 0x39, 0x12, 0x5e, - 0x0a, 0x5c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, - 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x62, 0x65, - 0x65, 0x6e, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x5a, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x2f, 0x6f, 0x72, - 0x67, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x7d, 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x42, 0xc3, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x42, 0x0b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 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, + 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x12, 0xb1, 0x02, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xde, 0x01, 0x92, 0x41, 0xc0, 0x01, 0x1a, 0x13, 0x53, 0x65, + 0x74, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x2e, 0x4a, 0x42, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x3b, 0x0a, 0x39, 0x52, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x65, 0x0a, 0x03, 0x34, 0x30, 0x39, 0x12, 0x5e, 0x0a, 0x5c, + 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x62, 0x65, 0x65, 0x6e, + 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x42, 0xc3, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, + 0x0b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 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 file_flyteidl_service_signal_proto_goTypes = []interface{}{ diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.pb.gw.go b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.pb.gw.go index 771437d9f46..38a2f65f316 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.pb.gw.go +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.pb.gw.go @@ -68,74 +68,6 @@ func local_request_AdminService_CreateTask_0(ctx context.Context, marshaler runt } -func request_AdminService_CreateTask_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - msg, err := client.CreateTask(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_CreateTask_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - msg, err := server.CreateTask(ctx, &protoReq) - return msg, metadata, err - -} - var ( filter_AdminService_GetTask_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3, "version": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} ) @@ -266,156 +198,6 @@ func local_request_AdminService_GetTask_0(ctx context.Context, marshaler runtime } -var ( - filter_AdminService_GetTask_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4, "version": 5}, Base: []int{1, 10, 11, 12, 13, 14, 15, 2, 0, 4, 0, 6, 0, 8, 0, 10, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 3, 4, 5, 6, 7}} -) - -func request_AdminService_GetTask_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTask_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetTask(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetTask_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTask_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetTask(ctx, &protoReq) - return msg, metadata, err - -} - var ( filter_AdminService_ListTaskIds_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} ) @@ -507,11 +289,11 @@ func local_request_AdminService_ListTaskIds_0(ctx context.Context, marshaler run } var ( - filter_AdminService_ListTaskIds_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0, "project": 1, "domain": 2}, Base: []int{1, 2, 4, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 2, 3, 3, 4, 4}} + filter_AdminService_ListTasks_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} ) -func request_AdminService_ListTaskIds_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityIdentifierListRequest +func request_AdminService_ListTasks_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata var ( @@ -521,50 +303,50 @@ func request_AdminService_ListTaskIds_1(ctx context.Context, marshaler runtime.M _ = err ) - val, ok = pathParams["org"] + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - protoReq.Org, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["project"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTaskIds_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListTaskIds(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListTasks(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListTaskIds_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityIdentifierListRequest +func local_request_AdminService_ListTasks_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata var ( @@ -574,53 +356,53 @@ func local_request_AdminService_ListTaskIds_1(ctx context.Context, marshaler run _ = err ) - val, ok = pathParams["org"] + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - protoReq.Org, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["project"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTaskIds_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListTaskIds(ctx, &protoReq) + msg, err := server.ListTasks(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListTasks_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} + filter_AdminService_ListTasks_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2}, Base: []int{1, 4, 5, 6, 2, 0, 4, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 5, 2, 7, 3, 4}} ) -func request_AdminService_ListTasks_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func request_AdminService_ListTasks_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata @@ -651,30 +433,101 @@ func request_AdminService_ListTasks_0(ctx context.Context, marshaler runtime.Mar return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + msg, err := client.ListTasks(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_ListTasks_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ResourceListRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + } + + val, ok = pathParams["id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_1); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListTasks(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.ListTasks(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_ListTasks_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func request_AdminService_CreateWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowCreateRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.CreateWorkflow(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_CreateWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowCreateRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.CreateWorkflow(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_AdminService_GetWorkflow_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3, "version": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} +) + +func request_AdminService_GetWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ObjectGetRequest var metadata runtime.ServerMetadata var ( @@ -714,24 +567,30 @@ func local_request_AdminService_ListTasks_0(ctx context.Context, marshaler runti return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } + val, ok = pathParams["id.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) + } + if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflow_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListTasks(ctx, &protoReq) + msg, err := client.GetWorkflow(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_AdminService_ListTasks_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} -) - -func request_AdminService_ListTasks_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func local_request_AdminService_GetWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ObjectGetRequest var metadata runtime.ServerMetadata var ( @@ -741,16 +600,6 @@ func request_AdminService_ListTasks_1(ctx context.Context, marshaler runtime.Mar _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -781,20 +630,34 @@ func request_AdminService_ListTasks_1(ctx context.Context, marshaler runtime.Mar return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } + val, ok = pathParams["id.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) + } + if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflow_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListTasks(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.GetWorkflow(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_ListTasks_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +var ( + filter_AdminService_ListWorkflowIds_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} +) + +func request_AdminService_ListWorkflowIds_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NamedEntityIdentifierListRequest var metadata runtime.ServerMetadata var ( @@ -804,63 +667,86 @@ func local_request_AdminService_ListTasks_1(ctx context.Context, marshaler runti _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } - val, ok = pathParams["id.domain"] + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflowIds_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListWorkflowIds(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_ListWorkflowIds_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NamedEntityIdentifierListRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflowIds_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListTasks(ctx, &protoReq) + msg, err := server.ListWorkflowIds(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListTasks_2 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2}, Base: []int{1, 4, 5, 6, 2, 0, 4, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 5, 2, 7, 3, 4}} + filter_AdminService_ListWorkflows_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} ) -func request_AdminService_ListTasks_2(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func request_AdminService_ListWorkflows_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata @@ -891,19 +777,29 @@ func request_AdminService_ListTasks_2(ctx context.Context, marshaler runtime.Mar return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + } + if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_2); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListTasks(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListWorkflows(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListTasks_2(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func local_request_AdminService_ListWorkflows_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata @@ -934,23 +830,33 @@ func local_request_AdminService_ListTasks_2(ctx context.Context, marshaler runti return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + } + if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_2); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListTasks(ctx, &protoReq) + msg, err := server.ListWorkflows(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListTasks_3 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} + filter_AdminService_ListWorkflows_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2}, Base: []int{1, 4, 5, 6, 2, 0, 4, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 5, 2, 7, 3, 4}} ) -func request_AdminService_ListTasks_3(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func request_AdminService_ListWorkflows_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata @@ -961,16 +867,6 @@ func request_AdminService_ListTasks_3(ctx context.Context, marshaler runtime.Mar _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -994,16 +890,16 @@ func request_AdminService_ListTasks_3(ctx context.Context, marshaler runtime.Mar if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_3); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_1); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListTasks(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListWorkflows(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListTasks_3(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func local_request_AdminService_ListWorkflows_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata @@ -1014,16 +910,6 @@ func local_request_AdminService_ListTasks_3(ctx context.Context, marshaler runti _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -1047,17 +933,17 @@ func local_request_AdminService_ListTasks_3(ctx context.Context, marshaler runti if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTasks_3); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_1); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListTasks(ctx, &protoReq) + msg, err := server.ListWorkflows(ctx, &protoReq) return msg, metadata, err } -func request_AdminService_CreateWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowCreateRequest +func request_AdminService_CreateLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.LaunchPlanCreateRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -1068,13 +954,13 @@ func request_AdminService_CreateWorkflow_0(ctx context.Context, marshaler runtim return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.CreateWorkflow(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.CreateLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_CreateWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowCreateRequest +func local_request_AdminService_CreateLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.LaunchPlanCreateRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -1085,85 +971,17 @@ func local_request_AdminService_CreateWorkflow_0(ctx context.Context, marshaler return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.CreateWorkflow(ctx, &protoReq) + msg, err := server.CreateLaunchPlan(ctx, &protoReq) return msg, metadata, err } -func request_AdminService_CreateWorkflow_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - msg, err := client.CreateWorkflow(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_CreateWorkflow_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - msg, err := server.CreateWorkflow(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetWorkflow_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3, "version": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} -) - -func request_AdminService_GetWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest +var ( + filter_AdminService_GetLaunchPlan_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3, "version": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} +) + +func request_AdminService_GetLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ObjectGetRequest var metadata runtime.ServerMetadata var ( @@ -1216,16 +1034,16 @@ func request_AdminService_GetWorkflow_0(ctx context.Context, marshaler runtime.M if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflow_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetLaunchPlan_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetWorkflow(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func local_request_AdminService_GetLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ObjectGetRequest var metadata runtime.ServerMetadata @@ -1279,21 +1097,21 @@ func local_request_AdminService_GetWorkflow_0(ctx context.Context, marshaler run if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflow_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetLaunchPlan_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetWorkflow(ctx, &protoReq) + msg, err := server.GetLaunchPlan(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_GetWorkflow_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4, "version": 5}, Base: []int{1, 10, 11, 12, 13, 14, 15, 2, 0, 4, 0, 6, 0, 8, 0, 10, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 3, 4, 5, 6, 7}} + filter_AdminService_GetActiveLaunchPlan_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} ) -func request_AdminService_GetWorkflow_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest +func request_AdminService_GetActiveLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ActiveLaunchPlanRequest var metadata runtime.ServerMetadata var ( @@ -1303,16 +1121,6 @@ func request_AdminService_GetWorkflow_1(ctx context.Context, marshaler runtime.M _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -1343,30 +1151,20 @@ func request_AdminService_GetWorkflow_1(ctx context.Context, marshaler runtime.M return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflow_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetActiveLaunchPlan_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetWorkflow(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetActiveLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetWorkflow_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest +func local_request_AdminService_GetActiveLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ActiveLaunchPlanRequest var metadata runtime.ServerMetadata var ( @@ -1376,16 +1174,6 @@ func local_request_AdminService_GetWorkflow_1(ctx context.Context, marshaler run _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -1416,34 +1204,24 @@ func local_request_AdminService_GetWorkflow_1(ctx context.Context, marshaler run return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflow_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetActiveLaunchPlan_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetWorkflow(ctx, &protoReq) + msg, err := server.GetActiveLaunchPlan(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListWorkflowIds_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} + filter_AdminService_ListActiveLaunchPlans_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} ) -func request_AdminService_ListWorkflowIds_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityIdentifierListRequest +func request_AdminService_ListActiveLaunchPlans_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ActiveLaunchPlanListRequest var metadata runtime.ServerMetadata var ( @@ -1476,17 +1254,17 @@ func request_AdminService_ListWorkflowIds_0(ctx context.Context, marshaler runti if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflowIds_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListActiveLaunchPlans_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListWorkflowIds(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListActiveLaunchPlans(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListWorkflowIds_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityIdentifierListRequest +func local_request_AdminService_ListActiveLaunchPlans_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ActiveLaunchPlanListRequest var metadata runtime.ServerMetadata var ( @@ -1519,20 +1297,20 @@ func local_request_AdminService_ListWorkflowIds_0(ctx context.Context, marshaler if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflowIds_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListActiveLaunchPlans_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListWorkflowIds(ctx, &protoReq) + msg, err := server.ListActiveLaunchPlans(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListWorkflowIds_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0, "project": 1, "domain": 2}, Base: []int{1, 2, 4, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 2, 3, 3, 4, 4}} + filter_AdminService_ListLaunchPlanIds_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} ) -func request_AdminService_ListWorkflowIds_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func request_AdminService_ListLaunchPlanIds_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.NamedEntityIdentifierListRequest var metadata runtime.ServerMetadata @@ -1543,16 +1321,6 @@ func request_AdminService_ListWorkflowIds_1(ctx context.Context, marshaler runti _ = err ) - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - val, ok = pathParams["project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") @@ -1576,16 +1344,16 @@ func request_AdminService_ListWorkflowIds_1(ctx context.Context, marshaler runti if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflowIds_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlanIds_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListWorkflowIds(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListLaunchPlanIds(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListWorkflowIds_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func local_request_AdminService_ListLaunchPlanIds_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.NamedEntityIdentifierListRequest var metadata runtime.ServerMetadata @@ -1596,16 +1364,6 @@ func local_request_AdminService_ListWorkflowIds_1(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - val, ok = pathParams["project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") @@ -1629,20 +1387,20 @@ func local_request_AdminService_ListWorkflowIds_1(ctx context.Context, marshaler if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflowIds_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlanIds_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListWorkflowIds(ctx, &protoReq) + msg, err := server.ListLaunchPlanIds(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListWorkflows_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} + filter_AdminService_ListLaunchPlans_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} ) -func request_AdminService_ListWorkflows_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func request_AdminService_ListLaunchPlans_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata @@ -1686,16 +1444,16 @@ func request_AdminService_ListWorkflows_0(ctx context.Context, marshaler runtime if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListWorkflows(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListLaunchPlans(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListWorkflows_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func local_request_AdminService_ListLaunchPlans_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata @@ -1739,20 +1497,20 @@ func local_request_AdminService_ListWorkflows_0(ctx context.Context, marshaler r if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListWorkflows(ctx, &protoReq) + msg, err := server.ListLaunchPlans(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListWorkflows_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} + filter_AdminService_ListLaunchPlans_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2}, Base: []int{1, 4, 5, 6, 2, 0, 4, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 5, 2, 7, 3, 4}} ) -func request_AdminService_ListWorkflows_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func request_AdminService_ListLaunchPlans_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata @@ -1763,16 +1521,6 @@ func request_AdminService_ListWorkflows_1(ctx context.Context, marshaler runtime _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -1793,29 +1541,19 @@ func request_AdminService_ListWorkflows_1(ctx context.Context, marshaler runtime return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_1); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListWorkflows(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListLaunchPlans(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListWorkflows_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func local_request_AdminService_ListLaunchPlans_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata @@ -1826,16 +1564,6 @@ func local_request_AdminService_ListWorkflows_1(ctx context.Context, marshaler r _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -1856,36 +1584,30 @@ func local_request_AdminService_ListWorkflows_1(ctx context.Context, marshaler r return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_1); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListWorkflows(ctx, &protoReq) + msg, err := server.ListLaunchPlans(ctx, &protoReq) return msg, metadata, err } -var ( - filter_AdminService_ListWorkflows_2 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2}, Base: []int{1, 4, 5, 6, 2, 0, 4, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 5, 2, 7, 3, 4}} -) - -func request_AdminService_ListWorkflows_2(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func request_AdminService_UpdateLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.LaunchPlanUpdateRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1913,69 +1635,43 @@ func request_AdminService_ListWorkflows_2(ctx context.Context, marshaler runtime return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_2); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - msg, err := client.ListWorkflows(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + val, ok = pathParams["id.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) + } + + msg, err := client.UpdateLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListWorkflows_2(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func local_request_AdminService_UpdateLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.LaunchPlanUpdateRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_2); err != nil { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListWorkflows(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListWorkflows_3 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} -) - -func request_AdminService_ListWorkflows_3(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest - var metadata runtime.ServerMetadata - var ( val string ok bool @@ -1983,16 +1679,6 @@ func request_AdminService_ListWorkflows_3(ctx context.Context, marshaler runtime _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -2013,73 +1699,50 @@ func request_AdminService_ListWorkflows_3(ctx context.Context, marshaler runtime return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_3); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListWorkflows(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListWorkflows_3(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["id.version"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) } - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } + msg, err := server.UpdateLaunchPlan(ctx, &protoReq) + return msg, metadata, err - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } +} - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) +func request_AdminService_CreateExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionCreateRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListWorkflows_3); err != nil { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListWorkflows(ctx, &protoReq) + msg, err := client.CreateExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_AdminService_CreateLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.LaunchPlanCreateRequest +func local_request_AdminService_CreateExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionCreateRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -2090,13 +1753,13 @@ func request_AdminService_CreateLaunchPlan_0(ctx context.Context, marshaler runt return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.CreateLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.CreateExecution(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_CreateLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.LaunchPlanCreateRequest +func request_AdminService_RelaunchExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionRelaunchRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -2107,13 +1770,13 @@ func local_request_AdminService_CreateLaunchPlan_0(ctx context.Context, marshale return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.CreateLaunchPlan(ctx, &protoReq) + msg, err := client.RelaunchExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_AdminService_CreateLaunchPlan_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.LaunchPlanCreateRequest +func local_request_AdminService_RelaunchExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionRelaunchRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -2124,30 +1787,13 @@ func request_AdminService_CreateLaunchPlan_1(ctx context.Context, marshaler runt return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - msg, err := client.CreateLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.RelaunchExecution(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_CreateLaunchPlan_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.LaunchPlanCreateRequest +func request_AdminService_RecoverExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionRecoverRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -2158,34 +1804,34 @@ func local_request_AdminService_CreateLaunchPlan_1(ctx context.Context, marshale return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - var ( - val string - ok bool - err error - _ = err - ) + msg, err := client.RecoverExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } +} - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) +func local_request_AdminService_RecoverExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionRecoverRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.CreateLaunchPlan(ctx, &protoReq) + msg, err := server.RecoverExecution(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_GetLaunchPlan_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3, "version": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} + filter_AdminService_GetExecution_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} ) -func request_AdminService_GetLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest +func request_AdminService_GetExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowExecutionGetRequest var metadata runtime.ServerMetadata var ( @@ -2225,30 +1871,20 @@ func request_AdminService_GetLaunchPlan_0(ctx context.Context, marshaler runtime return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetLaunchPlan_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecution_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest +func local_request_AdminService_GetExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowExecutionGetRequest var metadata runtime.ServerMetadata var ( @@ -2288,36 +1924,30 @@ func local_request_AdminService_GetLaunchPlan_0(ctx context.Context, marshaler r return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetLaunchPlan_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecution_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetLaunchPlan(ctx, &protoReq) + msg, err := server.GetExecution(ctx, &protoReq) return msg, metadata, err } -var ( - filter_AdminService_GetLaunchPlan_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4, "version": 5}, Base: []int{1, 10, 11, 12, 13, 14, 15, 2, 0, 4, 0, 6, 0, 8, 0, 10, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 3, 4, 5, 6, 7}} -) - -func request_AdminService_GetLaunchPlan_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest +func request_AdminService_UpdateExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionUpdateRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -2325,16 +1955,6 @@ func request_AdminService_GetLaunchPlan_1(ctx context.Context, marshaler runtime _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -2365,32 +1985,23 @@ func request_AdminService_GetLaunchPlan_1(ctx context.Context, marshaler runtime return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetLaunchPlan_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.UpdateExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetLaunchPlan_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest +func local_request_AdminService_UpdateExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionUpdateRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -2398,16 +2009,6 @@ func local_request_AdminService_GetLaunchPlan_1(ctx context.Context, marshaler r _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -2438,34 +2039,17 @@ func local_request_AdminService_GetLaunchPlan_1(ctx context.Context, marshaler r return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetLaunchPlan_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetLaunchPlan(ctx, &protoReq) + msg, err := server.UpdateExecution(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_GetActiveLaunchPlan_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} + filter_AdminService_GetExecutionData_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} ) -func request_AdminService_GetActiveLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ActiveLaunchPlanRequest +func request_AdminService_GetExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowExecutionGetDataRequest var metadata runtime.ServerMetadata var ( @@ -2508,17 +2092,17 @@ func request_AdminService_GetActiveLaunchPlan_0(ctx context.Context, marshaler r if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetActiveLaunchPlan_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionData_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetActiveLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetExecutionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetActiveLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ActiveLaunchPlanRequest +func local_request_AdminService_GetExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowExecutionGetDataRequest var metadata runtime.ServerMetadata var ( @@ -2561,21 +2145,21 @@ func local_request_AdminService_GetActiveLaunchPlan_0(ctx context.Context, marsh if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetActiveLaunchPlan_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionData_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetActiveLaunchPlan(ctx, &protoReq) + msg, err := server.GetExecutionData(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_GetActiveLaunchPlan_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} + filter_AdminService_ListExecutions_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2}, Base: []int{1, 4, 5, 6, 2, 0, 4, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 5, 2, 7, 3, 4}} ) -func request_AdminService_GetActiveLaunchPlan_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ActiveLaunchPlanRequest +func request_AdminService_ListExecutions_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata var ( @@ -2585,16 +2169,6 @@ func request_AdminService_GetActiveLaunchPlan_1(ctx context.Context, marshaler r _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -2615,30 +2189,20 @@ func request_AdminService_GetActiveLaunchPlan_1(ctx context.Context, marshaler r return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetActiveLaunchPlan_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListExecutions_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetActiveLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListExecutions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetActiveLaunchPlan_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ActiveLaunchPlanRequest +func local_request_AdminService_ListExecutions_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ResourceListRequest var metadata runtime.ServerMetadata var ( @@ -2648,16 +2212,6 @@ func local_request_AdminService_GetActiveLaunchPlan_1(ctx context.Context, marsh _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - val, ok = pathParams["id.project"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") @@ -2678,36 +2232,30 @@ func local_request_AdminService_GetActiveLaunchPlan_1(ctx context.Context, marsh return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetActiveLaunchPlan_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListExecutions_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetActiveLaunchPlan(ctx, &protoReq) + msg, err := server.ListExecutions(ctx, &protoReq) return msg, metadata, err } -var ( - filter_AdminService_ListActiveLaunchPlans_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} -) - -func request_AdminService_ListActiveLaunchPlans_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ActiveLaunchPlanListRequest +func request_AdminService_TerminateExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionTerminateRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -2715,42 +2263,53 @@ func request_AdminService_ListActiveLaunchPlans_0(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["project"] + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListActiveLaunchPlans_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - msg, err := client.ListActiveLaunchPlans(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.TerminateExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListActiveLaunchPlans_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ActiveLaunchPlanListRequest +func local_request_AdminService_TerminateExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ExecutionTerminateRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -2758,44 +2317,47 @@ func local_request_AdminService_ListActiveLaunchPlans_0(ctx context.Context, mar _ = err ) - val, ok = pathParams["project"] + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListActiveLaunchPlans_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - msg, err := server.ListActiveLaunchPlans(ctx, &protoReq) + msg, err := server.TerminateExecution(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListActiveLaunchPlans_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0, "project": 1, "domain": 2}, Base: []int{1, 2, 4, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 2, 3, 3, 4, 4}} + filter_AdminService_GetNodeExecution_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "execution_id": 1, "project": 2, "domain": 3, "name": 4, "node_id": 5, "nodeId": 6}, Base: []int{1, 10, 4, 10, 11, 12, 1, 13, 0, 7, 4, 0, 9, 7, 0, 9, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 3, 1, 7, 2, 10, 11, 2, 13, 14, 2, 16, 4, 5, 6, 8}} ) -func request_AdminService_ListActiveLaunchPlans_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ActiveLaunchPlanListRequest +func request_AdminService_GetNodeExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionGetRequest var metadata runtime.ServerMetadata var ( @@ -2805,50 +2367,60 @@ func request_AdminService_ListActiveLaunchPlans_1(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["org"] + val, ok = pathParams["id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") } - protoReq.Org, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) } - val, ok = pathParams["project"] + val, ok = pathParams["id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + } + + val, ok = pathParams["id.node_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListActiveLaunchPlans_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecution_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListActiveLaunchPlans(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetNodeExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListActiveLaunchPlans_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ActiveLaunchPlanListRequest +func local_request_AdminService_GetNodeExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionGetRequest var metadata runtime.ServerMetadata var ( @@ -2858,54 +2430,64 @@ func local_request_AdminService_ListActiveLaunchPlans_1(ctx context.Context, mar _ = err ) - val, ok = pathParams["org"] + val, ok = pathParams["id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") } - protoReq.Org, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) } - val, ok = pathParams["project"] + val, ok = pathParams["id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + } + + val, ok = pathParams["id.node_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListActiveLaunchPlans_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecution_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListActiveLaunchPlans(ctx, &protoReq) + msg, err := server.GetNodeExecution(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListLaunchPlanIds_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} + filter_AdminService_GetDynamicNodeWorkflow_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "execution_id": 1, "project": 2, "domain": 3, "name": 4, "node_id": 5, "nodeId": 6}, Base: []int{1, 10, 4, 10, 11, 12, 1, 13, 0, 7, 4, 0, 9, 7, 0, 9, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 3, 1, 7, 2, 10, 11, 2, 13, 14, 2, 16, 4, 5, 6, 8}} ) -func request_AdminService_ListLaunchPlanIds_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityIdentifierListRequest +func request_AdminService_GetDynamicNodeWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.GetDynamicNodeWorkflowRequest var metadata runtime.ServerMetadata var ( @@ -2915,40 +2497,60 @@ func request_AdminService_ListLaunchPlanIds_0(ctx context.Context, marshaler run _ = err ) - val, ok = pathParams["project"] + val, ok = pathParams["id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) + } + + val, ok = pathParams["id.execution_id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + } + + val, ok = pathParams["id.node_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlanIds_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDynamicNodeWorkflow_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListLaunchPlanIds(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetDynamicNodeWorkflow(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListLaunchPlanIds_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityIdentifierListRequest +func local_request_AdminService_GetDynamicNodeWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.GetDynamicNodeWorkflowRequest var metadata runtime.ServerMetadata var ( @@ -2958,44 +2560,64 @@ func local_request_AdminService_ListLaunchPlanIds_0(ctx context.Context, marshal _ = err ) - val, ok = pathParams["project"] + val, ok = pathParams["id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) + } + + val, ok = pathParams["id.execution_id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + } + + val, ok = pathParams["id.node_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlanIds_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDynamicNodeWorkflow_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListLaunchPlanIds(ctx, &protoReq) + msg, err := server.GetDynamicNodeWorkflow(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListLaunchPlanIds_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0, "project": 1, "domain": 2}, Base: []int{1, 2, 4, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 2, 3, 3, 4, 4}} + filter_AdminService_ListNodeExecutions_0 = &utilities.DoubleArray{Encoding: map[string]int{"workflow_execution_id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} ) -func request_AdminService_ListLaunchPlanIds_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityIdentifierListRequest +func request_AdminService_ListNodeExecutions_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionListRequest var metadata runtime.ServerMetadata var ( @@ -3005,50 +2627,50 @@ func request_AdminService_ListLaunchPlanIds_1(ctx context.Context, marshaler run _ = err ) - val, ok = pathParams["org"] + val, ok = pathParams["workflow_execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.project") } - protoReq.Org, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.project", err) } - val, ok = pathParams["project"] + val, ok = pathParams["workflow_execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.domain") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.domain", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["workflow_execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.name") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlanIds_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutions_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListLaunchPlanIds(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListNodeExecutions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListLaunchPlanIds_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityIdentifierListRequest +func local_request_AdminService_ListNodeExecutions_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionListRequest var metadata runtime.ServerMetadata var ( @@ -3058,54 +2680,54 @@ func local_request_AdminService_ListLaunchPlanIds_1(ctx context.Context, marshal _ = err ) - val, ok = pathParams["org"] + val, ok = pathParams["workflow_execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.project") } - protoReq.Org, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.project", err) } - val, ok = pathParams["project"] + val, ok = pathParams["workflow_execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.domain") } - protoReq.Project, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.domain", err) } - val, ok = pathParams["domain"] + val, ok = pathParams["workflow_execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.name") } - protoReq.Domain, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlanIds_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutions_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListLaunchPlanIds(ctx, &protoReq) + msg, err := server.ListNodeExecutions(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListLaunchPlans_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} + filter_AdminService_ListNodeExecutionsForTask_0 = &utilities.DoubleArray{Encoding: map[string]int{"task_execution_id": 0, "node_execution_id": 1, "execution_id": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7, "task_id": 8, "version": 9, "retry_attempt": 10, "retryAttempt": 11}, Base: []int{1, 25, 1, 4, 26, 28, 30, 1, 31, 9, 32, 10, 33, 0, 3, 0, 15, 13, 7, 0, 15, 10, 0, 21, 13, 0, 23, 16, 0, 25, 19, 0, 24, 22, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 3, 1, 1, 1, 4, 1, 2, 1, 10, 1, 8, 12, 15, 2, 17, 18, 19, 2, 21, 22, 2, 24, 25, 2, 27, 28, 2, 30, 31, 2, 33, 34, 2, 36, 5, 5, 6, 6, 7, 7, 9, 11, 13}} ) -func request_AdminService_ListLaunchPlans_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func request_AdminService_ListNodeExecutionsForTask_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionForTaskListRequest var metadata runtime.ServerMetadata var ( @@ -3115,107 +2737,110 @@ func request_AdminService_ListLaunchPlans_0(ctx context.Context, marshaler runti _ = err ) - val, ok = pathParams["id.project"] + val, ok = pathParams["task_execution_id.node_execution_id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.project", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["task_execution_id.node_execution_id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.domain", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["task_execution_id.node_execution_id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.name", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["task_execution_id.node_execution_id.node_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.node_id") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.node_id", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.node_id", err) } - msg, err := client.ListLaunchPlans(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err + val, ok = pathParams["task_execution_id.task_id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.project") + } -} + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.project", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.project", err) + } -func local_request_AdminService_ListLaunchPlans_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest - var metadata runtime.ServerMetadata + val, ok = pathParams["task_execution_id.task_id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.domain") + } - var ( - val string - ok bool - err error - _ = err - ) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.domain", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.domain", err) + } - val, ok = pathParams["id.project"] + val, ok = pathParams["task_execution_id.task_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.name", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["task_execution_id.task_id.version"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.version") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.version", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.version", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["task_execution_id.retry_attempt"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.retry_attempt") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.retry_attempt", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.retry_attempt", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutionsForTask_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListLaunchPlans(ctx, &protoReq) + msg, err := client.ListNodeExecutionsForTask(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_AdminService_ListLaunchPlans_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} -) - -func request_AdminService_ListLaunchPlans_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func local_request_AdminService_ListNodeExecutionsForTask_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionForTaskListRequest var metadata runtime.ServerMetadata var ( @@ -3225,127 +2850,114 @@ func request_AdminService_ListLaunchPlans_1(ctx context.Context, marshaler runti _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["task_execution_id.node_execution_id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.project", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["task_execution_id.node_execution_id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.domain", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["task_execution_id.node_execution_id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.name", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["task_execution_id.node_execution_id.node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.node_id") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.node_id", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.node_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["task_execution_id.task_id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.project") } - msg, err := client.ListLaunchPlans(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListLaunchPlans_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.project", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.project", err) + } - val, ok = pathParams["id.org"] + val, ok = pathParams["task_execution_id.task_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.domain", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["task_execution_id.task_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.name", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["task_execution_id.task_id.version"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.version") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.version", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.version", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["task_execution_id.retry_attempt"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.retry_attempt") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.retry_attempt", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.retry_attempt", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutionsForTask_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListLaunchPlans(ctx, &protoReq) + msg, err := server.ListNodeExecutionsForTask(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListLaunchPlans_2 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2}, Base: []int{1, 4, 5, 6, 2, 0, 4, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 5, 2, 7, 3, 4}} + filter_AdminService_GetNodeExecutionData_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "execution_id": 1, "project": 2, "domain": 3, "name": 4, "node_id": 5, "nodeId": 6}, Base: []int{1, 10, 4, 10, 11, 12, 1, 13, 0, 7, 4, 0, 9, 7, 0, 9, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 3, 1, 7, 2, 10, 11, 2, 13, 14, 2, 16, 4, 5, 6, 8}} ) -func request_AdminService_ListLaunchPlans_2(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func request_AdminService_GetNodeExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionGetDataRequest var metadata runtime.ServerMetadata var ( @@ -3355,87 +2967,60 @@ func request_AdminService_ListLaunchPlans_2(ctx context.Context, marshaler runti _ = err ) - val, ok = pathParams["id.project"] + val, ok = pathParams["id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_2); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) } - msg, err := client.ListLaunchPlans(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListLaunchPlans_2(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.project"] + val, ok = pathParams["id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["id.node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_2); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecutionData_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListLaunchPlans(ctx, &protoReq) + msg, err := client.GetNodeExecutionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_AdminService_ListLaunchPlans_3 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} -) - -func request_AdminService_ListLaunchPlans_3(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func local_request_AdminService_GetNodeExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionGetDataRequest var metadata runtime.ServerMetadata var ( @@ -3445,103 +3030,94 @@ func request_AdminService_ListLaunchPlans_3(ctx context.Context, marshaler runti _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["id.execution_id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) + } + + val, ok = pathParams["id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["id.node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_3); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecutionData_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListLaunchPlans(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.GetNodeExecutionData(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_ListLaunchPlans_3(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func request_AdminService_RegisterProject_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectRegisterRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } + msg, err := client.RegisterProject(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } +} - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } +func local_request_AdminService_RegisterProject_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectRegisterRequest + var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListLaunchPlans_3); err != nil { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListLaunchPlans(ctx, &protoReq) + msg, err := server.RegisterProject(ctx, &protoReq) return msg, metadata, err } -func request_AdminService_UpdateLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.LaunchPlanUpdateRequest +func request_AdminService_UpdateProject_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.Project var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -3559,53 +3135,23 @@ func request_AdminService_UpdateLaunchPlan_0(ctx context.Context, marshaler runt _ = err ) - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] + val, ok = pathParams["id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) + protoReq.Id, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.UpdateLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.UpdateProject(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_UpdateLaunchPlan_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.LaunchPlanUpdateRequest +func local_request_AdminService_UpdateProject_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.Project var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -3623,203 +3169,59 @@ func local_request_AdminService_UpdateLaunchPlan_0(ctx context.Context, marshale _ = err ) - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] + val, ok = pathParams["id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) + protoReq.Id, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := server.UpdateLaunchPlan(ctx, &protoReq) + msg, err := server.UpdateProject(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_UpdateLaunchPlan_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4, "version": 5}, Base: []int{1, 10, 11, 12, 13, 14, 15, 2, 0, 4, 0, 6, 0, 8, 0, 10, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 3, 4, 5, 6, 7}} + filter_AdminService_ListProjects_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) -func request_AdminService_UpdateLaunchPlan_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.LaunchPlanUpdateRequest +func request_AdminService_ListProjects_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectListRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_UpdateLaunchPlan_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListProjects_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.UpdateLaunchPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListProjects(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_UpdateLaunchPlan_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.LaunchPlanUpdateRequest +func local_request_AdminService_ListProjects_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectListRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_UpdateLaunchPlan_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListProjects_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.UpdateLaunchPlan(ctx, &protoReq) + msg, err := server.ListProjects(ctx, &protoReq) return msg, metadata, err } -func request_AdminService_CreateExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionCreateRequest +func request_AdminService_CreateWorkflowEvent_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowExecutionEventRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -3830,13 +3232,13 @@ func request_AdminService_CreateExecution_0(ctx context.Context, marshaler runti return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.CreateExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.CreateWorkflowEvent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_CreateExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionCreateRequest +func local_request_AdminService_CreateWorkflowEvent_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowExecutionEventRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -3847,13 +3249,13 @@ func local_request_AdminService_CreateExecution_0(ctx context.Context, marshaler return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.CreateExecution(ctx, &protoReq) + msg, err := server.CreateWorkflowEvent(ctx, &protoReq) return msg, metadata, err } -func request_AdminService_CreateExecution_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionCreateRequest +func request_AdminService_CreateNodeEvent_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionEventRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -3864,30 +3266,13 @@ func request_AdminService_CreateExecution_1(ctx context.Context, marshaler runti return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - msg, err := client.CreateExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.CreateNodeEvent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_CreateExecution_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionCreateRequest +func local_request_AdminService_CreateNodeEvent_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NodeExecutionEventRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -3898,30 +3283,13 @@ func local_request_AdminService_CreateExecution_1(ctx context.Context, marshaler return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - msg, err := server.CreateExecution(ctx, &protoReq) + msg, err := server.CreateNodeEvent(ctx, &protoReq) return msg, metadata, err } -func request_AdminService_RelaunchExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionRelaunchRequest +func request_AdminService_CreateTaskEvent_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.TaskExecutionEventRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -3932,13 +3300,13 @@ func request_AdminService_RelaunchExecution_0(ctx context.Context, marshaler run return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.RelaunchExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.CreateTaskEvent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_RelaunchExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionRelaunchRequest +func local_request_AdminService_CreateTaskEvent_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.TaskExecutionEventRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -3949,22 +3317,18 @@ func local_request_AdminService_RelaunchExecution_0(ctx context.Context, marshal return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.RelaunchExecution(ctx, &protoReq) + msg, err := server.CreateTaskEvent(ctx, &protoReq) return msg, metadata, err } -func request_AdminService_RelaunchExecution_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionRelaunchRequest - var metadata runtime.ServerMetadata +var ( + filter_AdminService_GetTaskExecution_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "node_execution_id": 1, "execution_id": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7, "task_id": 8, "version": 9, "retry_attempt": 10, "retryAttempt": 11}, Base: []int{1, 25, 1, 4, 26, 28, 30, 1, 31, 9, 32, 10, 33, 0, 3, 0, 15, 13, 7, 0, 15, 10, 0, 21, 13, 0, 23, 16, 0, 25, 19, 0, 24, 22, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 3, 1, 1, 1, 4, 1, 2, 1, 10, 1, 8, 12, 15, 2, 17, 18, 19, 2, 21, 22, 2, 24, 25, 2, 27, 28, 2, 30, 31, 2, 33, 34, 2, 36, 5, 5, 6, 6, 7, 7, 9, 11, 13}} +) - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } +func request_AdminService_GetTaskExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.TaskExecutionGetRequest + var metadata runtime.ServerMetadata var ( val string @@ -3973,101 +3337,112 @@ func request_AdminService_RelaunchExecution_1(ctx context.Context, marshaler run _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["id.node_execution_id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) } - msg, err := client.RelaunchExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err + val, ok = pathParams["id.node_execution_id.execution_id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") + } -} + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) + } -func local_request_AdminService_RelaunchExecution_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionRelaunchRequest - var metadata runtime.ServerMetadata + val, ok = pathParams["id.node_execution_id.execution_id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") + } - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + val, ok = pathParams["id.node_execution_id.node_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") } - var ( - val string - ok bool - err error - _ = err - ) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) + } - val, ok = pathParams["id.org"] + val, ok = pathParams["id.task_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) } - msg, err := server.RelaunchExecution(ctx, &protoReq) - return msg, metadata, err + val, ok = pathParams["id.task_id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") + } -} + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) + } -func request_AdminService_RecoverExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionRecoverRequest - var metadata runtime.ServerMetadata + val, ok = pathParams["id.task_id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") + } - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + val, ok = pathParams["id.task_id.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") } - msg, err := client.RecoverExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) + } -} + val, ok = pathParams["id.retry_attempt"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") + } -func local_request_AdminService_RecoverExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionRecoverRequest - var metadata runtime.ServerMetadata + err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) + } - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecution_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.RecoverExecution(ctx, &protoReq) + msg, err := client.GetTaskExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_AdminService_RecoverExecution_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionRecoverRequest +func local_request_AdminService_GetTaskExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.TaskExecutionGetRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - var ( val string ok bool @@ -4075,114 +3450,114 @@ func request_AdminService_RecoverExecution_1(ctx context.Context, marshaler runt _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["id.node_execution_id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) } - msg, err := client.RecoverExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_RecoverExecution_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionRecoverRequest - var metadata runtime.ServerMetadata + val, ok = pathParams["id.node_execution_id.execution_id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") + } - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + val, ok = pathParams["id.node_execution_id.execution_id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") } - var ( - val string - ok bool - err error - _ = err - ) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) + } - val, ok = pathParams["id.org"] + val, ok = pathParams["id.node_execution_id.node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) } - msg, err := server.RecoverExecution(ctx, &protoReq) - return msg, metadata, err - -} + val, ok = pathParams["id.task_id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") + } -var ( - filter_AdminService_GetExecution_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} -) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) + } -func request_AdminService_GetExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetRequest - var metadata runtime.ServerMetadata + val, ok = pathParams["id.task_id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") + } - var ( - val string - ok bool - err error - _ = err - ) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) + } - val, ok = pathParams["id.project"] + val, ok = pathParams["id.task_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["id.task_id.version"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["id.retry_attempt"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecution_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecution_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.GetTaskExecution(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_GetExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetRequest +var ( + filter_AdminService_ListTaskExecutions_0 = &utilities.DoubleArray{Encoding: map[string]int{"node_execution_id": 0, "execution_id": 1, "project": 2, "domain": 3, "name": 4, "node_id": 5, "nodeId": 6}, Base: []int{1, 10, 4, 10, 11, 12, 1, 13, 0, 7, 4, 0, 9, 7, 0, 9, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 3, 1, 7, 2, 10, 11, 2, 13, 14, 2, 16, 4, 5, 6, 8}} +) + +func request_AdminService_ListTaskExecutions_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.TaskExecutionListRequest var metadata runtime.ServerMetadata var ( @@ -4192,54 +3567,60 @@ func local_request_AdminService_GetExecution_0(ctx context.Context, marshaler ru _ = err ) - val, ok = pathParams["id.project"] + val, ok = pathParams["node_execution_id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.project", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["node_execution_id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.domain", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["node_execution_id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.name", err) + } + + val, ok = pathParams["node_execution_id.node_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.node_id") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.node_id", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.node_id", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecution_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTaskExecutions_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetExecution(ctx, &protoReq) + msg, err := client.ListTaskExecutions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_AdminService_GetExecution_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} -) - -func request_AdminService_GetExecution_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetRequest +func local_request_AdminService_ListTaskExecutions_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.TaskExecutionListRequest var metadata runtime.ServerMetadata var ( @@ -4249,60 +3630,64 @@ func request_AdminService_GetExecution_1(ctx context.Context, marshaler runtime. _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["node_execution_id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.project", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["node_execution_id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.domain", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["node_execution_id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.name", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["node_execution_id.node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.node_id") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.node_id", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.node_id", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecution_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTaskExecutions_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.ListTaskExecutions(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_GetExecution_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetRequest +var ( + filter_AdminService_GetTaskExecutionData_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "node_execution_id": 1, "execution_id": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7, "task_id": 8, "version": 9, "retry_attempt": 10, "retryAttempt": 11}, Base: []int{1, 25, 1, 4, 26, 28, 30, 1, 31, 9, 32, 10, 33, 0, 3, 0, 15, 13, 7, 0, 15, 10, 0, 21, 13, 0, 23, 16, 0, 25, 19, 0, 24, 22, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 3, 1, 1, 1, 4, 1, 2, 1, 10, 1, 8, 12, 15, 2, 17, 18, 19, 2, 21, 22, 2, 24, 25, 2, 27, 28, 2, 30, 31, 2, 33, 34, 2, 36, 5, 5, 6, 6, 7, 7, 9, 11, 13}} +) + +func request_AdminService_GetTaskExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.TaskExecutionGetDataRequest var metadata runtime.ServerMetadata var ( @@ -4312,124 +3697,112 @@ func local_request_AdminService_GetExecution_1(ctx context.Context, marshaler ru _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["id.node_execution_id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["id.node_execution_id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["id.node_execution_id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["id.node_execution_id.node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecution_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["id.task_id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") } - msg, err := server.GetExecution(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + val, ok = pathParams["id.task_id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") } - var ( - val string - ok bool - err error - _ = err - ) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) + } - val, ok = pathParams["id.project"] + val, ok = pathParams["id.task_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["id.task_id.version"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["id.retry_attempt"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) } - msg, err := client.UpdateExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecutionData_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetTaskExecutionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_UpdateExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionUpdateRequest +func local_request_AdminService_GetTaskExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.TaskExecutionGetDataRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - var ( val string ok bool @@ -4437,107 +3810,110 @@ func local_request_AdminService_UpdateExecution_0(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["id.project"] + val, ok = pathParams["id.node_execution_id.execution_id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["id.node_execution_id.execution_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["id.node_execution_id.execution_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) } - msg, err := server.UpdateExecution(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateExecution_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionUpdateRequest - var metadata runtime.ServerMetadata + val, ok = pathParams["id.node_execution_id.node_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") + } - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + val, ok = pathParams["id.task_id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") } - var ( - val string - ok bool - err error - _ = err - ) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) + } - val, ok = pathParams["id.org"] + val, ok = pathParams["id.task_id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["id.task_id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["id.task_id.version"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["id.retry_attempt"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) } - msg, err := client.UpdateExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecutionData_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetTaskExecutionData(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_UpdateExecution_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionUpdateRequest +func request_AdminService_UpdateProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectDomainAttributesUpdateRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -4555,57 +3931,81 @@ func local_request_AdminService_UpdateExecution_1(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["attributes.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["attributes.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) } - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } + msg, err := client.UpdateProjectDomainAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) +} + +func local_request_AdminService_UpdateProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectDomainAttributesUpdateRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - val, ok = pathParams["id.name"] + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["attributes.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) } - msg, err := server.UpdateExecution(ctx, &protoReq) + val, ok = pathParams["attributes.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) + } + + msg, err := server.UpdateProjectDomainAttributes(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_GetExecutionData_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} + filter_AdminService_GetProjectDomainAttributes_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} ) -func request_AdminService_GetExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetDataRequest +func request_AdminService_GetProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectDomainAttributesGetRequest var metadata runtime.ServerMetadata var ( @@ -4615,50 +4015,40 @@ func request_AdminService_GetExecutionData_0(ctx context.Context, marshaler runt _ = err ) - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionData_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectDomainAttributes_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetExecutionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetProjectDomainAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetDataRequest +func local_request_AdminService_GetProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectDomainAttributesGetRequest var metadata runtime.ServerMetadata var ( @@ -4668,56 +4058,50 @@ func local_request_AdminService_GetExecutionData_0(ctx context.Context, marshale _ = err ) - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionData_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectDomainAttributes_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetExecutionData(ctx, &protoReq) + msg, err := server.GetProjectDomainAttributes(ctx, &protoReq) return msg, metadata, err } -var ( - filter_AdminService_GetExecutionData_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} -) - -func request_AdminService_GetExecutionData_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetDataRequest +func request_AdminService_DeleteProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectDomainAttributesDeleteRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -4725,62 +4109,87 @@ func request_AdminService_GetExecutionData_1(ctx context.Context, marshaler runt _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } + msg, err := client.DeleteProjectDomainAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) +} + +func local_request_AdminService_DeleteProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectDomainAttributesDeleteRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - val, ok = pathParams["id.name"] + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionData_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + protoReq.Domain, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } - msg, err := client.GetExecutionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.DeleteProjectDomainAttributes(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_GetExecutionData_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetDataRequest +func request_AdminService_UpdateProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectAttributesUpdateRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -4788,64 +4197,61 @@ func local_request_AdminService_GetExecutionData_1(ctx context.Context, marshale _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["attributes.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) } - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } + msg, err := client.UpdateProjectAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } +} - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } +func local_request_AdminService_UpdateProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectAttributesUpdateRequest + var metadata runtime.ServerMetadata - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - val, ok = pathParams["id.name"] + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["attributes.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionData_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) } - msg, err := server.GetExecutionData(ctx, &protoReq) + msg, err := server.UpdateProjectAttributes(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListExecutions_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2}, Base: []int{1, 4, 5, 6, 2, 0, 4, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 5, 2, 7, 3, 4}} + filter_AdminService_GetProjectAttributes_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0}, Base: []int{1, 2, 0, 0}, Check: []int{0, 1, 2, 2}} ) -func request_AdminService_ListExecutions_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func request_AdminService_GetProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectAttributesGetRequest var metadata runtime.ServerMetadata var ( @@ -4855,40 +4261,30 @@ func request_AdminService_ListExecutions_0(ctx context.Context, marshaler runtim _ = err ) - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListExecutions_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectAttributes_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListExecutions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetProjectAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListExecutions_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func local_request_AdminService_GetProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectAttributesGetRequest var metadata runtime.ServerMetadata var ( @@ -4898,46 +4294,40 @@ func local_request_AdminService_ListExecutions_0(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListExecutions_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectAttributes_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListExecutions(ctx, &protoReq) + msg, err := server.GetProjectAttributes(ctx, &protoReq) return msg, metadata, err } -var ( - filter_AdminService_ListExecutions_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} -) - -func request_AdminService_ListExecutions_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest +func request_AdminService_DeleteProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectAttributesDeleteRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -4945,52 +4335,33 @@ func request_AdminService_ListExecutions_1(ctx context.Context, marshaler runtim _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } + msg, err := client.DeleteProjectAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } +} - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } +func local_request_AdminService_DeleteProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectAttributesDeleteRequest + var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListExecutions_1); err != nil { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListExecutions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListExecutions_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ResourceListRequest - var metadata runtime.ServerMetadata - var ( val string ok bool @@ -4998,50 +4369,23 @@ func local_request_AdminService_ListExecutions_1(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListExecutions_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - msg, err := server.ListExecutions(ctx, &protoReq) + msg, err := server.DeleteProjectAttributes(ctx, &protoReq) return msg, metadata, err } -func request_AdminService_TerminateExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionTerminateRequest +func request_AdminService_UpdateWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowAttributesUpdateRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -5059,43 +4403,43 @@ func request_AdminService_TerminateExecution_0(ctx context.Context, marshaler ru _ = err ) - val, ok = pathParams["id.project"] + val, ok = pathParams["attributes.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["attributes.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["attributes.workflow"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.workflow") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.workflow", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.workflow", err) } - msg, err := client.TerminateExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.UpdateWorkflowAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_TerminateExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionTerminateRequest +func local_request_AdminService_UpdateWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowAttributesUpdateRequest var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -5113,52 +4457,48 @@ func local_request_AdminService_TerminateExecution_0(ctx context.Context, marsha _ = err ) - val, ok = pathParams["id.project"] + val, ok = pathParams["attributes.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["attributes.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) } - val, ok = pathParams["id.name"] + val, ok = pathParams["attributes.workflow"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.workflow") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "attributes.workflow", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.workflow", err) } - msg, err := server.TerminateExecution(ctx, &protoReq) + msg, err := server.UpdateWorkflowAttributes(ctx, &protoReq) return msg, metadata, err } -func request_AdminService_TerminateExecution_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionTerminateRequest - var metadata runtime.ServerMetadata +var ( + filter_AdminService_GetWorkflowAttributes_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1, "workflow": 2}, Base: []int{1, 2, 4, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 2, 3, 3, 4, 4}} +) - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } +func request_AdminService_GetWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowAttributesGetRequest + var metadata runtime.ServerMetadata var ( val string @@ -5167,63 +4507,52 @@ func request_AdminService_TerminateExecution_1(ctx context.Context, marshaler ru _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["workflow"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + protoReq.Workflow, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) } - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflowAttributes_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.TerminateExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetWorkflowAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_TerminateExecution_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ExecutionTerminateRequest +func local_request_AdminService_GetWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowAttributesGetRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - var ( val string ok bool @@ -5231,59 +4560,60 @@ func local_request_AdminService_TerminateExecution_1(ctx context.Context, marsha _ = err ) - val, ok = pathParams["id.org"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.project"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } - val, ok = pathParams["id.domain"] + val, ok = pathParams["workflow"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + protoReq.Workflow, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) } - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflowAttributes_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.TerminateExecution(ctx, &protoReq) + msg, err := server.GetWorkflowAttributes(ctx, &protoReq) return msg, metadata, err } -var ( - filter_AdminService_GetNodeExecution_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "execution_id": 1, "project": 2, "domain": 3, "name": 4, "node_id": 5, "nodeId": 6}, Base: []int{1, 10, 4, 10, 11, 12, 1, 13, 0, 7, 4, 0, 9, 7, 0, 9, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 3, 1, 7, 2, 10, 11, 2, 13, 14, 2, 16, 4, 5, 6, 8}} -) - -func request_AdminService_GetNodeExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionGetRequest +func request_AdminService_DeleteWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowAttributesDeleteRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -5291,62 +4621,53 @@ func request_AdminService_GetNodeExecution_0(ctx context.Context, marshaler runt _ = err ) - val, ok = pathParams["id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) - } - - val, ok = pathParams["id.execution_id.domain"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.execution_id.name"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } - val, ok = pathParams["id.node_id"] + val, ok = pathParams["workflow"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + protoReq.Workflow, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecution_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) } - msg, err := client.GetNodeExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.DeleteWorkflowAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetNodeExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionGetRequest +func local_request_AdminService_DeleteWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowAttributesDeleteRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -5354,847 +4675,905 @@ func local_request_AdminService_GetNodeExecution_0(ctx context.Context, marshale _ = err ) - val, ok = pathParams["id.execution_id.project"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.execution_id.domain"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } - val, ok = pathParams["id.execution_id.name"] + val, ok = pathParams["workflow"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + protoReq.Workflow, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) } - val, ok = pathParams["id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") - } + msg, err := server.DeleteWorkflowAttributes(ctx, &protoReq) + return msg, metadata, err - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) +} + +var ( + filter_AdminService_ListMatchableAttributes_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_AdminService_ListMatchableAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ListMatchableAttributesRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListMatchableAttributes_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + msg, err := client.ListMatchableAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_ListMatchableAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ListMatchableAttributesRequest + var metadata runtime.ServerMetadata + if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecution_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListMatchableAttributes_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetNodeExecution(ctx, &protoReq) + msg, err := server.ListMatchableAttributes(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_GetNodeExecution_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "execution_id": 1, "org": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7}, Base: []int{1, 13, 5, 13, 14, 15, 16, 1, 17, 0, 8, 4, 0, 10, 7, 0, 12, 10, 0, 12, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 1, 3, 1, 8, 2, 11, 12, 2, 14, 15, 2, 17, 18, 2, 20, 4, 5, 6, 7, 9}} + filter_AdminService_ListNamedEntities_0 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "resourceType": 1, "project": 2, "domain": 3}, Base: []int{1, 1, 2, 4, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 3, 4, 4, 5, 5}} ) -func request_AdminService_GetNodeExecution_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionGetRequest +func request_AdminService_ListNamedEntities_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NamedEntityListRequest var metadata runtime.ServerMetadata var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.org", err) - } - - val, ok = pathParams["id.execution_id.project"] + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) - } - - val, ok = pathParams["id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) - } + protoReq.ResourceType = extCore.ResourceType(e) - val, ok = pathParams["id.execution_id.name"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.node_id"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecution_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNamedEntities_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetNodeExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListNamedEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetNodeExecution_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionGetRequest +func local_request_AdminService_ListNamedEntities_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NamedEntityListRequest var metadata runtime.ServerMetadata var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.org", err) - } - - val, ok = pathParams["id.execution_id.project"] + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) - } - - val, ok = pathParams["id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) - } + protoReq.ResourceType = extCore.ResourceType(e) - val, ok = pathParams["id.execution_id.name"] + val, ok = pathParams["project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + protoReq.Project, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) } - val, ok = pathParams["id.node_id"] + val, ok = pathParams["domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + protoReq.Domain, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecution_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNamedEntities_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetNodeExecution(ctx, &protoReq) + msg, err := server.ListNamedEntities(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_GetDynamicNodeWorkflow_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "execution_id": 1, "project": 2, "domain": 3, "name": 4, "node_id": 5, "nodeId": 6}, Base: []int{1, 10, 4, 10, 11, 12, 1, 13, 0, 7, 4, 0, 9, 7, 0, 9, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 3, 1, 7, 2, 10, 11, 2, 13, 14, 2, 16, 4, 5, 6, 8}} + filter_AdminService_GetNamedEntity_0 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "resourceType": 1, "id": 2, "project": 3, "domain": 4, "name": 5}, Base: []int{1, 1, 2, 8, 9, 10, 11, 0, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 3, 4, 10, 4, 12, 4, 14, 5, 6, 7}} ) -func request_AdminService_GetDynamicNodeWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.GetDynamicNodeWorkflowRequest +func request_AdminService_GetNamedEntity_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NamedEntityGetRequest var metadata runtime.ServerMetadata var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["id.execution_id.project"] + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - val, ok = pathParams["id.execution_id.domain"] + protoReq.ResourceType = extCore.ResourceType(e) + + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["id.execution_id.name"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["id.node_id"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDynamicNodeWorkflow_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNamedEntity_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GetDynamicNodeWorkflow(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetNamedEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetDynamicNodeWorkflow_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.GetDynamicNodeWorkflowRequest +func local_request_AdminService_GetNamedEntity_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NamedEntityGetRequest var metadata runtime.ServerMetadata var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["id.execution_id.project"] + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - val, ok = pathParams["id.execution_id.domain"] + protoReq.ResourceType = extCore.ResourceType(e) + + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["id.execution_id.name"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["id.node_id"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDynamicNodeWorkflow_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNamedEntity_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetDynamicNodeWorkflow(ctx, &protoReq) + msg, err := server.GetNamedEntity(ctx, &protoReq) return msg, metadata, err } -var ( - filter_AdminService_GetDynamicNodeWorkflow_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "execution_id": 1, "org": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7}, Base: []int{1, 13, 5, 13, 14, 15, 16, 1, 17, 0, 8, 4, 0, 10, 7, 0, 12, 10, 0, 12, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 1, 3, 1, 8, 2, 11, 12, 2, 14, 15, 2, 17, 18, 2, 20, 4, 5, 6, 7, 9}} -) - -func request_AdminService_GetDynamicNodeWorkflow_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.GetDynamicNodeWorkflowRequest +func request_AdminService_UpdateNamedEntity_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NamedEntityUpdateRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["id.execution_id.org"] + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.org", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.org", err) - } - - val, ok = pathParams["id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) - } + protoReq.ResourceType = extCore.ResourceType(e) - val, ok = pathParams["id.execution_id.domain"] + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["id.execution_id.name"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["id.node_id"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDynamicNodeWorkflow_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - msg, err := client.GetDynamicNodeWorkflow(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.UpdateNamedEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_GetDynamicNodeWorkflow_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.GetDynamicNodeWorkflowRequest +func local_request_AdminService_UpdateNamedEntity_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.NamedEntityUpdateRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["id.execution_id.org"] + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.org", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - val, ok = pathParams["id.execution_id.project"] + protoReq.ResourceType = extCore.ResourceType(e) + + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["id.execution_id.domain"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["id.execution_id.name"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } - val, ok = pathParams["id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") - } + msg, err := server.UpdateNamedEntity(ctx, &protoReq) + return msg, metadata, err - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) - } +} - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDynamicNodeWorkflow_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } +func request_AdminService_GetVersion_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.GetVersionRequest + var metadata runtime.ServerMetadata - msg, err := server.GetDynamicNodeWorkflow(ctx, &protoReq) + msg, err := client.GetVersion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_GetVersion_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.GetVersionRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetVersion(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListNodeExecutions_0 = &utilities.DoubleArray{Encoding: map[string]int{"workflow_execution_id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} + filter_AdminService_GetDescriptionEntity_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "resource_type": 1, "resourceType": 2, "project": 3, "domain": 4, "name": 5, "version": 6}, Base: []int{1, 9, 1, 10, 11, 12, 13, 14, 0, 3, 0, 5, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 1, 1, 3, 2, 10, 2, 12, 2, 14, 2, 16, 4, 5, 6, 7, 8}} ) -func request_AdminService_ListNodeExecutions_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionListRequest +func request_AdminService_GetDescriptionEntity_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ObjectGetRequest var metadata runtime.ServerMetadata var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["workflow_execution_id.project"] + val, ok = pathParams["id.resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.resource_type", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.project", err) - } - - val, ok = pathParams["workflow_execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.resource_type", err) } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.domain", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "id.resource_type", err) } - val, ok = pathParams["workflow_execution_id.name"] + protoReq.Id.ResourceType = extCore.ResourceType(e) + + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + } + + val, ok = pathParams["id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + } + + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + } + + val, ok = pathParams["id.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutions_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDescriptionEntity_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListNodeExecutions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetDescriptionEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListNodeExecutions_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionListRequest +func local_request_AdminService_GetDescriptionEntity_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ObjectGetRequest var metadata runtime.ServerMetadata var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["workflow_execution_id.project"] + val, ok = pathParams["id.resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.resource_type", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.resource_type", err) } - val, ok = pathParams["workflow_execution_id.domain"] + e, err = runtime.Enum(val, extCore.ResourceType_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "id.resource_type", err) + } + + protoReq.Id.ResourceType = extCore.ResourceType(e) + + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["workflow_execution_id.name"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + } + + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + } + + val, ok = pathParams["id.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutions_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDescriptionEntity_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListNodeExecutions(ctx, &protoReq) + msg, err := server.GetDescriptionEntity(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListNodeExecutions_1 = &utilities.DoubleArray{Encoding: map[string]int{"workflow_execution_id": 0, "org": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} + filter_AdminService_ListDescriptionEntities_0 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "resourceType": 1, "id": 2, "project": 3, "domain": 4, "name": 5}, Base: []int{1, 1, 2, 8, 9, 10, 11, 0, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 3, 4, 10, 4, 12, 4, 14, 5, 6, 7}} ) -func request_AdminService_ListNodeExecutions_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionListRequest +func request_AdminService_ListDescriptionEntities_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.DescriptionEntityListRequest var metadata runtime.ServerMetadata var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["workflow_execution_id.org"] + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.org", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - val, ok = pathParams["workflow_execution_id.project"] + protoReq.ResourceType = extCore.ResourceType(e) + + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["workflow_execution_id.domain"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["workflow_execution_id.name"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutions_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListNodeExecutions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListDescriptionEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AdminService_ListNodeExecutions_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionListRequest +func local_request_AdminService_ListDescriptionEntities_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.DescriptionEntityListRequest var metadata runtime.ServerMetadata var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["workflow_execution_id.org"] + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.org") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.org", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.org", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - val, ok = pathParams["workflow_execution_id.project"] + protoReq.ResourceType = extCore.ResourceType(e) + + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.project", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["workflow_execution_id.domain"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["workflow_execution_id.name"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutions_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListNodeExecutions(ctx, &protoReq) + msg, err := server.ListDescriptionEntities(ctx, &protoReq) return msg, metadata, err } var ( - filter_AdminService_ListNodeExecutionsForTask_0 = &utilities.DoubleArray{Encoding: map[string]int{"task_execution_id": 0, "node_execution_id": 1, "execution_id": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7, "task_id": 8, "version": 9, "retry_attempt": 10, "retryAttempt": 11}, Base: []int{1, 25, 1, 4, 26, 28, 30, 1, 31, 9, 32, 10, 33, 0, 3, 0, 15, 13, 7, 0, 15, 10, 0, 21, 13, 0, 23, 16, 0, 25, 19, 0, 24, 22, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 3, 1, 1, 1, 4, 1, 2, 1, 10, 1, 8, 12, 15, 2, 17, 18, 19, 2, 21, 22, 2, 24, 25, 2, 27, 28, 2, 30, 31, 2, 33, 34, 2, 36, 5, 5, 6, 6, 7, 7, 9, 11, 13}} + filter_AdminService_ListDescriptionEntities_1 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "resourceType": 1, "id": 2, "project": 3, "domain": 4}, Base: []int{1, 1, 2, 6, 7, 8, 0, 0, 4, 0, 6, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 3, 4, 9, 4, 11, 5, 6}} ) -func request_AdminService_ListNodeExecutionsForTask_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionForTaskListRequest +func request_AdminService_ListDescriptionEntities_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.DescriptionEntityListRequest var metadata runtime.ServerMetadata var ( val string + e int32 ok bool err error _ = err ) - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.project"] + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.project", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.domain"] + protoReq.ResourceType = extCore.ResourceType(e) + + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.name"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["task_execution_id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.node_id") + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.node_id", err) + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - val, ok = pathParams["task_execution_id.task_id.project"] + msg, err := client.ListDescriptionEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_ListDescriptionEntities_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.DescriptionEntityListRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["resource_type"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.project") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.project", val) + e, err = runtime.Enum(val, extCore.ResourceType_value) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.project", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) } - val, ok = pathParams["task_execution_id.task_id.domain"] + protoReq.ResourceType = extCore.ResourceType(e) + + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.domain") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.domain", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.domain", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["task_execution_id.task_id.name"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.name", err) - } - - val, ok = pathParams["task_execution_id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.version", err) - } - - val, ok = pathParams["task_execution_id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.retry_attempt", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutionsForTask_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_1); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListNodeExecutionsForTask(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.ListDescriptionEntities(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_ListNodeExecutionsForTask_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionForTaskListRequest +var ( + filter_AdminService_GetExecutionMetrics_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} +) + +func request_AdminService_GetExecutionMetrics_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowExecutionGetMetricsRequest var metadata runtime.ServerMetadata var ( @@ -6204,114 +5583,50 @@ func local_request_AdminService_ListNodeExecutionsForTask_0(ctx context.Context, _ = err ) - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.node_id", err) - } - - val, ok = pathParams["task_execution_id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.project", err) - } - - val, ok = pathParams["task_execution_id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.domain", err) - } - - val, ok = pathParams["task_execution_id.task_id.name"] + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["task_execution_id.task_id.version"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.version") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.version", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.version", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["task_execution_id.retry_attempt"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.retry_attempt") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.retry_attempt", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.retry_attempt", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutionsForTask_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionMetrics_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListNodeExecutionsForTask(ctx, &protoReq) + msg, err := client.GetExecutionMetrics(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_AdminService_ListNodeExecutionsForTask_1 = &utilities.DoubleArray{Encoding: map[string]int{"task_execution_id": 0, "node_execution_id": 1, "execution_id": 2, "org": 3, "project": 4, "domain": 5, "name": 6, "node_id": 7, "nodeId": 8, "task_id": 9, "version": 10, "retry_attempt": 11, "retryAttempt": 12}, Base: []int{1, 29, 1, 5, 29, 31, 33, 35, 1, 36, 10, 37, 11, 38, 0, 3, 0, 16, 14, 7, 0, 20, 17, 11, 0, 19, 14, 0, 25, 17, 0, 27, 20, 0, 29, 23, 0, 28, 26, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 3, 1, 1, 1, 1, 4, 1, 2, 1, 11, 1, 9, 13, 16, 2, 18, 19, 20, 2, 22, 23, 24, 2, 26, 27, 2, 29, 30, 2, 32, 33, 2, 35, 36, 2, 38, 39, 2, 41, 5, 6, 6, 7, 7, 8, 8, 10, 12, 14}} -) - -func request_AdminService_ListNodeExecutionsForTask_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionForTaskListRequest +func local_request_AdminService_GetExecutionMetrics_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.WorkflowExecutionGetMetricsRequest var metadata runtime.ServerMetadata var ( @@ -6321,9156 +5636,55 @@ func request_AdminService_ListNodeExecutionsForTask_1(ctx context.Context, marsh _ = err ) - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.org", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.node_id", err) - } - - val, ok = pathParams["task_execution_id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.project", err) - } - - val, ok = pathParams["task_execution_id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.domain", err) - } - - val, ok = pathParams["task_execution_id.task_id.name"] + val, ok = pathParams["id.project"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.name", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) } - val, ok = pathParams["task_execution_id.task_id.version"] + val, ok = pathParams["id.domain"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.version") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.version", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.version", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) } - val, ok = pathParams["task_execution_id.retry_attempt"] + val, ok = pathParams["id.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.retry_attempt") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") } - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.retry_attempt", val) + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.retry_attempt", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutionsForTask_1); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionMetrics_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ListNodeExecutionsForTask(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.GetExecutionMetrics(ctx, &protoReq) return msg, metadata, err } -func local_request_AdminService_ListNodeExecutionsForTask_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionForTaskListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.org", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.domain") - } +// RegisterAdminServiceHandlerServer registers the http handlers for service AdminService to "mux". +// UnaryRPC :call AdminServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAdminServiceHandlerFromEndpoint instead. +func RegisterAdminServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server extService.AdminServiceServer) error { - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["task_execution_id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.node_execution_id.node_id", err) - } - - val, ok = pathParams["task_execution_id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.project", err) - } - - val, ok = pathParams["task_execution_id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.domain", err) - } - - val, ok = pathParams["task_execution_id.task_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.name", err) - } - - val, ok = pathParams["task_execution_id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.task_id.version", err) - } - - val, ok = pathParams["task_execution_id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_execution_id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "task_execution_id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_execution_id.retry_attempt", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNodeExecutionsForTask_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListNodeExecutionsForTask(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetNodeExecutionData_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "execution_id": 1, "project": 2, "domain": 3, "name": 4, "node_id": 5, "nodeId": 6}, Base: []int{1, 10, 4, 10, 11, 12, 1, 13, 0, 7, 4, 0, 9, 7, 0, 9, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 3, 1, 7, 2, 10, 11, 2, 13, 14, 2, 16, 4, 5, 6, 8}} -) - -func request_AdminService_GetNodeExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionGetDataRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) - } - - val, ok = pathParams["id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) - } - - val, ok = pathParams["id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) - } - - val, ok = pathParams["id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecutionData_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetNodeExecutionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetNodeExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionGetDataRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) - } - - val, ok = pathParams["id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) - } - - val, ok = pathParams["id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) - } - - val, ok = pathParams["id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecutionData_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetNodeExecutionData(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetNodeExecutionData_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "execution_id": 1, "org": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7}, Base: []int{1, 13, 5, 13, 14, 15, 16, 1, 17, 0, 8, 4, 0, 10, 7, 0, 12, 10, 0, 12, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 1, 3, 1, 8, 2, 11, 12, 2, 14, 15, 2, 17, 18, 2, 20, 4, 5, 6, 7, 9}} -) - -func request_AdminService_GetNodeExecutionData_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionGetDataRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.org", err) - } - - val, ok = pathParams["id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) - } - - val, ok = pathParams["id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) - } - - val, ok = pathParams["id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) - } - - val, ok = pathParams["id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecutionData_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetNodeExecutionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetNodeExecutionData_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionGetDataRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.org", err) - } - - val, ok = pathParams["id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.project", err) - } - - val, ok = pathParams["id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.domain", err) - } - - val, ok = pathParams["id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.name", err) - } - - val, ok = pathParams["id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNodeExecutionData_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetNodeExecutionData(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_RegisterProject_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectRegisterRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.RegisterProject(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_RegisterProject_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectRegisterRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.RegisterProject(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_RegisterProject_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectRegisterRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "project.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project.org", err) - } - - msg, err := client.RegisterProject(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_RegisterProject_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectRegisterRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "project.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project.org", err) - } - - msg, err := server.RegisterProject(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateProject_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.Project - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := client.UpdateProject(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateProject_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.Project - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := server.UpdateProject(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateProject_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.Project - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := client.UpdateProject(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateProject_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.Project - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := server.UpdateProject(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListProjects_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_AdminService_ListProjects_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectListRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListProjects_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListProjects(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListProjects_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectListRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListProjects_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListProjects(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListProjects_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0}, Base: []int{1, 2, 0, 0}, Check: []int{0, 1, 2, 2}} -) - -func request_AdminService_ListProjects_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListProjects_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListProjects(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListProjects_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListProjects_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListProjects(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_CreateWorkflowEvent_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.CreateWorkflowEvent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_CreateWorkflowEvent_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.CreateWorkflowEvent(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_CreateWorkflowEvent_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["event.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "event.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "event.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "event.execution_id.org", err) - } - - msg, err := client.CreateWorkflowEvent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_CreateWorkflowEvent_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["event.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "event.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "event.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "event.execution_id.org", err) - } - - msg, err := server.CreateWorkflowEvent(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_CreateNodeEvent_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.CreateNodeEvent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_CreateNodeEvent_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.CreateNodeEvent(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_CreateNodeEvent_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["event.id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "event.id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "event.id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "event.id.execution_id.org", err) - } - - msg, err := client.CreateNodeEvent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_CreateNodeEvent_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NodeExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["event.id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "event.id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "event.id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "event.id.execution_id.org", err) - } - - msg, err := server.CreateNodeEvent(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_CreateTaskEvent_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.CreateTaskEvent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_CreateTaskEvent_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.CreateTaskEvent(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_CreateTaskEvent_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["event.parent_node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "event.parent_node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "event.parent_node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "event.parent_node_execution_id.execution_id.org", err) - } - - msg, err := client.CreateTaskEvent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_CreateTaskEvent_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionEventRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["event.parent_node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "event.parent_node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "event.parent_node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "event.parent_node_execution_id.execution_id.org", err) - } - - msg, err := server.CreateTaskEvent(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetTaskExecution_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "node_execution_id": 1, "execution_id": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7, "task_id": 8, "version": 9, "retry_attempt": 10, "retryAttempt": 11}, Base: []int{1, 25, 1, 4, 26, 28, 30, 1, 31, 9, 32, 10, 33, 0, 3, 0, 15, 13, 7, 0, 15, 10, 0, 21, 13, 0, 23, 16, 0, 25, 19, 0, 24, 22, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 3, 1, 1, 1, 4, 1, 2, 1, 10, 1, 8, 12, 15, 2, 17, 18, 19, 2, 21, 22, 2, 24, 25, 2, 27, 28, 2, 30, 31, 2, 33, 34, 2, 36, 5, 5, 6, 6, 7, 7, 9, 11, 13}} -) - -func request_AdminService_GetTaskExecution_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) - } - - val, ok = pathParams["id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) - } - - val, ok = pathParams["id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) - } - - val, ok = pathParams["id.task_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) - } - - val, ok = pathParams["id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) - } - - val, ok = pathParams["id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecution_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetTaskExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetTaskExecution_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) - } - - val, ok = pathParams["id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) - } - - val, ok = pathParams["id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) - } - - val, ok = pathParams["id.task_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) - } - - val, ok = pathParams["id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) - } - - val, ok = pathParams["id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecution_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetTaskExecution(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetTaskExecution_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "node_execution_id": 1, "execution_id": 2, "org": 3, "project": 4, "domain": 5, "name": 6, "node_id": 7, "nodeId": 8, "task_id": 9, "version": 10, "retry_attempt": 11, "retryAttempt": 12}, Base: []int{1, 29, 1, 5, 29, 31, 33, 35, 1, 36, 10, 37, 11, 38, 0, 3, 0, 16, 14, 7, 0, 20, 17, 11, 0, 19, 14, 0, 25, 17, 0, 27, 20, 0, 29, 23, 0, 28, 26, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 3, 1, 1, 1, 1, 4, 1, 2, 1, 11, 1, 9, 13, 16, 2, 18, 19, 20, 2, 22, 23, 24, 2, 26, 27, 2, 29, 30, 2, 32, 33, 2, 35, 36, 2, 38, 39, 2, 41, 5, 6, 6, 7, 7, 8, 8, 10, 12, 14}} -) - -func request_AdminService_GetTaskExecution_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.org", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) - } - - val, ok = pathParams["id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) - } - - val, ok = pathParams["id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) - } - - val, ok = pathParams["id.task_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) - } - - val, ok = pathParams["id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) - } - - val, ok = pathParams["id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecution_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetTaskExecution(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetTaskExecution_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.org", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) - } - - val, ok = pathParams["id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) - } - - val, ok = pathParams["id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) - } - - val, ok = pathParams["id.task_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) - } - - val, ok = pathParams["id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) - } - - val, ok = pathParams["id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecution_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetTaskExecution(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListTaskExecutions_0 = &utilities.DoubleArray{Encoding: map[string]int{"node_execution_id": 0, "execution_id": 1, "project": 2, "domain": 3, "name": 4, "node_id": 5, "nodeId": 6}, Base: []int{1, 10, 4, 10, 11, 12, 1, 13, 0, 7, 4, 0, 9, 7, 0, 9, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 3, 1, 7, 2, 10, 11, 2, 13, 14, 2, 16, 4, 5, 6, 8}} -) - -func request_AdminService_ListTaskExecutions_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTaskExecutions_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListTaskExecutions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListTaskExecutions_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTaskExecutions_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListTaskExecutions(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListTaskExecutions_1 = &utilities.DoubleArray{Encoding: map[string]int{"node_execution_id": 0, "execution_id": 1, "org": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7}, Base: []int{1, 13, 5, 13, 14, 15, 16, 1, 17, 0, 8, 4, 0, 10, 7, 0, 12, 10, 0, 12, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 1, 3, 1, 8, 2, 11, 12, 2, 14, 15, 2, 17, 18, 2, 20, 4, 5, 6, 7, 9}} -) - -func request_AdminService_ListTaskExecutions_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.org", err) - } - - val, ok = pathParams["node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTaskExecutions_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListTaskExecutions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListTaskExecutions_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.org", err) - } - - val, ok = pathParams["node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_execution_id.node_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListTaskExecutions_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListTaskExecutions(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetTaskExecutionData_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "node_execution_id": 1, "execution_id": 2, "project": 3, "domain": 4, "name": 5, "node_id": 6, "nodeId": 7, "task_id": 8, "version": 9, "retry_attempt": 10, "retryAttempt": 11}, Base: []int{1, 25, 1, 4, 26, 28, 30, 1, 31, 9, 32, 10, 33, 0, 3, 0, 15, 13, 7, 0, 15, 10, 0, 21, 13, 0, 23, 16, 0, 25, 19, 0, 24, 22, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 3, 1, 1, 1, 4, 1, 2, 1, 10, 1, 8, 12, 15, 2, 17, 18, 19, 2, 21, 22, 2, 24, 25, 2, 27, 28, 2, 30, 31, 2, 33, 34, 2, 36, 5, 5, 6, 6, 7, 7, 9, 11, 13}} -) - -func request_AdminService_GetTaskExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionGetDataRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) - } - - val, ok = pathParams["id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) - } - - val, ok = pathParams["id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) - } - - val, ok = pathParams["id.task_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) - } - - val, ok = pathParams["id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) - } - - val, ok = pathParams["id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecutionData_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetTaskExecutionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetTaskExecutionData_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionGetDataRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) - } - - val, ok = pathParams["id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) - } - - val, ok = pathParams["id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) - } - - val, ok = pathParams["id.task_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) - } - - val, ok = pathParams["id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) - } - - val, ok = pathParams["id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecutionData_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetTaskExecutionData(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetTaskExecutionData_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "node_execution_id": 1, "execution_id": 2, "org": 3, "project": 4, "domain": 5, "name": 6, "node_id": 7, "nodeId": 8, "task_id": 9, "version": 10, "retry_attempt": 11, "retryAttempt": 12}, Base: []int{1, 29, 1, 5, 29, 31, 33, 35, 1, 36, 10, 37, 11, 38, 0, 3, 0, 16, 14, 7, 0, 20, 17, 11, 0, 19, 14, 0, 25, 17, 0, 27, 20, 0, 29, 23, 0, 28, 26, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 3, 1, 1, 1, 1, 4, 1, 2, 1, 11, 1, 9, 13, 16, 2, 18, 19, 20, 2, 22, 23, 24, 2, 26, 27, 2, 29, 30, 2, 32, 33, 2, 35, 36, 2, 38, 39, 2, 41, 5, 6, 6, 7, 7, 8, 8, 10, 12, 14}} -) - -func request_AdminService_GetTaskExecutionData_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionGetDataRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.org", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) - } - - val, ok = pathParams["id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) - } - - val, ok = pathParams["id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) - } - - val, ok = pathParams["id.task_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) - } - - val, ok = pathParams["id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) - } - - val, ok = pathParams["id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecutionData_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetTaskExecutionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetTaskExecutionData_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.TaskExecutionGetDataRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.node_execution_id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.org", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.project", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.domain", err) - } - - val, ok = pathParams["id.node_execution_id.execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.execution_id.name", err) - } - - val, ok = pathParams["id.node_execution_id.node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.node_execution_id.node_id") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.node_execution_id.node_id", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.node_execution_id.node_id", err) - } - - val, ok = pathParams["id.task_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.project", err) - } - - val, ok = pathParams["id.task_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.domain", err) - } - - val, ok = pathParams["id.task_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.name", err) - } - - val, ok = pathParams["id.task_id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.task_id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.task_id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.task_id.version", err) - } - - val, ok = pathParams["id.retry_attempt"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.retry_attempt") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.retry_attempt", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.retry_attempt", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetTaskExecutionData_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetTaskExecutionData(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - val, ok = pathParams["attributes.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) - } - - msg, err := client.UpdateProjectDomainAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - val, ok = pathParams["attributes.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) - } - - msg, err := server.UpdateProjectDomainAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateProjectDomainAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.org", err) - } - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - val, ok = pathParams["attributes.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) - } - - msg, err := client.UpdateProjectDomainAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateProjectDomainAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.org", err) - } - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - val, ok = pathParams["attributes.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) - } - - msg, err := server.UpdateProjectDomainAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetProjectDomainAttributes_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} -) - -func request_AdminService_GetProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectDomainAttributes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetProjectDomainAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectDomainAttributes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetProjectDomainAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetProjectDomainAttributes_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0, "project": 1, "domain": 2}, Base: []int{1, 2, 4, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 2, 3, 3, 4, 4}} -) - -func request_AdminService_GetProjectDomainAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectDomainAttributes_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetProjectDomainAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetProjectDomainAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectDomainAttributes_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetProjectDomainAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_DeleteProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - msg, err := client.DeleteProjectDomainAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_DeleteProjectDomainAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - msg, err := server.DeleteProjectDomainAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_DeleteProjectDomainAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - msg, err := client.DeleteProjectDomainAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_DeleteProjectDomainAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectDomainAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - msg, err := server.DeleteProjectDomainAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - msg, err := client.UpdateProjectAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - msg, err := server.UpdateProjectAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateProjectAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.org", err) - } - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - msg, err := client.UpdateProjectAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateProjectAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.org", err) - } - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - msg, err := server.UpdateProjectAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetProjectAttributes_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0}, Base: []int{1, 2, 0, 0}, Check: []int{0, 1, 2, 2}} -) - -func request_AdminService_GetProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectAttributes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetProjectAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectAttributes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetProjectAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetProjectAttributes_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0, "project": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} -) - -func request_AdminService_GetProjectAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectAttributes_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetProjectAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetProjectAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetProjectAttributes_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetProjectAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_DeleteProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - msg, err := client.DeleteProjectAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_DeleteProjectAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - msg, err := server.DeleteProjectAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_DeleteProjectAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - msg, err := client.DeleteProjectAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_DeleteProjectAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ProjectAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - msg, err := server.DeleteProjectAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - val, ok = pathParams["attributes.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) - } - - val, ok = pathParams["attributes.workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.workflow") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.workflow", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.workflow", err) - } - - msg, err := client.UpdateWorkflowAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - val, ok = pathParams["attributes.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) - } - - val, ok = pathParams["attributes.workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.workflow") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.workflow", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.workflow", err) - } - - msg, err := server.UpdateWorkflowAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateWorkflowAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.org", err) - } - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - val, ok = pathParams["attributes.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) - } - - val, ok = pathParams["attributes.workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.workflow") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.workflow", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.workflow", err) - } - - msg, err := client.UpdateWorkflowAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateWorkflowAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["attributes.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.org", err) - } - - val, ok = pathParams["attributes.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.project", err) - } - - val, ok = pathParams["attributes.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.domain", err) - } - - val, ok = pathParams["attributes.workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attributes.workflow") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "attributes.workflow", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attributes.workflow", err) - } - - msg, err := server.UpdateWorkflowAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetWorkflowAttributes_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "domain": 1, "workflow": 2}, Base: []int{1, 2, 4, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 2, 2, 3, 3, 4, 4}} -) - -func request_AdminService_GetWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - val, ok = pathParams["workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") - } - - protoReq.Workflow, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflowAttributes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetWorkflowAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - val, ok = pathParams["workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") - } - - protoReq.Workflow, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflowAttributes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetWorkflowAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetWorkflowAttributes_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0, "project": 1, "domain": 2, "workflow": 3}, Base: []int{1, 2, 4, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5}} -) - -func request_AdminService_GetWorkflowAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - val, ok = pathParams["workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") - } - - protoReq.Workflow, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflowAttributes_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetWorkflowAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetWorkflowAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - val, ok = pathParams["workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") - } - - protoReq.Workflow, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetWorkflowAttributes_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetWorkflowAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_DeleteWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - val, ok = pathParams["workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") - } - - protoReq.Workflow, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) - } - - msg, err := client.DeleteWorkflowAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_DeleteWorkflowAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - val, ok = pathParams["workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") - } - - protoReq.Workflow, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) - } - - msg, err := server.DeleteWorkflowAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_DeleteWorkflowAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - val, ok = pathParams["workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") - } - - protoReq.Workflow, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) - } - - msg, err := client.DeleteWorkflowAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_DeleteWorkflowAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowAttributesDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - val, ok = pathParams["workflow"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow") - } - - protoReq.Workflow, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow", err) - } - - msg, err := server.DeleteWorkflowAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListMatchableAttributes_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_AdminService_ListMatchableAttributes_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ListMatchableAttributesRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListMatchableAttributes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListMatchableAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListMatchableAttributes_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ListMatchableAttributesRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListMatchableAttributes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListMatchableAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListMatchableAttributes_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0}, Base: []int{1, 2, 0, 0}, Check: []int{0, 1, 2, 2}} -) - -func request_AdminService_ListMatchableAttributes_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ListMatchableAttributesRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListMatchableAttributes_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListMatchableAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListMatchableAttributes_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ListMatchableAttributesRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListMatchableAttributes_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListMatchableAttributes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListNamedEntities_0 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "resourceType": 1, "project": 2, "domain": 3}, Base: []int{1, 1, 2, 4, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 3, 4, 4, 5, 5}} -) - -func request_AdminService_ListNamedEntities_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNamedEntities_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListNamedEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListNamedEntities_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNamedEntities_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListNamedEntities(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListNamedEntities_1 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0, "resource_type": 1, "resourceType": 2, "project": 3, "domain": 4}, Base: []int{1, 2, 3, 4, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6}} -) - -func request_AdminService_ListNamedEntities_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNamedEntities_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListNamedEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListNamedEntities_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") - } - - protoReq.Org, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") - } - - protoReq.Project, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) - } - - val, ok = pathParams["domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "domain") - } - - protoReq.Domain, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListNamedEntities_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListNamedEntities(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetNamedEntity_0 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "resourceType": 1, "id": 2, "project": 3, "domain": 4, "name": 5}, Base: []int{1, 1, 2, 8, 9, 10, 11, 0, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 3, 4, 10, 4, 12, 4, 14, 5, 6, 7}} -) - -func request_AdminService_GetNamedEntity_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNamedEntity_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetNamedEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetNamedEntity_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNamedEntity_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetNamedEntity(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetNamedEntity_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "resource_type": 2, "resourceType": 3, "project": 4, "domain": 5, "name": 6}, Base: []int{1, 8, 9, 10, 11, 12, 13, 14, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 1, 2, 9, 2, 11, 2, 13, 2, 15, 3, 4, 5, 6, 7, 8}} -) - -func request_AdminService_GetNamedEntity_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNamedEntity_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetNamedEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetNamedEntity_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetNamedEntity_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetNamedEntity(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateNamedEntity_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - msg, err := client.UpdateNamedEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateNamedEntity_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - msg, err := server.UpdateNamedEntity(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_UpdateNamedEntity_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - msg, err := client.UpdateNamedEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_UpdateNamedEntity_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.NamedEntityUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - msg, err := server.UpdateNamedEntity(ctx, &protoReq) - return msg, metadata, err - -} - -func request_AdminService_GetVersion_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.GetVersionRequest - var metadata runtime.ServerMetadata - - msg, err := client.GetVersion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetVersion_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.GetVersionRequest - var metadata runtime.ServerMetadata - - msg, err := server.GetVersion(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetDescriptionEntity_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "resource_type": 1, "resourceType": 2, "project": 3, "domain": 4, "name": 5, "version": 6}, Base: []int{1, 9, 1, 10, 11, 12, 13, 14, 0, 3, 0, 5, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 1, 1, 1, 3, 2, 10, 2, 12, 2, 14, 2, 16, 4, 5, 6, 7, 8}} -) - -func request_AdminService_GetDescriptionEntity_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.resource_type") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.resource_type", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.resource_type", err) - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "id.resource_type", err) - } - - protoReq.Id.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDescriptionEntity_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetDescriptionEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetDescriptionEntity_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.resource_type") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.resource_type", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.resource_type", err) - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "id.resource_type", err) - } - - protoReq.Id.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDescriptionEntity_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetDescriptionEntity(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetDescriptionEntity_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "resource_type": 2, "resourceType": 3, "project": 4, "domain": 5, "name": 6, "version": 7}, Base: []int{1, 11, 12, 1, 13, 14, 15, 16, 17, 0, 3, 0, 5, 0, 7, 0, 9, 0, 11, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 1, 1, 1, 1, 1, 4, 2, 11, 2, 13, 2, 15, 2, 17, 2, 19, 3, 5, 6, 7, 8, 9}} -) - -func request_AdminService_GetDescriptionEntity_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.resource_type") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.resource_type", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.resource_type", err) - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "id.resource_type", err) - } - - protoReq.Id.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDescriptionEntity_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetDescriptionEntity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetDescriptionEntity_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ObjectGetRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.resource_type") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.resource_type", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.resource_type", err) - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "id.resource_type", err) - } - - protoReq.Id.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - val, ok = pathParams["id.version"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDescriptionEntity_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetDescriptionEntity(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListDescriptionEntities_0 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "resourceType": 1, "id": 2, "project": 3, "domain": 4, "name": 5}, Base: []int{1, 1, 2, 8, 9, 10, 11, 0, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 3, 4, 10, 4, 12, 4, 14, 5, 6, 7}} -) - -func request_AdminService_ListDescriptionEntities_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.DescriptionEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListDescriptionEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListDescriptionEntities_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.DescriptionEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListDescriptionEntities(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListDescriptionEntities_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "resource_type": 2, "resourceType": 3, "project": 4, "domain": 5, "name": 6}, Base: []int{1, 8, 9, 10, 11, 12, 13, 14, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 1, 2, 9, 2, 11, 2, 13, 2, 15, 3, 4, 5, 6, 7, 8}} -) - -func request_AdminService_ListDescriptionEntities_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.DescriptionEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListDescriptionEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListDescriptionEntities_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.DescriptionEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListDescriptionEntities(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListDescriptionEntities_2 = &utilities.DoubleArray{Encoding: map[string]int{"resource_type": 0, "resourceType": 1, "id": 2, "project": 3, "domain": 4}, Base: []int{1, 1, 2, 6, 7, 8, 0, 0, 4, 0, 6, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 3, 4, 9, 4, 11, 5, 6}} -) - -func request_AdminService_ListDescriptionEntities_2(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.DescriptionEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_2); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListDescriptionEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListDescriptionEntities_2(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.DescriptionEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_2); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListDescriptionEntities(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_ListDescriptionEntities_3 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "resource_type": 2, "resourceType": 3, "project": 4, "domain": 5}, Base: []int{1, 6, 7, 8, 9, 10, 11, 2, 0, 4, 0, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 8, 2, 10, 2, 12, 3, 4, 5, 6, 7}} -) - -func request_AdminService_ListDescriptionEntities_3(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.DescriptionEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_3); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListDescriptionEntities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_ListDescriptionEntities_3(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.DescriptionEntityListRequest - var metadata runtime.ServerMetadata - - var ( - val string - e int32 - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["resource_type"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_type") - } - - e, err = runtime.Enum(val, extCore.ResourceType_value) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_type", err) - } - - protoReq.ResourceType = extCore.ResourceType(e) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListDescriptionEntities_3); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListDescriptionEntities(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetExecutionMetrics_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 6, 7, 8, 9, 2, 0, 4, 0, 6, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 6, 2, 8, 2, 10, 3, 4, 5}} -) - -func request_AdminService_GetExecutionMetrics_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetMetricsRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionMetrics_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetExecutionMetrics(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetExecutionMetrics_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetMetricsRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionMetrics_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetExecutionMetrics(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_AdminService_GetExecutionMetrics_1 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "org": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} -) - -func request_AdminService_GetExecutionMetrics_1(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetMetricsRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionMetrics_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GetExecutionMetrics(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_AdminService_GetExecutionMetrics_1(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.WorkflowExecutionGetMetricsRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.org", err) - } - - val, ok = pathParams["id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) - } - - val, ok = pathParams["id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) - } - - val, ok = pathParams["id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionMetrics_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GetExecutionMetrics(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterAdminServiceHandlerServer registers the http handlers for service AdminService to "mux". -// UnaryRPC :call AdminServiceServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAdminServiceHandlerFromEndpoint instead. -func RegisterAdminServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server extService.AdminServiceServer) error { - - mux.Handle("POST", pattern_AdminService_CreateTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTask", runtime.WithHTTPPathPattern("/api/v1/tasks")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateTask_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateTask_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTask", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{id.org}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateTask_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateTask_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTask", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetTask_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetTask_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTask", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetTask_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetTask_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListTaskIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskIds", runtime.WithHTTPPathPattern("/api/v1/task_ids/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListTaskIds_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListTaskIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListTaskIds_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskIds", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{org}/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListTaskIds_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListTaskIds_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListTasks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListTasks_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListTasks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListTasks_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListTasks_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListTasks_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListTasks_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListTasks_2(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListTasks_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListTasks_3, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListTasks_3(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListTasks_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateWorkflow_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateWorkflow_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{id.org}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateWorkflow_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateWorkflow_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetWorkflow_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetWorkflow_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetWorkflow_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetWorkflow_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListWorkflowIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflowIds", runtime.WithHTTPPathPattern("/api/v1/workflow_ids/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListWorkflowIds_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListWorkflowIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListWorkflowIds_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflowIds", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{org}/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListWorkflowIds_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListWorkflowIds_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListWorkflows_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListWorkflows_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListWorkflows_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListWorkflows_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListWorkflows_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListWorkflows_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListWorkflows_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListWorkflows_2(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListWorkflows_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListWorkflows_3, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListWorkflows_3(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListWorkflows_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateLaunchPlan_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateLaunchPlan_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateLaunchPlan_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateLaunchPlan_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetLaunchPlan_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetLaunchPlan_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetLaunchPlan_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetLaunchPlan_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetActiveLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetActiveLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetActiveLaunchPlan_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetActiveLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetActiveLaunchPlan_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetActiveLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetActiveLaunchPlan_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetActiveLaunchPlan_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListActiveLaunchPlans_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListActiveLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListActiveLaunchPlans_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListActiveLaunchPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListActiveLaunchPlans_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListActiveLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/org/{org}/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListActiveLaunchPlans_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListActiveLaunchPlans_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListLaunchPlanIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlanIds", runtime.WithHTTPPathPattern("/api/v1/launch_plan_ids/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListLaunchPlanIds_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListLaunchPlanIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListLaunchPlanIds_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlanIds", runtime.WithHTTPPathPattern("/api/v1/launch_plan_ids/org/{org}/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListLaunchPlanIds_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListLaunchPlanIds_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListLaunchPlans_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListLaunchPlans_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListLaunchPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListLaunchPlans_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListLaunchPlans_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListLaunchPlans_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListLaunchPlans_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListLaunchPlans_2(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListLaunchPlans_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListLaunchPlans_3, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListLaunchPlans_3(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListLaunchPlans_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateLaunchPlan_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateLaunchPlan_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateLaunchPlan_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateLaunchPlan_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateExecution", runtime.WithHTTPPathPattern("/api/v1/executions")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_CreateExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{org}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateExecution_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_RelaunchExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/RelaunchExecution", runtime.WithHTTPPathPattern("/api/v1/executions/relaunch")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_RelaunchExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_RelaunchExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_RelaunchExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/RelaunchExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/relaunch")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_RelaunchExecution_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_RelaunchExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_RecoverExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/RecoverExecution", runtime.WithHTTPPathPattern("/api/v1/executions/recover")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_RecoverExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_RecoverExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_RecoverExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/RecoverExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/recover")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_RecoverExecution_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_RecoverExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetExecution_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateExecution_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/executions/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetExecutionData_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetExecutionData_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/org/{id.org}/executions/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetExecutionData_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetExecutionData_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListExecutions", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListExecutions_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListExecutions_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListExecutions", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListExecutions_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListExecutions_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_AdminService_TerminateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/TerminateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_TerminateExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_TerminateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_AdminService_TerminateExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/TerminateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_TerminateExecution_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_TerminateExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetNodeExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecution", runtime.WithHTTPPathPattern("/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetNodeExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetNodeExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetNodeExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecution", runtime.WithHTTPPathPattern("/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetNodeExecution_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetNodeExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetDynamicNodeWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDynamicNodeWorkflow", runtime.WithHTTPPathPattern("/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetDynamicNodeWorkflow_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetDynamicNodeWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetDynamicNodeWorkflow_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDynamicNodeWorkflow", runtime.WithHTTPPathPattern("/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetDynamicNodeWorkflow_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetDynamicNodeWorkflow_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListNodeExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutions", runtime.WithHTTPPathPattern("/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListNodeExecutions_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListNodeExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListNodeExecutions_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutions", runtime.WithHTTPPathPattern("/api/v1/node_executions/org/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListNodeExecutions_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListNodeExecutions_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListNodeExecutionsForTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutionsForTask", runtime.WithHTTPPathPattern("/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListNodeExecutionsForTask_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListNodeExecutionsForTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListNodeExecutionsForTask_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutionsForTask", runtime.WithHTTPPathPattern("/api/v1/children/org/{task_execution_id.node_execution_id.execution_id.org}/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListNodeExecutionsForTask_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListNodeExecutionsForTask_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetNodeExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetNodeExecutionData_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetNodeExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetNodeExecutionData_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/org/{id.execution_id.org}/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetNodeExecutionData_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetNodeExecutionData_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_RegisterProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/RegisterProject", runtime.WithHTTPPathPattern("/api/v1/projects")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_RegisterProject_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_RegisterProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_RegisterProject_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/RegisterProject", runtime.WithHTTPPathPattern("/api/v1/projects/org/{project.org}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_RegisterProject_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_RegisterProject_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProject", runtime.WithHTTPPathPattern("/api/v1/projects/{id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateProject_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateProject_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProject", runtime.WithHTTPPathPattern("/api/v1/projects/org/{org}/{id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateProject_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateProject_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListProjects_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListProjects", runtime.WithHTTPPathPattern("/api/v1/projects")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListProjects_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListProjects_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListProjects_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListProjects", runtime.WithHTTPPathPattern("/api/v1/projects/org/{org}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListProjects_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListProjects_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateWorkflowEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflowEvent", runtime.WithHTTPPathPattern("/api/v1/events/workflows")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateWorkflowEvent_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateWorkflowEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateWorkflowEvent_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflowEvent", runtime.WithHTTPPathPattern("/api/v1/events/org/{event.execution_id.org}/workflows")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateWorkflowEvent_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateWorkflowEvent_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateNodeEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateNodeEvent", runtime.WithHTTPPathPattern("/api/v1/events/nodes")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateNodeEvent_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateNodeEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateNodeEvent_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateNodeEvent", runtime.WithHTTPPathPattern("/api/v1/events/org/{event.id.execution_id.org}/nodes")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateNodeEvent_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateNodeEvent_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateTaskEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTaskEvent", runtime.WithHTTPPathPattern("/api/v1/events/tasks")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateTaskEvent_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateTaskEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_AdminService_CreateTaskEvent_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTaskEvent", runtime.WithHTTPPathPattern("/api/v1/events/org/{event.parent_node_execution_id.execution_id.org}/tasks")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_CreateTaskEvent_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_CreateTaskEvent_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetTaskExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecution", runtime.WithHTTPPathPattern("/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetTaskExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetTaskExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetTaskExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecution", runtime.WithHTTPPathPattern("/api/v1/task_executions/org/{id.node_execution_id.execution_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetTaskExecution_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetTaskExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListTaskExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskExecutions", runtime.WithHTTPPathPattern("/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListTaskExecutions_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListTaskExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListTaskExecutions_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskExecutions", runtime.WithHTTPPathPattern("/api/v1/task_executions/org/{node_execution_id.execution_id.org}/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListTaskExecutions_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListTaskExecutions_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetTaskExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetTaskExecutionData_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetTaskExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetTaskExecutionData_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/org/{id.node_execution_id.execution_id.org}/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetTaskExecutionData_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetTaskExecutionData_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateProjectDomainAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateProjectDomainAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateProjectDomainAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateProjectDomainAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetProjectDomainAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetProjectDomainAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{org}/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetProjectDomainAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetProjectDomainAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_AdminService_DeleteProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_DeleteProjectDomainAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_DeleteProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_AdminService_DeleteProjectDomainAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{org}/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_DeleteProjectDomainAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_DeleteProjectDomainAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{attributes.project}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateProjectAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateProjectAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateProjectAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateProjectAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{project}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetProjectAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetProjectAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{org}/{project}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetProjectAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetProjectAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_AdminService_DeleteProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{project}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_DeleteProjectAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_DeleteProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_AdminService_DeleteProjectAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{org}/{project}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_DeleteProjectAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_DeleteProjectAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateWorkflowAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateWorkflowAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}/{attributes.workflow}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateWorkflowAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateWorkflowAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{project}/{domain}/{workflow}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetWorkflowAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetWorkflowAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetWorkflowAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetWorkflowAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_AdminService_DeleteWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{project}/{domain}/{workflow}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_DeleteWorkflowAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_DeleteWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_AdminService_DeleteWorkflowAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_DeleteWorkflowAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_DeleteWorkflowAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListMatchableAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListMatchableAttributes", runtime.WithHTTPPathPattern("/api/v1/matchable_attributes")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListMatchableAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListMatchableAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListMatchableAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListMatchableAttributes", runtime.WithHTTPPathPattern("/api/v1/matchable_attributes/org/{org}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListMatchableAttributes_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListMatchableAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListNamedEntities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNamedEntities", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListNamedEntities_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListNamedEntities_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListNamedEntities_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNamedEntities", runtime.WithHTTPPathPattern("/api/v1/named_entities/org/{org}/{resource_type}/{project}/{domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListNamedEntities_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListNamedEntities_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetNamedEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetNamedEntity_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetNamedEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetNamedEntity_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetNamedEntity_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetNamedEntity_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateNamedEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateNamedEntity_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateNamedEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_AdminService_UpdateNamedEntity_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_UpdateNamedEntity_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_UpdateNamedEntity_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetVersion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetVersion", runtime.WithHTTPPathPattern("/api/v1/version")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetVersion_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetVersion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetDescriptionEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDescriptionEntity", runtime.WithHTTPPathPattern("/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetDescriptionEntity_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetDescriptionEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetDescriptionEntity_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDescriptionEntity", runtime.WithHTTPPathPattern("/api/v1/description_entities/org/{id.org}/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetDescriptionEntity_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetDescriptionEntity_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListDescriptionEntities_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListDescriptionEntities_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListDescriptionEntities_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListDescriptionEntities_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListDescriptionEntities_2(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListDescriptionEntities_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_3, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_ListDescriptionEntities_3(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_ListDescriptionEntities_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetExecutionMetrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionMetrics", runtime.WithHTTPPathPattern("/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_AdminService_GetExecutionMetrics_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetExecutionMetrics_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_AdminService_GetExecutionMetrics_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -15478,2591 +5692,2762 @@ func RegisterAdminServiceHandlerServer(ctx context.Context, mux *runtime.ServeMu inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionMetrics", runtime.WithHTTPPathPattern("/api/v1/metrics/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTask", runtime.WithHTTPPathPattern("/api/v1/tasks")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AdminService_GetExecutionMetrics_1(annotatedContext, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AdminService_CreateTask_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_AdminService_GetExecutionMetrics_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterAdminServiceHandlerFromEndpoint is same as RegisterAdminServiceHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterAdminServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterAdminServiceHandler(ctx, mux, conn) -} - -// RegisterAdminServiceHandler registers the http handlers for service AdminService to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterAdminServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterAdminServiceHandlerClient(ctx, mux, extService.NewAdminServiceClient(conn)) -} - -// RegisterAdminServiceHandlerClient registers the http handlers for service AdminService -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "extService.AdminServiceClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "extService.AdminServiceClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "extService.AdminServiceClient" to call the correct interceptors. -func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client extService.AdminServiceClient) error { + return + } - mux.Handle("POST", pattern_AdminService_CreateTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + forward_AdminService_CreateTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_GetTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTask", runtime.WithHTTPPathPattern("/api/v1/tasks")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTask", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateTask_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetTask_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateTask_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListTaskIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTask", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{id.org}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskIds", runtime.WithHTTPPathPattern("/api/v1/task_ids/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateTask_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListTaskIds_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateTask_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListTaskIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListTasks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTask", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetTask_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListTasks_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListTasks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetTask_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListTasks_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTask", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetTask_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListTasks_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetTask_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListTasks_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListTaskIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskIds", runtime.WithHTTPPathPattern("/api/v1/task_ids/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListTaskIds_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_CreateWorkflow_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListTaskIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListTaskIds_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskIds", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{org}/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListTaskIds_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetWorkflow_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListTaskIds_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListTasks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListWorkflowIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflowIds", runtime.WithHTTPPathPattern("/api/v1/workflow_ids/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListTasks_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListWorkflowIds_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListTasks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListWorkflowIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListTasks_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListWorkflows_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListTasks_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListWorkflows_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListTasks_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListWorkflows_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListTasks_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListWorkflows_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListTasks_2(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListWorkflows_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListTasks_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListWorkflows_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListTasks_3, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListTasks_3(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_CreateLaunchPlan_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListTasks_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateWorkflow_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetLaunchPlan_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateWorkflow_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetActiveLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{id.org}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetActiveLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateWorkflow_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetActiveLaunchPlan_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateWorkflow_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetActiveLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListActiveLaunchPlans_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListActiveLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetWorkflow_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListActiveLaunchPlans_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListActiveLaunchPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetWorkflow_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListLaunchPlanIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlanIds", runtime.WithHTTPPathPattern("/api/v1/launch_plan_ids/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetWorkflow_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListLaunchPlanIds_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetWorkflow_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListLaunchPlanIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListWorkflowIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListLaunchPlans_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflowIds", runtime.WithHTTPPathPattern("/api/v1/workflow_ids/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListWorkflowIds_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListLaunchPlans_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListWorkflowIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListLaunchPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListWorkflowIds_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListLaunchPlans_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflowIds", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{org}/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListWorkflowIds_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListLaunchPlans_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListWorkflowIds_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListLaunchPlans_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListWorkflows_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListWorkflows_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_UpdateLaunchPlan_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListWorkflows_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListWorkflows_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateExecution", runtime.WithHTTPPathPattern("/api/v1/executions")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListWorkflows_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_CreateExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListWorkflows_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListWorkflows_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_RelaunchExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/RelaunchExecution", runtime.WithHTTPPathPattern("/api/v1/executions/relaunch")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListWorkflows_2(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_RelaunchExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListWorkflows_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_RelaunchExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListWorkflows_3, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_RecoverExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/RecoverExecution", runtime.WithHTTPPathPattern("/api/v1/executions/recover")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListWorkflows_3(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_RecoverExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListWorkflows_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_RecoverExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateLaunchPlan_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateLaunchPlan_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateLaunchPlan_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_UpdateExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateLaunchPlan_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetLaunchPlan_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetExecutionData_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetLaunchPlan_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListExecutions", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetLaunchPlan_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListExecutions_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetLaunchPlan_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetActiveLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AdminService_TerminateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetActiveLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/TerminateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetActiveLaunchPlan_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_TerminateExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetActiveLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_TerminateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetActiveLaunchPlan_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetNodeExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetActiveLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecution", runtime.WithHTTPPathPattern("/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetActiveLaunchPlan_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetNodeExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetActiveLaunchPlan_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetNodeExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListActiveLaunchPlans_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetDynamicNodeWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListActiveLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDynamicNodeWorkflow", runtime.WithHTTPPathPattern("/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListActiveLaunchPlans_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetDynamicNodeWorkflow_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListActiveLaunchPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetDynamicNodeWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListActiveLaunchPlans_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListNodeExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListActiveLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/org/{org}/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutions", runtime.WithHTTPPathPattern("/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListActiveLaunchPlans_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListNodeExecutions_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListActiveLaunchPlans_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListNodeExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListLaunchPlanIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListNodeExecutionsForTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlanIds", runtime.WithHTTPPathPattern("/api/v1/launch_plan_ids/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutionsForTask", runtime.WithHTTPPathPattern("/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListLaunchPlanIds_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListNodeExecutionsForTask_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListLaunchPlanIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListNodeExecutionsForTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListLaunchPlanIds_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetNodeExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlanIds", runtime.WithHTTPPathPattern("/api/v1/launch_plan_ids/org/{org}/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListLaunchPlanIds_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetNodeExecutionData_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListLaunchPlanIds_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetNodeExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListLaunchPlans_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_RegisterProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/RegisterProject", runtime.WithHTTPPathPattern("/api/v1/projects")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListLaunchPlans_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_RegisterProject_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListLaunchPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_RegisterProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListLaunchPlans_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProject", runtime.WithHTTPPathPattern("/api/v1/projects/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListLaunchPlans_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_UpdateProject_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListLaunchPlans_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListLaunchPlans_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListProjects_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListProjects", runtime.WithHTTPPathPattern("/api/v1/projects")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListLaunchPlans_2(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListProjects_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListLaunchPlans_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListProjects_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListLaunchPlans_3, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateWorkflowEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflowEvent", runtime.WithHTTPPathPattern("/api/v1/events/workflows")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListLaunchPlans_3(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_CreateWorkflowEvent_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListLaunchPlans_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateWorkflowEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateNodeEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateNodeEvent", runtime.WithHTTPPathPattern("/api/v1/events/nodes")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateLaunchPlan_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_CreateNodeEvent_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateNodeEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateLaunchPlan_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateTaskEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTaskEvent", runtime.WithHTTPPathPattern("/api/v1/events/tasks")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateLaunchPlan_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_CreateTaskEvent_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateLaunchPlan_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateTaskEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetTaskExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateExecution", runtime.WithHTTPPathPattern("/api/v1/executions")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecution", runtime.WithHTTPPathPattern("/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetTaskExecution_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetTaskExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_CreateExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListTaskExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{org}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskExecutions", runtime.WithHTTPPathPattern("/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateExecution_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListTaskExecutions_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListTaskExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_RelaunchExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetTaskExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/RelaunchExecution", runtime.WithHTTPPathPattern("/api/v1/executions/relaunch")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_RelaunchExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetTaskExecutionData_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_RelaunchExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetTaskExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_RelaunchExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/RelaunchExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/relaunch")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_RelaunchExecution_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_UpdateProjectDomainAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_RelaunchExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_RecoverExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/RecoverExecution", runtime.WithHTTPPathPattern("/api/v1/executions/recover")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_RecoverExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetProjectDomainAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_RecoverExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_RecoverExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AdminService_DeleteProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/RecoverExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/recover")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_RecoverExecution_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_DeleteProjectDomainAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_RecoverExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_DeleteProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{attributes.project}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_UpdateProjectAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{project}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetExecution_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetProjectAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AdminService_DeleteProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{project}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_DeleteProjectAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_DeleteProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateExecution_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_UpdateWorkflowAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/executions/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{project}/{domain}/{workflow}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetExecutionData_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetWorkflowAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetExecutionData_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AdminService_DeleteWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/org/{id.org}/executions/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{project}/{domain}/{workflow}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetExecutionData_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_DeleteWorkflowAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetExecutionData_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_DeleteWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListMatchableAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListExecutions", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListMatchableAttributes", runtime.WithHTTPPathPattern("/api/v1/matchable_attributes")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListExecutions_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListMatchableAttributes_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListMatchableAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListExecutions_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListNamedEntities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListExecutions", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNamedEntities", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListExecutions_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListNamedEntities_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListExecutions_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListNamedEntities_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("DELETE", pattern_AdminService_TerminateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetNamedEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/TerminateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_TerminateExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetNamedEntity_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_TerminateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetNamedEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("DELETE", pattern_AdminService_TerminateExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateNamedEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/TerminateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_TerminateExecution_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_UpdateNamedEntity_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_TerminateExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateNamedEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetNodeExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetVersion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecution", runtime.WithHTTPPathPattern("/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetVersion", runtime.WithHTTPPathPattern("/api/v1/version")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetNodeExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetVersion_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetNodeExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetVersion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetNodeExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetDescriptionEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecution", runtime.WithHTTPPathPattern("/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDescriptionEntity", runtime.WithHTTPPathPattern("/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetNodeExecution_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetDescriptionEntity_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetNodeExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetDescriptionEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetDynamicNodeWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDynamicNodeWorkflow", runtime.WithHTTPPathPattern("/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetDynamicNodeWorkflow_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListDescriptionEntities_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetDynamicNodeWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListDescriptionEntities_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetDynamicNodeWorkflow_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDynamicNodeWorkflow", runtime.WithHTTPPathPattern("/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetDynamicNodeWorkflow_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_ListDescriptionEntities_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetDynamicNodeWorkflow_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListDescriptionEntities_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListNodeExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetExecutionMetrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutions", runtime.WithHTTPPathPattern("/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionMetrics", runtime.WithHTTPPathPattern("/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListNodeExecutions_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := local_request_AdminService_GetExecutionMetrics_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListNodeExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetExecutionMetrics_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListNodeExecutions_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + return nil +} + +// RegisterAdminServiceHandlerFromEndpoint is same as RegisterAdminServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterAdminServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.DialContext(ctx, endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterAdminServiceHandler(ctx, mux, conn) +} + +// RegisterAdminServiceHandler registers the http handlers for service AdminService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterAdminServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterAdminServiceHandlerClient(ctx, mux, extService.NewAdminServiceClient(conn)) +} + +// RegisterAdminServiceHandlerClient registers the http handlers for service AdminService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "extService.AdminServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "extService.AdminServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "extService.AdminServiceClient" to call the correct interceptors. +func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client extService.AdminServiceClient) error { + + mux.Handle("POST", pattern_AdminService_CreateTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutions", runtime.WithHTTPPathPattern("/api/v1/node_executions/org/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTask", runtime.WithHTTPPathPattern("/api/v1/tasks")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListNodeExecutions_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_CreateTask_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListNodeExecutions_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListNodeExecutionsForTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutionsForTask", runtime.WithHTTPPathPattern("/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTask", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListNodeExecutionsForTask_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetTask_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListNodeExecutionsForTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListNodeExecutionsForTask_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListTaskIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutionsForTask", runtime.WithHTTPPathPattern("/api/v1/children/org/{task_execution_id.node_execution_id.execution_id.org}/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskIds", runtime.WithHTTPPathPattern("/api/v1/task_ids/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListNodeExecutionsForTask_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListTaskIds_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListNodeExecutionsForTask_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListTaskIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetNodeExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListTasks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetNodeExecutionData_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListTasks_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetNodeExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListTasks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetNodeExecutionData_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListTasks_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/org/{id.execution_id.org}/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTasks", runtime.WithHTTPPathPattern("/api/v1/tasks/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetNodeExecutionData_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListTasks_1(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetNodeExecutionData_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListTasks_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_RegisterProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/RegisterProject", runtime.WithHTTPPathPattern("/api/v1/projects")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_RegisterProject_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_CreateWorkflow_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_RegisterProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_RegisterProject_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/RegisterProject", runtime.WithHTTPPathPattern("/api/v1/projects/org/{project.org}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflow", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_RegisterProject_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetWorkflow_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_RegisterProject_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListWorkflowIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProject", runtime.WithHTTPPathPattern("/api/v1/projects/{id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflowIds", runtime.WithHTTPPathPattern("/api/v1/workflow_ids/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateProject_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListWorkflowIds_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListWorkflowIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateProject_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListWorkflows_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProject", runtime.WithHTTPPathPattern("/api/v1/projects/org/{org}/{id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateProject_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListWorkflows_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateProject_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListWorkflows_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListProjects_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListWorkflows_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListProjects", runtime.WithHTTPPathPattern("/api/v1/projects")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListWorkflows", runtime.WithHTTPPathPattern("/api/v1/workflows/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListProjects_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListWorkflows_1(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListProjects_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListWorkflows_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListProjects_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListProjects", runtime.WithHTTPPathPattern("/api/v1/projects/org/{org}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListProjects_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_CreateLaunchPlan_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListProjects_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateWorkflowEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflowEvent", runtime.WithHTTPPathPattern("/api/v1/events/workflows")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateWorkflowEvent_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetLaunchPlan_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateWorkflowEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateWorkflowEvent_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetActiveLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflowEvent", runtime.WithHTTPPathPattern("/api/v1/events/org/{event.execution_id.org}/workflows")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetActiveLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateWorkflowEvent_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetActiveLaunchPlan_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateWorkflowEvent_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetActiveLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateNodeEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListActiveLaunchPlans_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateNodeEvent", runtime.WithHTTPPathPattern("/api/v1/events/nodes")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListActiveLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/active_launch_plans/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateNodeEvent_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListActiveLaunchPlans_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateNodeEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListActiveLaunchPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateNodeEvent_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListLaunchPlanIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateNodeEvent", runtime.WithHTTPPathPattern("/api/v1/events/org/{event.id.execution_id.org}/nodes")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlanIds", runtime.WithHTTPPathPattern("/api/v1/launch_plan_ids/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateNodeEvent_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListLaunchPlanIds_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateNodeEvent_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListLaunchPlanIds_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateTaskEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListLaunchPlans_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTaskEvent", runtime.WithHTTPPathPattern("/api/v1/events/tasks")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateTaskEvent_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListLaunchPlans_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateTaskEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListLaunchPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AdminService_CreateTaskEvent_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListLaunchPlans_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTaskEvent", runtime.WithHTTPPathPattern("/api/v1/events/org/{event.parent_node_execution_id.execution_id.org}/tasks")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListLaunchPlans", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_CreateTaskEvent_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListLaunchPlans_1(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_CreateTaskEvent_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListLaunchPlans_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetTaskExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateLaunchPlan_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecution", runtime.WithHTTPPathPattern("/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateLaunchPlan", runtime.WithHTTPPathPattern("/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetTaskExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_UpdateLaunchPlan_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetTaskExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateLaunchPlan_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetTaskExecution_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecution", runtime.WithHTTPPathPattern("/api/v1/task_executions/org/{id.node_execution_id.execution_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateExecution", runtime.WithHTTPPathPattern("/api/v1/executions")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetTaskExecution_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_CreateExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetTaskExecution_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListTaskExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_RelaunchExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskExecutions", runtime.WithHTTPPathPattern("/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/RelaunchExecution", runtime.WithHTTPPathPattern("/api/v1/executions/relaunch")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListTaskExecutions_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_RelaunchExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListTaskExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_RelaunchExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListTaskExecutions_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_RecoverExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskExecutions", runtime.WithHTTPPathPattern("/api/v1/task_executions/org/{node_execution_id.execution_id.org}/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/RecoverExecution", runtime.WithHTTPPathPattern("/api/v1/executions/recover")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListTaskExecutions_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_RecoverExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListTaskExecutions_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_RecoverExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetTaskExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetTaskExecutionData_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetTaskExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetTaskExecutionData_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/org/{id.node_execution_id.execution_id.org}/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetTaskExecutionData_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_UpdateExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetTaskExecutionData_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateProjectDomainAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetExecutionData_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateProjectDomainAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListExecutions", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateProjectDomainAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListExecutions_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateProjectDomainAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AdminService_TerminateExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/TerminateExecution", runtime.WithHTTPPathPattern("/api/v1/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetProjectDomainAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_TerminateExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_TerminateExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetProjectDomainAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetNodeExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{org}/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecution", runtime.WithHTTPPathPattern("/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetProjectDomainAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetNodeExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetProjectDomainAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetNodeExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("DELETE", pattern_AdminService_DeleteProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetDynamicNodeWorkflow_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDynamicNodeWorkflow", runtime.WithHTTPPathPattern("/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_DeleteProjectDomainAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetDynamicNodeWorkflow_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_DeleteProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetDynamicNodeWorkflow_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("DELETE", pattern_AdminService_DeleteProjectDomainAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListNodeExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{org}/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutions", runtime.WithHTTPPathPattern("/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_DeleteProjectDomainAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListNodeExecutions_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_DeleteProjectDomainAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListNodeExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListNodeExecutionsForTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{attributes.project}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNodeExecutionsForTask", runtime.WithHTTPPathPattern("/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateProjectAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListNodeExecutionsForTask_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListNodeExecutionsForTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateProjectAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetNodeExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNodeExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateProjectAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetNodeExecutionData_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateProjectAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetNodeExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_RegisterProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{project}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/RegisterProject", runtime.WithHTTPPathPattern("/api/v1/projects")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetProjectAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_RegisterProject_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_RegisterProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetProjectAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{org}/{project}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProject", runtime.WithHTTPPathPattern("/api/v1/projects/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetProjectAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_UpdateProject_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetProjectAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("DELETE", pattern_AdminService_DeleteProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListProjects_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{project}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListProjects", runtime.WithHTTPPathPattern("/api/v1/projects")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_DeleteProjectAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListProjects_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_DeleteProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListProjects_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("DELETE", pattern_AdminService_DeleteProjectAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateWorkflowEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/org/{org}/{project}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateWorkflowEvent", runtime.WithHTTPPathPattern("/api/v1/events/workflows")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_DeleteProjectAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_CreateWorkflowEvent_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_DeleteProjectAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateWorkflowEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateNodeEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateNodeEvent", runtime.WithHTTPPathPattern("/api/v1/events/nodes")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateWorkflowAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_CreateNodeEvent_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateNodeEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateWorkflowAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AdminService_CreateTaskEvent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}/{attributes.workflow}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/CreateTaskEvent", runtime.WithHTTPPathPattern("/api/v1/events/tasks")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateWorkflowAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_CreateTaskEvent_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateWorkflowAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_CreateTaskEvent_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetTaskExecution_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{project}/{domain}/{workflow}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecution", runtime.WithHTTPPathPattern("/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetWorkflowAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetTaskExecution_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetTaskExecution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetWorkflowAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListTaskExecutions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListTaskExecutions", runtime.WithHTTPPathPattern("/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetWorkflowAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListTaskExecutions_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetWorkflowAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListTaskExecutions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("DELETE", pattern_AdminService_DeleteWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetTaskExecutionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{project}/{domain}/{workflow}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetTaskExecutionData", runtime.WithHTTPPathPattern("/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_DeleteWorkflowAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetTaskExecutionData_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_DeleteWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetTaskExecutionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("DELETE", pattern_AdminService_DeleteWorkflowAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_DeleteWorkflowAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_UpdateProjectDomainAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_DeleteWorkflowAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListMatchableAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListMatchableAttributes", runtime.WithHTTPPathPattern("/api/v1/matchable_attributes")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListMatchableAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetProjectDomainAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListMatchableAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListMatchableAttributes_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AdminService_DeleteProjectDomainAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListMatchableAttributes", runtime.WithHTTPPathPattern("/api/v1/matchable_attributes/org/{org}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectDomainAttributes", runtime.WithHTTPPathPattern("/api/v1/project_domain_attributes/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListMatchableAttributes_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_DeleteProjectDomainAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListMatchableAttributes_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_DeleteProjectDomainAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListNamedEntities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNamedEntities", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{attributes.project}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListNamedEntities_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_UpdateProjectAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListNamedEntities_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListNamedEntities_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNamedEntities", runtime.WithHTTPPathPattern("/api/v1/named_entities/org/{org}/{resource_type}/{project}/{domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{project}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListNamedEntities_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetProjectAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListNamedEntities_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetNamedEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AdminService_DeleteProjectAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteProjectAttributes", runtime.WithHTTPPathPattern("/api/v1/project_attributes/{project}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetNamedEntity_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_DeleteProjectAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetNamedEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_DeleteProjectAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetNamedEntity_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetNamedEntity_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_UpdateWorkflowAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetNamedEntity_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateNamedEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{project}/{domain}/{workflow}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateNamedEntity_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetWorkflowAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateNamedEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_AdminService_UpdateNamedEntity_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AdminService_DeleteWorkflowAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/DeleteWorkflowAttributes", runtime.WithHTTPPathPattern("/api/v1/workflow_attributes/{project}/{domain}/{workflow}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_UpdateNamedEntity_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_DeleteWorkflowAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_UpdateNamedEntity_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_DeleteWorkflowAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetVersion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListMatchableAttributes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetVersion", runtime.WithHTTPPathPattern("/api/v1/version")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListMatchableAttributes", runtime.WithHTTPPathPattern("/api/v1/matchable_attributes")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetVersion_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListMatchableAttributes_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetVersion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListMatchableAttributes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetDescriptionEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListNamedEntities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDescriptionEntity", runtime.WithHTTPPathPattern("/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListNamedEntities", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{project}/{domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetDescriptionEntity_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListNamedEntities_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetDescriptionEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListNamedEntities_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetDescriptionEntity_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetNamedEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDescriptionEntity", runtime.WithHTTPPathPattern("/api/v1/description_entities/org/{id.org}/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetDescriptionEntity_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetNamedEntity_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetDescriptionEntity_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetNamedEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_AdminService_UpdateNamedEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/UpdateNamedEntity", runtime.WithHTTPPathPattern("/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListDescriptionEntities_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_UpdateNamedEntity_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListDescriptionEntities_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_UpdateNamedEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetVersion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetVersion", runtime.WithHTTPPathPattern("/api/v1/version")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListDescriptionEntities_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetVersion_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListDescriptionEntities_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetVersion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetDescriptionEntity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetDescriptionEntity", runtime.WithHTTPPathPattern("/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListDescriptionEntities_2(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetDescriptionEntity_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListDescriptionEntities_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetDescriptionEntity_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_3, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_ListDescriptionEntities_3(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListDescriptionEntities_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_ListDescriptionEntities_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListDescriptionEntities_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetExecutionMetrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_ListDescriptionEntities_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionMetrics", runtime.WithHTTPPathPattern("/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/ListDescriptionEntities", runtime.WithHTTPPathPattern("/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetExecutionMetrics_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_ListDescriptionEntities_1(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetExecutionMetrics_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_ListDescriptionEntities_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_AdminService_GetExecutionMetrics_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_AdminService_GetExecutionMetrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionMetrics", runtime.WithHTTPPathPattern("/api/v1/metrics/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetExecutionMetrics", runtime.WithHTTPPathPattern("/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AdminService_GetExecutionMetrics_1(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AdminService_GetExecutionMetrics_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AdminService_GetExecutionMetrics_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AdminService_GetExecutionMetrics_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -18072,463 +8457,235 @@ func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu var ( pattern_AdminService_CreateTask_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "tasks"}, "")) - pattern_AdminService_CreateTask_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "tasks", "org", "id.org"}, "")) - pattern_AdminService_GetTask_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "tasks", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_GetTask_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "tasks", "org", "id.org", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_ListTaskIds_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "task_ids", "project", "domain"}, "")) - pattern_AdminService_ListTaskIds_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "tasks", "org", "project", "domain"}, "")) - pattern_AdminService_ListTasks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "tasks", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_ListTasks_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "tasks", "org", "id.org", "id.project", "id.domain", "id.name"}, "")) - - pattern_AdminService_ListTasks_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "tasks", "id.project", "id.domain"}, "")) - - pattern_AdminService_ListTasks_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "tasks", "org", "id.org", "id.project", "id.domain"}, "")) + pattern_AdminService_ListTasks_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "tasks", "id.project", "id.domain"}, "")) pattern_AdminService_CreateWorkflow_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "workflows"}, "")) - pattern_AdminService_CreateWorkflow_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "workflows", "org", "id.org"}, "")) - pattern_AdminService_GetWorkflow_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "workflows", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_GetWorkflow_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "workflows", "org", "id.org", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_ListWorkflowIds_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "workflow_ids", "project", "domain"}, "")) - pattern_AdminService_ListWorkflowIds_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "workflows", "org", "project", "domain"}, "")) - pattern_AdminService_ListWorkflows_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "workflows", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_ListWorkflows_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "workflows", "org", "id.org", "id.project", "id.domain", "id.name"}, "")) - - pattern_AdminService_ListWorkflows_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "workflows", "id.project", "id.domain"}, "")) - - pattern_AdminService_ListWorkflows_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "workflows", "org", "id.org", "id.project", "id.domain"}, "")) + pattern_AdminService_ListWorkflows_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "workflows", "id.project", "id.domain"}, "")) pattern_AdminService_CreateLaunchPlan_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "launch_plans"}, "")) - pattern_AdminService_CreateLaunchPlan_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "launch_plans", "org", "id.org"}, "")) - pattern_AdminService_GetLaunchPlan_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "launch_plans", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_GetLaunchPlan_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "launch_plans", "org", "id.org", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_GetActiveLaunchPlan_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "active_launch_plans", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_GetActiveLaunchPlan_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "active_launch_plans", "org", "id.org", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_ListActiveLaunchPlans_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "active_launch_plans", "project", "domain"}, "")) - pattern_AdminService_ListActiveLaunchPlans_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "active_launch_plans", "org", "project", "domain"}, "")) - pattern_AdminService_ListLaunchPlanIds_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "launch_plan_ids", "project", "domain"}, "")) - pattern_AdminService_ListLaunchPlanIds_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "launch_plan_ids", "org", "project", "domain"}, "")) - pattern_AdminService_ListLaunchPlans_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "launch_plans", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_ListLaunchPlans_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "launch_plans", "org", "id.org", "id.project", "id.domain", "id.name"}, "")) - - pattern_AdminService_ListLaunchPlans_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "launch_plans", "id.project", "id.domain"}, "")) - - pattern_AdminService_ListLaunchPlans_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "launch_plans", "org", "id.org", "id.project", "id.domain"}, "")) + pattern_AdminService_ListLaunchPlans_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "launch_plans", "id.project", "id.domain"}, "")) pattern_AdminService_UpdateLaunchPlan_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "launch_plans", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_UpdateLaunchPlan_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "launch_plans", "org", "id.org", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_CreateExecution_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "executions"}, "")) - pattern_AdminService_CreateExecution_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "executions", "org"}, "")) - pattern_AdminService_RelaunchExecution_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "executions", "relaunch"}, "")) - pattern_AdminService_RelaunchExecution_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "executions", "org", "id.org", "relaunch"}, "")) - pattern_AdminService_RecoverExecution_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "executions", "recover"}, "")) - pattern_AdminService_RecoverExecution_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "executions", "org", "id.org", "recover"}, "")) - pattern_AdminService_GetExecution_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "executions", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_GetExecution_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "executions", "org", "id.org", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_UpdateExecution_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "executions", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_UpdateExecution_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "executions", "org", "id.org", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_GetExecutionData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "data", "executions", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_GetExecutionData_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "data", "org", "id.org", "executions", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_ListExecutions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "executions", "id.project", "id.domain"}, "")) - pattern_AdminService_ListExecutions_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "executions", "org", "id.org", "id.project", "id.domain"}, "")) - pattern_AdminService_TerminateExecution_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "executions", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_TerminateExecution_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "executions", "org", "id.org", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_GetNodeExecution_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "node_executions", "id.execution_id.project", "id.execution_id.domain", "id.execution_id.name", "id.node_id"}, "")) - pattern_AdminService_GetNodeExecution_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "node_executions", "org", "id.execution_id.org", "id.execution_id.project", "id.execution_id.domain", "id.execution_id.name", "id.node_id"}, "")) - pattern_AdminService_GetDynamicNodeWorkflow_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"api", "v1", "node_executions", "id.execution_id.project", "id.execution_id.domain", "id.execution_id.name", "id.node_id", "dynamic_workflow"}, "")) - pattern_AdminService_GetDynamicNodeWorkflow_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 2, 9}, []string{"api", "v1", "node_executions", "org", "id.execution_id.org", "id.execution_id.project", "id.execution_id.domain", "id.execution_id.name", "id.node_id", "dynamic_workflow"}, "")) - pattern_AdminService_ListNodeExecutions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "node_executions", "workflow_execution_id.project", "workflow_execution_id.domain", "workflow_execution_id.name"}, "")) - pattern_AdminService_ListNodeExecutions_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "node_executions", "org", "workflow_execution_id.org", "workflow_execution_id.project", "workflow_execution_id.domain", "workflow_execution_id.name"}, "")) - pattern_AdminService_ListNodeExecutionsForTask_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 1, 0, 4, 1, 5, 12}, []string{"api", "v1", "children", "task_executions", "task_execution_id.node_execution_id.execution_id.project", "task_execution_id.node_execution_id.execution_id.domain", "task_execution_id.node_execution_id.execution_id.name", "task_execution_id.node_execution_id.node_id", "task_execution_id.task_id.project", "task_execution_id.task_id.domain", "task_execution_id.task_id.name", "task_execution_id.task_id.version", "task_execution_id.retry_attempt"}, "")) - pattern_AdminService_ListNodeExecutionsForTask_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 1, 0, 4, 1, 5, 12, 1, 0, 4, 1, 5, 13, 1, 0, 4, 1, 5, 14}, []string{"api", "v1", "children", "org", "task_execution_id.node_execution_id.execution_id.org", "task_executions", "task_execution_id.node_execution_id.execution_id.project", "task_execution_id.node_execution_id.execution_id.domain", "task_execution_id.node_execution_id.execution_id.name", "task_execution_id.node_execution_id.node_id", "task_execution_id.task_id.project", "task_execution_id.task_id.domain", "task_execution_id.task_id.name", "task_execution_id.task_id.version", "task_execution_id.retry_attempt"}, "")) - pattern_AdminService_GetNodeExecutionData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "data", "node_executions", "id.execution_id.project", "id.execution_id.domain", "id.execution_id.name", "id.node_id"}, "")) - pattern_AdminService_GetNodeExecutionData_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9}, []string{"api", "v1", "data", "org", "id.execution_id.org", "node_executions", "id.execution_id.project", "id.execution_id.domain", "id.execution_id.name", "id.node_id"}, "")) - pattern_AdminService_RegisterProject_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "projects"}, "")) - pattern_AdminService_RegisterProject_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "projects", "org", "project.org"}, "")) - pattern_AdminService_UpdateProject_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "projects", "id"}, "")) - pattern_AdminService_UpdateProject_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "projects", "org", "id"}, "")) - pattern_AdminService_ListProjects_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "projects"}, "")) - pattern_AdminService_ListProjects_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "projects", "org"}, "")) - pattern_AdminService_CreateWorkflowEvent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "events", "workflows"}, "")) - pattern_AdminService_CreateWorkflowEvent_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "events", "org", "event.execution_id.org", "workflows"}, "")) - pattern_AdminService_CreateNodeEvent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "events", "nodes"}, "")) - pattern_AdminService_CreateNodeEvent_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "events", "org", "event.id.execution_id.org", "nodes"}, "")) - pattern_AdminService_CreateTaskEvent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "events", "tasks"}, "")) - pattern_AdminService_CreateTaskEvent_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "events", "org", "event.parent_node_execution_id.execution_id.org", "tasks"}, "")) - pattern_AdminService_GetTaskExecution_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11}, []string{"api", "v1", "task_executions", "id.node_execution_id.execution_id.project", "id.node_execution_id.execution_id.domain", "id.node_execution_id.execution_id.name", "id.node_execution_id.node_id", "id.task_id.project", "id.task_id.domain", "id.task_id.name", "id.task_id.version", "id.retry_attempt"}, "")) - pattern_AdminService_GetTaskExecution_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 1, 0, 4, 1, 5, 12, 1, 0, 4, 1, 5, 13}, []string{"api", "v1", "task_executions", "org", "id.node_execution_id.execution_id.org", "id.node_execution_id.execution_id.project", "id.node_execution_id.execution_id.domain", "id.node_execution_id.execution_id.name", "id.node_execution_id.node_id", "id.task_id.project", "id.task_id.domain", "id.task_id.name", "id.task_id.version", "id.retry_attempt"}, "")) - pattern_AdminService_ListTaskExecutions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "task_executions", "node_execution_id.execution_id.project", "node_execution_id.execution_id.domain", "node_execution_id.execution_id.name", "node_execution_id.node_id"}, "")) - pattern_AdminService_ListTaskExecutions_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "task_executions", "org", "node_execution_id.execution_id.org", "node_execution_id.execution_id.project", "node_execution_id.execution_id.domain", "node_execution_id.execution_id.name", "node_execution_id.node_id"}, "")) - pattern_AdminService_GetTaskExecutionData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 1, 0, 4, 1, 5, 12}, []string{"api", "v1", "data", "task_executions", "id.node_execution_id.execution_id.project", "id.node_execution_id.execution_id.domain", "id.node_execution_id.execution_id.name", "id.node_execution_id.node_id", "id.task_id.project", "id.task_id.domain", "id.task_id.name", "id.task_id.version", "id.retry_attempt"}, "")) - pattern_AdminService_GetTaskExecutionData_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 1, 0, 4, 1, 5, 12, 1, 0, 4, 1, 5, 13, 1, 0, 4, 1, 5, 14}, []string{"api", "v1", "data", "org", "id.node_execution_id.execution_id.org", "task_executions", "id.node_execution_id.execution_id.project", "id.node_execution_id.execution_id.domain", "id.node_execution_id.execution_id.name", "id.node_execution_id.node_id", "id.task_id.project", "id.task_id.domain", "id.task_id.name", "id.task_id.version", "id.retry_attempt"}, "")) - pattern_AdminService_UpdateProjectDomainAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "project_domain_attributes", "attributes.project", "attributes.domain"}, "")) - pattern_AdminService_UpdateProjectDomainAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "project_domain_attributes", "org", "attributes.org", "attributes.project", "attributes.domain"}, "")) - pattern_AdminService_GetProjectDomainAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "project_domain_attributes", "project", "domain"}, "")) - pattern_AdminService_GetProjectDomainAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "project_domain_attributes", "org", "project", "domain"}, "")) - pattern_AdminService_DeleteProjectDomainAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "project_domain_attributes", "project", "domain"}, "")) - pattern_AdminService_DeleteProjectDomainAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "project_domain_attributes", "org", "project", "domain"}, "")) - pattern_AdminService_UpdateProjectAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "project_attributes", "attributes.project"}, "")) - pattern_AdminService_UpdateProjectAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "project_domain_attributes", "org", "attributes.org", "attributes.project"}, "")) - pattern_AdminService_GetProjectAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "project_attributes", "project"}, "")) - pattern_AdminService_GetProjectAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "project_domain_attributes", "org", "project"}, "")) - pattern_AdminService_DeleteProjectAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "project_attributes", "project"}, "")) - pattern_AdminService_DeleteProjectAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "project_domain_attributes", "org", "project"}, "")) - pattern_AdminService_UpdateWorkflowAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "workflow_attributes", "attributes.project", "attributes.domain", "attributes.workflow"}, "")) - pattern_AdminService_UpdateWorkflowAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "workflow_attributes", "org", "attributes.org", "attributes.project", "attributes.domain", "attributes.workflow"}, "")) - pattern_AdminService_GetWorkflowAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "workflow_attributes", "project", "domain", "workflow"}, "")) - pattern_AdminService_GetWorkflowAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "workflow_attributes", "org", "project", "domain", "workflow"}, "")) - pattern_AdminService_DeleteWorkflowAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "workflow_attributes", "project", "domain", "workflow"}, "")) - pattern_AdminService_DeleteWorkflowAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "workflow_attributes", "org", "project", "domain", "workflow"}, "")) - pattern_AdminService_ListMatchableAttributes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "matchable_attributes"}, "")) - pattern_AdminService_ListMatchableAttributes_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "matchable_attributes", "org"}, "")) - pattern_AdminService_ListNamedEntities_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "named_entities", "resource_type", "project", "domain"}, "")) - pattern_AdminService_ListNamedEntities_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "named_entities", "org", "resource_type", "project", "domain"}, "")) - pattern_AdminService_GetNamedEntity_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "named_entities", "resource_type", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_GetNamedEntity_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "named_entities", "org", "id.org", "resource_type", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_UpdateNamedEntity_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "named_entities", "resource_type", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_UpdateNamedEntity_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "named_entities", "org", "id.org", "resource_type", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_GetVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "version"}, "")) pattern_AdminService_GetDescriptionEntity_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "description_entities", "id.resource_type", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_GetDescriptionEntity_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9}, []string{"api", "v1", "description_entities", "org", "id.org", "id.resource_type", "id.project", "id.domain", "id.name", "id.version"}, "")) - pattern_AdminService_ListDescriptionEntities_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "description_entities", "resource_type", "id.project", "id.domain", "id.name"}, "")) - pattern_AdminService_ListDescriptionEntities_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "description_entities", "org", "id.org", "resource_type", "id.project", "id.domain", "id.name"}, "")) - - pattern_AdminService_ListDescriptionEntities_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "description_entities", "resource_type", "id.project", "id.domain"}, "")) - - pattern_AdminService_ListDescriptionEntities_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "description_entities", "org", "id.org", "resource_type", "id.project", "id.domain"}, "")) + pattern_AdminService_ListDescriptionEntities_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "description_entities", "resource_type", "id.project", "id.domain"}, "")) pattern_AdminService_GetExecutionMetrics_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "metrics", "executions", "id.project", "id.domain", "id.name"}, "")) - - pattern_AdminService_GetExecutionMetrics_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "metrics", "executions", "org", "id.org", "id.project", "id.domain", "id.name"}, "")) ) var ( forward_AdminService_CreateTask_0 = runtime.ForwardResponseMessage - forward_AdminService_CreateTask_1 = runtime.ForwardResponseMessage - forward_AdminService_GetTask_0 = runtime.ForwardResponseMessage - forward_AdminService_GetTask_1 = runtime.ForwardResponseMessage - forward_AdminService_ListTaskIds_0 = runtime.ForwardResponseMessage - forward_AdminService_ListTaskIds_1 = runtime.ForwardResponseMessage - forward_AdminService_ListTasks_0 = runtime.ForwardResponseMessage forward_AdminService_ListTasks_1 = runtime.ForwardResponseMessage - forward_AdminService_ListTasks_2 = runtime.ForwardResponseMessage - - forward_AdminService_ListTasks_3 = runtime.ForwardResponseMessage - forward_AdminService_CreateWorkflow_0 = runtime.ForwardResponseMessage - forward_AdminService_CreateWorkflow_1 = runtime.ForwardResponseMessage - forward_AdminService_GetWorkflow_0 = runtime.ForwardResponseMessage - forward_AdminService_GetWorkflow_1 = runtime.ForwardResponseMessage - forward_AdminService_ListWorkflowIds_0 = runtime.ForwardResponseMessage - forward_AdminService_ListWorkflowIds_1 = runtime.ForwardResponseMessage - forward_AdminService_ListWorkflows_0 = runtime.ForwardResponseMessage forward_AdminService_ListWorkflows_1 = runtime.ForwardResponseMessage - forward_AdminService_ListWorkflows_2 = runtime.ForwardResponseMessage - - forward_AdminService_ListWorkflows_3 = runtime.ForwardResponseMessage - forward_AdminService_CreateLaunchPlan_0 = runtime.ForwardResponseMessage - forward_AdminService_CreateLaunchPlan_1 = runtime.ForwardResponseMessage - forward_AdminService_GetLaunchPlan_0 = runtime.ForwardResponseMessage - forward_AdminService_GetLaunchPlan_1 = runtime.ForwardResponseMessage - forward_AdminService_GetActiveLaunchPlan_0 = runtime.ForwardResponseMessage - forward_AdminService_GetActiveLaunchPlan_1 = runtime.ForwardResponseMessage - forward_AdminService_ListActiveLaunchPlans_0 = runtime.ForwardResponseMessage - forward_AdminService_ListActiveLaunchPlans_1 = runtime.ForwardResponseMessage - forward_AdminService_ListLaunchPlanIds_0 = runtime.ForwardResponseMessage - forward_AdminService_ListLaunchPlanIds_1 = runtime.ForwardResponseMessage - forward_AdminService_ListLaunchPlans_0 = runtime.ForwardResponseMessage forward_AdminService_ListLaunchPlans_1 = runtime.ForwardResponseMessage - forward_AdminService_ListLaunchPlans_2 = runtime.ForwardResponseMessage - - forward_AdminService_ListLaunchPlans_3 = runtime.ForwardResponseMessage - forward_AdminService_UpdateLaunchPlan_0 = runtime.ForwardResponseMessage - forward_AdminService_UpdateLaunchPlan_1 = runtime.ForwardResponseMessage - forward_AdminService_CreateExecution_0 = runtime.ForwardResponseMessage - forward_AdminService_CreateExecution_1 = runtime.ForwardResponseMessage - forward_AdminService_RelaunchExecution_0 = runtime.ForwardResponseMessage - forward_AdminService_RelaunchExecution_1 = runtime.ForwardResponseMessage - forward_AdminService_RecoverExecution_0 = runtime.ForwardResponseMessage - forward_AdminService_RecoverExecution_1 = runtime.ForwardResponseMessage - forward_AdminService_GetExecution_0 = runtime.ForwardResponseMessage - forward_AdminService_GetExecution_1 = runtime.ForwardResponseMessage - forward_AdminService_UpdateExecution_0 = runtime.ForwardResponseMessage - forward_AdminService_UpdateExecution_1 = runtime.ForwardResponseMessage - forward_AdminService_GetExecutionData_0 = runtime.ForwardResponseMessage - forward_AdminService_GetExecutionData_1 = runtime.ForwardResponseMessage - forward_AdminService_ListExecutions_0 = runtime.ForwardResponseMessage - forward_AdminService_ListExecutions_1 = runtime.ForwardResponseMessage - forward_AdminService_TerminateExecution_0 = runtime.ForwardResponseMessage - forward_AdminService_TerminateExecution_1 = runtime.ForwardResponseMessage - forward_AdminService_GetNodeExecution_0 = runtime.ForwardResponseMessage - forward_AdminService_GetNodeExecution_1 = runtime.ForwardResponseMessage - forward_AdminService_GetDynamicNodeWorkflow_0 = runtime.ForwardResponseMessage - forward_AdminService_GetDynamicNodeWorkflow_1 = runtime.ForwardResponseMessage - forward_AdminService_ListNodeExecutions_0 = runtime.ForwardResponseMessage - forward_AdminService_ListNodeExecutions_1 = runtime.ForwardResponseMessage - forward_AdminService_ListNodeExecutionsForTask_0 = runtime.ForwardResponseMessage - forward_AdminService_ListNodeExecutionsForTask_1 = runtime.ForwardResponseMessage - forward_AdminService_GetNodeExecutionData_0 = runtime.ForwardResponseMessage - forward_AdminService_GetNodeExecutionData_1 = runtime.ForwardResponseMessage - forward_AdminService_RegisterProject_0 = runtime.ForwardResponseMessage - forward_AdminService_RegisterProject_1 = runtime.ForwardResponseMessage - forward_AdminService_UpdateProject_0 = runtime.ForwardResponseMessage - forward_AdminService_UpdateProject_1 = runtime.ForwardResponseMessage - forward_AdminService_ListProjects_0 = runtime.ForwardResponseMessage - forward_AdminService_ListProjects_1 = runtime.ForwardResponseMessage - forward_AdminService_CreateWorkflowEvent_0 = runtime.ForwardResponseMessage - forward_AdminService_CreateWorkflowEvent_1 = runtime.ForwardResponseMessage - forward_AdminService_CreateNodeEvent_0 = runtime.ForwardResponseMessage - forward_AdminService_CreateNodeEvent_1 = runtime.ForwardResponseMessage - forward_AdminService_CreateTaskEvent_0 = runtime.ForwardResponseMessage - forward_AdminService_CreateTaskEvent_1 = runtime.ForwardResponseMessage - forward_AdminService_GetTaskExecution_0 = runtime.ForwardResponseMessage - forward_AdminService_GetTaskExecution_1 = runtime.ForwardResponseMessage - forward_AdminService_ListTaskExecutions_0 = runtime.ForwardResponseMessage - forward_AdminService_ListTaskExecutions_1 = runtime.ForwardResponseMessage - forward_AdminService_GetTaskExecutionData_0 = runtime.ForwardResponseMessage - forward_AdminService_GetTaskExecutionData_1 = runtime.ForwardResponseMessage - forward_AdminService_UpdateProjectDomainAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_UpdateProjectDomainAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_GetProjectDomainAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_GetProjectDomainAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_DeleteProjectDomainAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_DeleteProjectDomainAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_UpdateProjectAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_UpdateProjectAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_GetProjectAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_GetProjectAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_DeleteProjectAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_DeleteProjectAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_UpdateWorkflowAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_UpdateWorkflowAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_GetWorkflowAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_GetWorkflowAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_DeleteWorkflowAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_DeleteWorkflowAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_ListMatchableAttributes_0 = runtime.ForwardResponseMessage - forward_AdminService_ListMatchableAttributes_1 = runtime.ForwardResponseMessage - forward_AdminService_ListNamedEntities_0 = runtime.ForwardResponseMessage - forward_AdminService_ListNamedEntities_1 = runtime.ForwardResponseMessage - forward_AdminService_GetNamedEntity_0 = runtime.ForwardResponseMessage - forward_AdminService_GetNamedEntity_1 = runtime.ForwardResponseMessage - forward_AdminService_UpdateNamedEntity_0 = runtime.ForwardResponseMessage - forward_AdminService_UpdateNamedEntity_1 = runtime.ForwardResponseMessage - forward_AdminService_GetVersion_0 = runtime.ForwardResponseMessage forward_AdminService_GetDescriptionEntity_0 = runtime.ForwardResponseMessage - forward_AdminService_GetDescriptionEntity_1 = runtime.ForwardResponseMessage - forward_AdminService_ListDescriptionEntities_0 = runtime.ForwardResponseMessage forward_AdminService_ListDescriptionEntities_1 = runtime.ForwardResponseMessage - forward_AdminService_ListDescriptionEntities_2 = runtime.ForwardResponseMessage - - forward_AdminService_ListDescriptionEntities_3 = runtime.ForwardResponseMessage - forward_AdminService_GetExecutionMetrics_0 = runtime.ForwardResponseMessage - - forward_AdminService_GetExecutionMetrics_1 = runtime.ForwardResponseMessage ) 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 291459fa556..30e653daa3a 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -16,141 +16,6 @@ "application/json" ], "paths": { - "/api/v1/active_launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch the active version of a :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Retrieve the active launch plan version specified by input request filters.", - "operationId": "AdminService_GetActiveLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlan" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/active_launch_plans/org/{org}/{project}/{domain}": { - "get": { - "summary": "List active versions of :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Fetch the active launch plan versions specified by input request filters.", - "operationId": "AdminService_ListActiveLaunchPlans2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required.", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, "/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}": { "get": { "summary": "Fetch the active version of a :ref:`ref_flyteidl.admin.LaunchPlan`.", @@ -286,10 +151,10 @@ ] } }, - "/api/v1/children/org/{task_execution_id.node_execution_id.execution_id.org}/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}": { + "/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}": { "get": { "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution` launched by the reference :ref:`ref_flyteidl.admin.TaskExecution`.", - "operationId": "AdminService_ListNodeExecutionsForTask2", + "operationId": "AdminService_ListNodeExecutionsForTask", "responses": { "200": { "description": "A successful response.", @@ -305,13 +170,6 @@ } }, "parameters": [ - { - "name": "task_execution_id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, { "name": "task_execution_id.node_execution_id.execution_id.project", "description": "Name of the project the resource belongs to.", @@ -396,6 +254,13 @@ "required": false, "type": "string" }, + { + "name": "task_execution_id.node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, { "name": "limit", "description": "Indicates the number of resources to be returned.\n+required", @@ -443,15 +308,15 @@ ] } }, - "/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}": { + "/api/v1/data/executions/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution` launched by the reference :ref:`ref_flyteidl.admin.TaskExecution`.", - "operationId": "AdminService_ListNodeExecutionsForTask", + "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_GetExecutionData", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNodeExecutionList" + "$ref": "#/definitions/adminWorkflowExecutionGetDataResponse" } }, "default": { @@ -463,185 +328,204 @@ }, "parameters": [ { - "name": "task_execution_id.node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.node_execution_id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.node_execution_id.execution_id.name", + "name": "id.name", "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.node_execution_id.node_id", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { + "get": { + "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.NodeExecution`.", + "operationId": "AdminService_GetNodeExecutionData", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNodeExecutionGetDataResponse" + } }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "task_execution_id.task_id.project", + "name": "id.execution_id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.task_id.domain", + "name": "id.execution_id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.task_id.name", - "description": "User provided value for the resource.", + "name": "id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.task_id.version", - "description": "Specific version of the resource.", + "name": "id.node_id", "in": "path", "required": true, "type": "string" }, { - "name": "task_execution_id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "task_execution_id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "task_execution_id.task_id.org", + "name": "id.execution_id.org", "description": "Optional, org key applied to the resource.", "in": "query", "required": false, "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "get": { + "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.TaskExecution`.", + "description": "Retrieve input and output data from an existing task execution.", + "operationId": "AdminService_GetTaskExecutionData", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminTaskExecutionGetDataResponse" + } }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "task_execution_id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, + "name": "id.node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" + "name": "id.node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" }, { - "name": "token", - "description": "In the case of multiple pages of results, the, server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, + "name": "id.node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, "type": "string" }, { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, + "name": "id.node_execution_id.node_id", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, + "name": "id.task_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/data/executions/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_GetExecutionData", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetDataResponse" - } + "name": "id.task_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "id.task_id.name", + "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "id.task_id.version", + "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User or system provided value for the resource.", + "name": "id.retry_attempt", "in": "path", "required": true, + "type": "integer", + "format": "int64" + }, + { + "name": "id.task_id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + }, + { + "name": "id.task_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.org", + "name": "id.node_execution_id.execution_id.org", "description": "Optional, org key applied to the resource.", "in": "query", "required": false, @@ -653,15 +537,16 @@ ] } }, - "/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { + "/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}": { "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecutionData", + "summary": "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object.", + "description": "Retrieve an existing description entity description.", + "operationId": "AdminService_GetDescriptionEntity", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNodeExecutionGetDataResponse" + "$ref": "#/definitions/adminDescriptionEntity" } }, "default": { @@ -673,34 +558,49 @@ }, "parameters": [ { - "name": "id.execution_id.project", + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", + "name": "id.name", + "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.node_id", + "name": "id.version", + "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.org", + "name": "id.org", "description": "Optional, org key applied to the resource.", "in": "query", "required": false, @@ -712,15 +612,16 @@ ] } }, - "/api/v1/data/org/{id.execution_id.org}/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { + "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}": { "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecutionData2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", + "description": "Fetch existing description entity definitions matching input filters.", + "operationId": "AdminService_ListDescriptionEntities2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNodeExecutionGetDataResponse" + "$ref": "#/definitions/adminDescriptionEntityList" } }, "default": { @@ -732,38 +633,87 @@ }, "parameters": [ { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", + "name": "resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", "in": "path", "required": true, - "type": "string" + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] }, { - "name": "id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.node_id", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" } ], "tags": [ @@ -771,16 +721,16 @@ ] } }, - "/api/v1/data/org/{id.node_execution_id.execution_id.org}/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve input and output data from an existing task execution.", - "operationId": "AdminService_GetTaskExecutionData2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", + "description": "Fetch existing description entity definitions matching input filters.", + "operationId": "AdminService_ListDescriptionEntities", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskExecutionGetDataResponse" + "$ref": "#/definitions/adminDescriptionEntityList" } }, "default": { @@ -792,4228 +742,104 @@ }, "parameters": [ { - "name": "id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", + "name": "resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", "in": "path", "required": true, - "type": "string" + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] }, { - "name": "id.node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/data/org/{id.org}/executions/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_GetExecutionData2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetDataResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { - "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve input and output data from an existing task execution.", - "operationId": "AdminService_GetTaskExecutionData", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskExecutionGetDataResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.node_execution_id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/org/{id.org}/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object.", - "description": "Retrieve an existing description entity description.", - "operationId": "AdminService_GetDescriptionEntity2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities4", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object.", - "description": "Retrieve an existing description entity description.", - "operationId": "AdminService_GetDescriptionEntity", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities3", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/nodes": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", - "description": "Create a node execution event recording a phase transition.", - "operationId": "AdminService_CreateNodeEvent", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to send a notification that a node execution event has occurred.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminNodeExecutionEventRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/org/{event.execution_id.org}/workflows": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred.", - "description": "Create a workflow execution event recording a phase transition.", - "operationId": "AdminService_CreateWorkflowEvent2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "event.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateWorkflowEventBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/org/{event.id.execution_id.org}/nodes": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", - "description": "Create a node execution event recording a phase transition.", - "operationId": "AdminService_CreateNodeEvent2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "event.id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateNodeEventBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/org/{event.parent_node_execution_id.execution_id.org}/tasks": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.TaskExecutionEvent` has occurred.", - "description": "Create a task execution event recording a phase transition.", - "operationId": "AdminService_CreateTaskEvent2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "event.parent_node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateTaskEventBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/tasks": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.TaskExecutionEvent` has occurred.", - "description": "Create a task execution event recording a phase transition.", - "operationId": "AdminService_CreateTaskEvent", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to send a notification that a task execution event has occurred.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminTaskExecutionEventRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/events/workflows": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred.", - "description": "Create a workflow execution event recording a phase transition.", - "operationId": "AdminService_CreateWorkflowEvent", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to send a notification that a workflow execution event has occurred.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionEventRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions": { - "post": { - "summary": "Triggers the creation of a :ref:`ref_flyteidl.admin.Execution`", - "description": "Create a workflow execution.", - "operationId": "AdminService_CreateExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to launch an execution with the given project, domain and optionally-assigned name.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminExecutionCreateRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{id.org}/recover": { - "post": { - "summary": "Recreates a previously-run workflow execution that will only start executing from the last known failure point.\nIn Recover mode, users cannot change any input parameters or update the version of the execution.\nThis is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures,\ndownstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\nSee :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details.", - "description": "Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.", - "operationId": "AdminService_RecoverExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceRecoverExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{id.org}/relaunch": { - "post": { - "summary": "Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution`", - "description": "Relaunch a workflow execution.", - "operationId": "AdminService_RelaunchExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceRelaunchExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_ListExecutions2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve an existing workflow execution.", - "operationId": "AdminService_GetExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Terminates an in-progress :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_TerminateExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionTerminateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceTerminateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Update execution belonging to project domain :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_UpdateExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/org/{org}": { - "put": { - "summary": "Triggers the creation of a :ref:`ref_flyteidl.admin.Execution`", - "description": "Create a workflow execution.", - "operationId": "AdminService_CreateExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/recover": { - "post": { - "summary": "Recreates a previously-run workflow execution that will only start executing from the last known failure point.\nIn Recover mode, users cannot change any input parameters or update the version of the execution.\nThis is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures,\ndownstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\nSee :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details.", - "description": "Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.", - "operationId": "AdminService_RecoverExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to recover the referenced execution.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminExecutionRecoverRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/relaunch": { - "post": { - "summary": "Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution`", - "description": "Relaunch a workflow execution.", - "operationId": "AdminService_RelaunchExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to relaunch the referenced execution.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminExecutionRelaunchRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_ListExecutions", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/executions/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve an existing workflow execution.", - "operationId": "AdminService_GetExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Terminates an in-progress :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_TerminateExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionTerminateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceTerminateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Update execution belonging to project domain :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_UpdateExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plan_ids/org/{org}/{project}/{domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects.", - "description": "Fetch existing launch plan definition identifiers matching input filters.", - "operationId": "AdminService_ListLaunchPlanIds2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plan_ids/{project}/{domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects.", - "description": "Fetch existing launch plan definition identifiers matching input filters.", - "operationId": "AdminService_ListLaunchPlanIds", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.LaunchPlan` definition", - "description": "Create and register a launch plan definition.", - "operationId": "AdminService_CreateLaunchPlan", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanCreateResponse" - } - }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/adminLaunchPlanCreateRequest" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/org/{id.org}": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.LaunchPlan` definition", - "description": "Create and register a launch plan definition.", - "operationId": "AdminService_CreateLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanCreateResponse" - } - }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateLaunchPlanBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans4", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition.", - "description": "Retrieve an existing launch plan definition.", - "operationId": "AdminService_GetLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlan" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.", - "operationId": "AdminService_UpdateLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "state", - "description": "Desired state to apply to the launch plan.\n+required.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "INACTIVE", - "ACTIVE" - ], - "default": "INACTIVE" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans3", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition.", - "description": "Retrieve an existing launch plan definition.", - "operationId": "AdminService_GetLaunchPlan", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlan" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.", - "operationId": "AdminService_UpdateLaunchPlan", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateLaunchPlanBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/matchable_attributes": { - "get": { - "summary": "Lists custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a specific resource type.", - "description": "Retrieve a list of MatchableAttributesConfiguration objects.", - "operationId": "AdminService_ListMatchableAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminListMatchableAttributesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - }, - { - "name": "org", - "description": "Optional, org filter applied to list project requests.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/matchable_attributes/org/{org}": { - "get": { - "summary": "Lists custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a specific resource type.", - "description": "Retrieve a list of MatchableAttributesConfiguration objects.", - "operationId": "AdminService_ListMatchableAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminListMatchableAttributesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org filter applied to list project requests.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/metrics/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve metrics from an existing workflow execution.", - "operationId": "AdminService_GetExecutionMetrics2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetMetricsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "depth", - "description": "depth defines the number of Flyte entity levels to traverse when breaking down execution details.", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve metrics from an existing workflow execution.", - "operationId": "AdminService_GetExecutionMetrics", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetMetricsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "depth", - "description": "depth defines the number of Flyte entity levels to traverse when breaking down execution details.", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/named_entities/org/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Retrieve a NamedEntity object.", - "operationId": "AdminService_GetNamedEntity2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Resource type of the metadata to get. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Update the fields associated with a NamedEntity", - "operationId": "AdminService_UpdateNamedEntity2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Resource type of the metadata to update\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateNamedEntityBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/named_entities/org/{org}/{resource_type}/{project}/{domain}": { - "get": { - "summary": "Returns a list of :ref:`ref_flyteidl.admin.NamedEntity` objects.", - "description": "Retrieve a list of NamedEntity objects sharing a common resource type, project, and domain.", - "operationId": "AdminService_ListNamedEntities2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Resource type of the metadata to query. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Retrieve a NamedEntity object.", - "operationId": "AdminService_GetNamedEntity", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Resource type of the metadata to get. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Update the fields associated with a NamedEntity", - "operationId": "AdminService_UpdateNamedEntity", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Resource type of the metadata to update\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateNamedEntityBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/named_entities/{resource_type}/{project}/{domain}": { - "get": { - "summary": "Returns a list of :ref:`ref_flyteidl.admin.NamedEntity` objects.", - "description": "Retrieve a list of NamedEntity objects sharing a common resource type, project, and domain.", - "operationId": "AdminService_ListNamedEntities", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "resource_type", - "description": "Resource type of the metadata to query. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/flyteidladminNodeExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.DynamicNodeWorkflowResponse`.", - "operationId": "AdminService_GetDynamicNodeWorkflow2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDynamicNodeWorkflowResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/org/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_ListNodeExecutions2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "workflow_execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "unique_parent_id", - "description": "Unique identifier of the parent node in the execution\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecution", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/flyteidladminNodeExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.DynamicNodeWorkflowResponse`.", - "operationId": "AdminService_GetDynamicNodeWorkflow", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDynamicNodeWorkflowResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_ListNodeExecutions", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "workflow_execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "unique_parent_id", - "description": "Unique identifier of the parent node in the execution\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_attributes/{attributes.project}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", - "description": "Update the customized resource attributes associated with a project", - "operationId": "AdminService_UpdateProjectAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_attributes/{project}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project", - "operationId": "AdminService_GetProjectAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - }, - { - "name": "org", - "description": "Optional, org key applied to the project.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project", - "operationId": "AdminService_DeleteProjectAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesDeleteResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", - "description": "Update the customized resource attributes associated with a project", - "operationId": "AdminService_UpdateProjectAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "attributes.org", - "description": "Optional, org key applied to the project.", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", "in": "path", "required": true, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Update the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_UpdateProjectDomainAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "attributes.org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" }, { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" }, { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", - "in": "path", - "required": true, + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectDomainAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/project_domain_attributes/org/{org}/{project}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project", - "operationId": "AdminService_GetProjectAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the project.", - "in": "path", - "required": true, + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, "type": "string" }, { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", "in": "query", "required": false, "type": "string", "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" + "DESCENDING", + "ASCENDING" ], - "default": "TASK_RESOURCE" + "default": "DESCENDING" } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project", - "operationId": "AdminService_DeleteProjectAttributes2", + } + }, + "/api/v1/events/nodes": { + "post": { + "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", + "description": "Create a node execution event recording a phase transition.", + "operationId": "AdminService_CreateNodeEvent", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectAttributesDeleteResponse" + "$ref": "#/definitions/adminNodeExecutionEventResponse" } }, "default": { @@ -5024,26 +850,13 @@ } }, "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to send a notification that a node execution event has occurred.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectAttributesBody" + "$ref": "#/definitions/adminNodeExecutionEventRequest" } } ], @@ -5052,16 +865,16 @@ ] } }, - "/api/v1/project_domain_attributes/org/{org}/{project}/{domain}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_GetProjectDomainAttributes2", + "/api/v1/events/tasks": { + "post": { + "summary": "Indicates a :ref:`ref_flyteidl.event.TaskExecutionEvent` has occurred.", + "description": "Create a task execution event recording a phase transition.", + "operationId": "AdminService_CreateTaskEvent", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesGetResponse" + "$ref": "#/definitions/adminTaskExecutionEventResponse" } }, "default": { @@ -5073,58 +886,30 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", + "name": "body", + "description": "Request to send a notification that a task execution event has occurred.", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" + "schema": { + "$ref": "#/definitions/adminTaskExecutionEventRequest" + } } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_DeleteProjectDomainAttributes2", + } + }, + "/api/v1/events/workflows": { + "post": { + "summary": "Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred.", + "description": "Create a workflow execution event recording a phase transition.", + "operationId": "AdminService_CreateWorkflowEvent", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesDeleteResponse" + "$ref": "#/definitions/adminWorkflowExecutionEventResponse" } }, "default": { @@ -5135,51 +920,31 @@ } }, "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to send a notification that a workflow execution event has occurred.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectDomainAttributesBody" + "$ref": "#/definitions/adminWorkflowExecutionEventRequest" } } ], "tags": [ "AdminService" - ] - } - }, - "/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Update the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_UpdateProjectDomainAttributes", + ] + } + }, + "/api/v1/executions": { + "post": { + "summary": "Triggers the creation of a :ref:`ref_flyteidl.admin.Execution`", + "description": "Create a workflow execution.", + "operationId": "AdminService_CreateExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesUpdateResponse" + "$ref": "#/definitions/adminExecutionCreateResponse" } }, "default": { @@ -5190,26 +955,13 @@ } }, "parameters": [ - { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to launch an execution with the given project, domain and optionally-assigned name.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectDomainAttributesBody" + "$ref": "#/definitions/adminExecutionCreateRequest" } } ], @@ -5218,16 +970,16 @@ ] } }, - "/api/v1/project_domain_attributes/{project}/{domain}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_GetProjectDomainAttributes", + "/api/v1/executions/recover": { + "post": { + "summary": "Recreates a previously-run workflow execution that will only start executing from the last known failure point.\nIn Recover mode, users cannot change any input parameters or update the version of the execution.\nThis is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures,\ndownstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\nSee :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details.", + "description": "Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.", + "operationId": "AdminService_RecoverExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesGetResponse" + "$ref": "#/definitions/adminExecutionCreateResponse" } }, "default": { @@ -5239,58 +991,30 @@ }, "parameters": [ { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", + "name": "body", + "description": "Request to recover the referenced execution.", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - }, - { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "query", - "required": false, - "type": "string" + "schema": { + "$ref": "#/definitions/adminExecutionRecoverRequest" + } } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_DeleteProjectDomainAttributes", + } + }, + "/api/v1/executions/relaunch": { + "post": { + "summary": "Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution`", + "description": "Relaunch a workflow execution.", + "operationId": "AdminService_RelaunchExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesDeleteResponse" + "$ref": "#/definitions/adminExecutionCreateResponse" } }, "default": { @@ -5301,26 +1025,13 @@ } }, "parameters": [ - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to relaunch the referenced execution.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectDomainAttributesBody" + "$ref": "#/definitions/adminExecutionRelaunchRequest" } } ], @@ -5329,16 +1040,15 @@ ] } }, - "/api/v1/projects": { + "/api/v1/executions/{id.project}/{id.domain}": { "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.Project`", - "description": "Fetch registered projects.", - "operationId": "AdminService_ListProjects", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_ListExecutions", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjects" + "$ref": "#/definitions/adminExecutionList" } }, "default": { @@ -5349,9 +1059,37 @@ } }, "parameters": [ + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, { "name": "limit", - "description": "Indicates the number of projects to be returned.\n+required", + "description": "Indicates the number of resources to be returned.\n+required", "in": "query", "required": false, "type": "integer", @@ -5389,27 +1127,23 @@ "ASCENDING" ], "default": "DESCENDING" - }, - { - "name": "org", - "description": "Optional, org filter applied to list project requests.", - "in": "query", - "required": false, - "type": "string" } ], "tags": [ "AdminService" ] - }, - "post": { - "summary": "Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment.", - "operationId": "AdminService_RegisterProject", + } + }, + "/api/v1/executions/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.Execution`.", + "description": "Retrieve an existing workflow execution.", + "operationId": "AdminService_GetExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectRegisterResponse" + "$ref": "#/definitions/adminExecution" } }, "default": { @@ -5421,29 +1155,46 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/adminProjectRegisterRequest" - } + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/projects/org/{org}": { - "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.Project`", - "description": "Fetch registered projects.", - "operationId": "AdminService_ListProjects2", + }, + "delete": { + "summary": "Terminates an in-progress :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_TerminateExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjects" + "$ref": "#/definitions/adminExecutionTerminateResponse" } }, "default": { @@ -5455,69 +1206,47 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org filter applied to list project requests.", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of projects to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceTerminateExecutionBody" + } } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/projects/org/{org}/{id}": { + }, "put": { - "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", - "description": "Update a project.", - "operationId": "AdminService_UpdateProject2", + "summary": "Update execution belonging to project domain :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_UpdateExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectUpdateResponse" + "$ref": "#/definitions/adminExecutionUpdateResponse" } }, "default": { @@ -5529,15 +1258,22 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the resource.", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id", - "description": "Globally unique project name.", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" @@ -5547,7 +1283,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectBody" + "$ref": "#/definitions/AdminServiceUpdateExecutionBody" } } ], @@ -5556,15 +1292,16 @@ ] } }, - "/api/v1/projects/org/{project.org}": { - "post": { - "summary": "Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment.", - "operationId": "AdminService_RegisterProject2", + "/api/v1/launch_plan_ids/{project}/{domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects.", + "description": "Fetch existing launch plan definition identifiers matching input filters.", + "operationId": "AdminService_ListLaunchPlanIds", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectRegisterResponse" + "$ref": "#/definitions/adminNamedEntityIdentifierList" } }, "default": { @@ -5576,19 +1313,66 @@ }, "parameters": [ { - "name": "project.org", - "description": "Optional, org key applied to the resource.", + "name": "project", + "description": "Name of the project that contains the identifiers.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "body", - "in": "body", + "name": "domain", + "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceRegisterProjectBody" - } + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -5596,18 +1380,26 @@ ] } }, - "/api/v1/projects/{id}": { - "put": { - "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", - "description": "Update a project.", - "operationId": "AdminService_UpdateProject", + "/api/v1/launch_plans": { + "post": { + "summary": "Create and upload a :ref:`ref_flyteidl.admin.LaunchPlan` definition", + "description": "Create and register a launch plan definition.", + "operationId": "AdminService_CreateLaunchPlan", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminProjectUpdateResponse" + "$ref": "#/definitions/adminLaunchPlanCreateResponse" } }, + "400": { + "description": "Returned for bad request that may have failed validation.", + "schema": {} + }, + "409": { + "description": "Returned for a request that references an identical entity that has already been registered.", + "schema": {} + }, "default": { "description": "An unexpected error response.", "schema": { @@ -5616,19 +1408,13 @@ } }, "parameters": [ - { - "name": "id", - "description": "Globally unique project name.", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectBody" + "$ref": "#/definitions/adminLaunchPlanCreateRequest" } } ], @@ -5637,16 +1423,16 @@ ] } }, - "/api/v1/task_executions/org/{id.node_execution_id.execution_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "/api/v1/launch_plans/{id.project}/{id.domain}": { "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve an existing task execution.", - "operationId": "AdminService_GetTaskExecution2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", + "description": "Fetch existing launch plan definitions matching input filters.", + "operationId": "AdminService_ListLaunchPlans2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/flyteidladminTaskExecution" + "$ref": "#/definitions/adminLaunchPlanList" } }, "default": { @@ -5658,95 +1444,73 @@ }, "parameters": [ { - "name": "id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.node_execution_id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.task_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" }, { - "name": "id.task_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.task_id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.task_id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, "type": "string" }, { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", "in": "query", "required": false, "type": "string", "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" + "DESCENDING", + "ASCENDING" ], - "default": "UNSPECIFIED" - }, - { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" + "default": "DESCENDING" } ], "tags": [ @@ -5754,16 +1518,16 @@ ] } }, - "/api/v1/task_executions/org/{node_execution_id.execution_id.org}/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}": { + "/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Fetch existing task executions matching input filters.", - "operationId": "AdminService_ListTaskExecutions2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", + "description": "Fetch existing launch plan definitions matching input filters.", + "operationId": "AdminService_ListLaunchPlans", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskExecutionList" + "$ref": "#/definitions/adminLaunchPlanList" } }, "default": { @@ -5775,37 +1539,31 @@ }, "parameters": [ { - "name": "node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.node_id", - "in": "path", - "required": true, + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, "type": "string" }, { @@ -5818,7 +1576,7 @@ }, { "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", "in": "query", "required": false, "type": "string" @@ -5855,16 +1613,16 @@ ] } }, - "/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}": { "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve an existing task execution.", - "operationId": "AdminService_GetTaskExecution", + "summary": "Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition.", + "description": "Retrieve an existing launch plan definition.", + "operationId": "AdminService_GetLaunchPlan", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/flyteidladminTaskExecution" + "$ref": "#/definitions/adminLaunchPlan" } }, "default": { @@ -5876,69 +1634,35 @@ }, "parameters": [ { - "name": "id.node_execution_id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.task_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.task_id.name", + "name": "id.name", "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.task_id.version", + "name": "id.version", "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", + "name": "id.resource_type", "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", "in": "query", "required": false, @@ -5953,14 +1677,7 @@ "default": "UNSPECIFIED" }, { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.org", + "name": "id.org", "description": "Optional, org key applied to the resource.", "in": "query", "required": false, @@ -5970,18 +1687,16 @@ "tags": [ "AdminService" ] - } - }, - "/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}": { - "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Fetch existing task executions matching input filters.", - "operationId": "AdminService_ListTaskExecutions", + }, + "put": { + "summary": "Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`.", + "description": "Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.", + "operationId": "AdminService_UpdateLaunchPlan", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskExecutionList" + "$ref": "#/definitions/adminLaunchPlanUpdateResponse" } }, "default": { @@ -5993,79 +1708,91 @@ }, "parameters": [ { - "name": "node_execution_id.execution_id.project", + "name": "id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.domain", + "name": "id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", + "name": "id.name", + "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.node_id", + "name": "id.version", + "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateLaunchPlanBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/matchable_attributes": { + "get": { + "summary": "Lists custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a specific resource type.", + "description": "Retrieve a list of MatchableAttributesConfiguration objects.", + "operationId": "AdminService_ListMatchableAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminListMatchableAttributesResponse" + } }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "name": "resource_type", + "description": "+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", "in": "query", "required": false, - "type": "string" + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", + "name": "org", + "description": "Optional, org filter applied to list project requests.", "in": "query", "required": false, "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" } ], "tags": [ @@ -6073,16 +1800,16 @@ ] } }, - "/api/v1/task_ids/{project}/{domain}": { + "/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of task objects.", - "description": "Fetch existing task definition identifiers matching input filters.", - "operationId": "AdminService_ListTaskIds", + "summary": "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`.", + "description": "Retrieve metrics from an existing workflow execution.", + "operationId": "AdminService_GetExecutionMetrics", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" + "$ref": "#/definitions/adminWorkflowExecutionGetMetricsResponse" } }, "default": { @@ -6094,66 +1821,40 @@ }, "parameters": [ { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", + "name": "id.org", + "description": "Optional, org key applied to the resource.", "in": "query", "required": false, "type": "string" }, { - "name": "org", - "description": "Optional, org key applied to the resource.", + "name": "depth", + "description": "depth defines the number of Flyte entity levels to traverse when breaking down execution details.", "in": "query", "required": false, - "type": "string" + "type": "integer", + "format": "int32" } ], "tags": [ @@ -6161,26 +1862,18 @@ ] } }, - "/api/v1/tasks": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Task` definition", - "description": "Create and register a task definition.", - "operationId": "AdminService_CreateTask", + "/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object.", + "description": "Retrieve a NamedEntity object.", + "operationId": "AdminService_GetNamedEntity", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/flyteidladminTaskCreateResponse" + "$ref": "#/definitions/adminNamedEntity" } }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, "default": { "description": "An unexpected error response.", "schema": { @@ -6190,39 +1883,63 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "resource_type", + "description": "Resource type of the metadata to get. One of Task, Workflow or LaunchPlan.\n+required", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/flyteidladminTaskCreateRequest" - } + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/tasks/org/{id.org}": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Task` definition", - "description": "Create and register a task definition.", - "operationId": "AdminService_CreateTask2", + }, + "put": { + "summary": "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object.", + "description": "Update the fields associated with a NamedEntity", + "operationId": "AdminService_UpdateNamedEntity", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/flyteidladminTaskCreateResponse" + "$ref": "#/definitions/adminNamedEntityUpdateResponse" } }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, "default": { "description": "An unexpected error response.", "schema": { @@ -6232,8 +1949,36 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", + "name": "resource_type", + "description": "Resource type of the metadata to update\n+required", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", "in": "path", "required": true, "type": "string" @@ -6243,7 +1988,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/serviceAdminServiceCreateTaskBody" + "$ref": "#/definitions/AdminServiceUpdateNamedEntityBody" } } ], @@ -6252,16 +1997,16 @@ ] } }, - "/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}": { + "/api/v1/named_entities/{resource_type}/{project}/{domain}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks4", + "summary": "Returns a list of :ref:`ref_flyteidl.admin.NamedEntity` objects.", + "description": "Retrieve a list of NamedEntity objects sharing a common resource type, project, and domain.", + "operationId": "AdminService_ListNamedEntities", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskList" + "$ref": "#/definitions/adminNamedEntityList" } }, "default": { @@ -6273,36 +2018,36 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", + "name": "resource_type", + "description": "Resource type of the metadata to query. One of Task, Workflow or LaunchPlan.\n+required", "in": "path", "required": true, - "type": "string" + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] }, { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "project", + "description": "Name of the project that contains the identifiers.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "domain", + "description": "Name of the domain the identifiers belongs to within the project.", "in": "path", "required": true, "type": "string" }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, { "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", + "description": "Indicates the number of resources to be returned.", "in": "query", "required": false, "type": "integer", @@ -6310,14 +2055,7 @@ }, { "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", "in": "query", "required": false, "type": "string" @@ -6340,6 +2078,20 @@ "ASCENDING" ], "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -6347,16 +2099,15 @@ ] } }, - "/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}": { + "/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks2", + "summary": "Fetches a :ref:`ref_flyteidl.admin.NodeExecution`.", + "operationId": "AdminService_GetNodeExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskList" + "$ref": "#/definitions/flyteidladminNodeExecution" } }, "default": { @@ -6368,73 +2119,38 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", + "name": "id.execution_id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", + "name": "id.execution_id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "name": "id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, + "name": "id.node_id", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", + "name": "id.execution_id.org", + "description": "Optional, org key applied to the resource.", "in": "query", "required": false, "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" } ], "tags": [ @@ -6442,16 +2158,15 @@ ] } }, - "/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { + "/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow": { "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Task` definition.", - "description": "Retrieve an existing task definition.", - "operationId": "AdminService_GetTask2", + "summary": "Fetches a :ref:`ref_flyteidl.admin.DynamicNodeWorkflowResponse`.", + "operationId": "AdminService_GetDynamicNodeWorkflow", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTask" + "$ref": "#/definitions/adminDynamicNodeWorkflowResponse" } }, "default": { @@ -6463,54 +2178,38 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", + "name": "id.execution_id.project", "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", + "name": "id.execution_id.domain", "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.", + "name": "id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "id.version", - "description": "Specific version of the resource.", + "name": "id.node_id", "in": "path", "required": true, "type": "string" }, { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "name": "id.execution_id.org", + "description": "Optional, org key applied to the resource.", "in": "query", "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" + "type": "string" } ], "tags": [ @@ -6518,16 +2217,15 @@ ] } }, - "/api/v1/tasks/org/{org}/{project}/{domain}": { + "/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of task objects.", - "description": "Fetch existing task definition identifiers matching input filters.", - "operationId": "AdminService_ListTaskIds2", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution`.", + "operationId": "AdminService_ListNodeExecutions", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" + "$ref": "#/definitions/adminNodeExecutionList" } }, "default": { @@ -6539,26 +2237,33 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the resource.", + "name": "workflow_execution_id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", + "name": "workflow_execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "name": "workflow_execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, + { + "name": "workflow_execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, { "name": "limit", "description": "Indicates the number of resources to be returned.\n+required", @@ -6569,7 +2274,13 @@ }, { "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", "in": "query", "required": false, "type": "string" @@ -6594,8 +2305,8 @@ "default": "DESCENDING" }, { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", + "name": "unique_parent_id", + "description": "Unique identifier of the parent node in the execution\n+optional", "in": "query", "required": false, "type": "string" @@ -6606,16 +2317,16 @@ ] } }, - "/api/v1/tasks/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks3", + "/api/v1/project_attributes/{attributes.project}": { + "put": { + "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", + "description": "Update the customized resource attributes associated with a project", + "operationId": "AdminService_UpdateProjectAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskList" + "$ref": "#/definitions/adminProjectAttributesUpdateResponse" } }, "default": { @@ -6627,90 +2338,244 @@ }, "parameters": [ { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "attributes.project", + "description": "Unique project id for which this set of attributes will be applied.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/project_attributes/{project}": { + "get": { + "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Retrieve the customized resource attributes associated with a project", + "operationId": "AdminService_GetProjectAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectAttributesGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "name": "resource_type", + "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", "in": "query", "required": false, - "type": "string" + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" }, { - "name": "id.org", - "description": "Optional, org key applied to the resource.", + "name": "org", + "description": "Optional, org key applied to the project.", "in": "query", "required": false, "type": "string" + } + ], + "tags": [ + "AdminService" + ] + }, + "delete": { + "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Delete the customized resource attributes associated with a project", + "operationId": "AdminService_DeleteProjectAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectAttributesDeleteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceDeleteProjectAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}": { + "put": { + "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Update the customized resource attributes associated with a project-domain combination", + "operationId": "AdminService_UpdateProjectDomainAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectDomainAttributesUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "attributes.project", + "description": "Unique project id for which this set of attributes will be applied.", + "in": "path", + "required": true, + "type": "string" }, { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, + "name": "attributes.domain", + "description": "Unique domain id for which this set of attributes will be applied.", + "in": "path", + "required": true, "type": "string" }, { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectDomainAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/project_domain_attributes/{project}/{domain}": { + "get": { + "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Retrieve the customized resource attributes associated with a project-domain combination", + "operationId": "AdminService_GetProjectDomainAttributes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectDomainAttributesGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", + "in": "path", + "required": true, "type": "string" }, { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "name": "resource_type", + "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", "in": "query", "required": false, "type": "string", "enum": [ - "DESCENDING", - "ASCENDING" + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" ], - "default": "DESCENDING" + "default": "TASK_RESOURCE" + }, + { + "name": "org", + "description": "Optional, org key applied to the attributes.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/tasks/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks", + }, + "delete": { + "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Delete the customized resource attributes associated with a project-domain combination", + "operationId": "AdminService_DeleteProjectDomainAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskList" + "$ref": "#/definitions/adminProjectDomainAttributesDeleteResponse" } }, "default": { @@ -6722,36 +2587,56 @@ }, "parameters": [ { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" + "schema": { + "$ref": "#/definitions/AdminServiceDeleteProjectDomainAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/projects": { + "get": { + "summary": "Fetches a list of :ref:`ref_flyteidl.admin.Project`", + "description": "Fetch registered projects.", + "operationId": "AdminService_ListProjects", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjects" + } }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", + "description": "Indicates the number of projects to be returned.\n+required", "in": "query", "required": false, "type": "integer", @@ -6789,23 +2674,27 @@ "ASCENDING" ], "default": "DESCENDING" + }, + { + "name": "org", + "description": "Optional, org filter applied to list project requests.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Task` definition.", - "description": "Retrieve an existing task definition.", - "operationId": "AdminService_GetTask", + }, + "post": { + "summary": "Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment.", + "operationId": "AdminService_RegisterProject", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTask" + "$ref": "#/definitions/adminProjectRegisterResponse" } }, "default": { @@ -6817,54 +2706,12 @@ }, "parameters": [ { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" + "schema": { + "$ref": "#/definitions/adminProjectRegisterRequest" + } } ], "tags": [ @@ -6872,15 +2719,16 @@ ] } }, - "/api/v1/version": { - "get": { - "description": "Retrieve the Version (including the Build information) for FlyteAdmin service", - "operationId": "AdminService_GetVersion", + "/api/v1/projects/{id}": { + "put": { + "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", + "description": "Update a project.", + "operationId": "AdminService_UpdateProject", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminGetVersionResponse" + "$ref": "#/definitions/adminProjectUpdateResponse" } }, "default": { @@ -6890,21 +2738,38 @@ } } }, + "parameters": [ + { + "name": "id", + "description": "Globally unique project name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectBody" + } + } + ], "tags": [ "AdminService" ] } }, - "/api/v1/workflow_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}/{attributes.workflow}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Update the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_UpdateWorkflowAttributes2", + "/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.TaskExecution`.", + "description": "Retrieve an existing task execution.", + "operationId": "AdminService_GetTaskExecution", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowAttributesUpdateResponse" + "$ref": "#/definitions/flyteidladminTaskExecution" } }, "default": { @@ -6916,127 +2781,112 @@ }, "parameters": [ { - "name": "attributes.org", - "description": "Optional, org key applied to the attributes.", + "name": "id.node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", + "name": "id.node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", + "name": "id.node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "attributes.workflow", - "description": "Workflow name for which this set of attributes will be applied.", + "name": "id.node_execution_id.node_id", "in": "path", "required": true, "type": "string" }, { - "name": "body", - "in": "body", + "name": "id.task_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateWorkflowAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Retrieve the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_GetWorkflowAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowAttributesGetResponse" - } + "type": "string" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the attributes.", + "name": "id.task_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", + "name": "id.task_id.name", + "description": "User provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", + "name": "id.task_id.version", + "description": "Specific version of the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", + "name": "id.retry_attempt", "in": "path", "required": true, - "type": "string" + "type": "integer", + "format": "int64" }, { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "name": "id.task_id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", "in": "query", "required": false, "type": "string", "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" ], - "default": "TASK_RESOURCE" + "default": "UNSPECIFIED" + }, + { + "name": "id.task_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "id.node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Delete the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_DeleteWorkflowAttributes2", + } + }, + "/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}": { + "get": { + "summary": "Fetches a list of :ref:`ref_flyteidl.admin.TaskExecution`.", + "description": "Fetch existing task executions matching input filters.", + "operationId": "AdminService_ListTaskExecutions", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowAttributesDeleteResponse" + "$ref": "#/definitions/adminTaskExecutionList" } }, "default": { @@ -7048,95 +2898,79 @@ }, "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the attributes.", + "name": "node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", + "name": "node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", + "name": "node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", "in": "path", "required": true, "type": "string" }, { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", + "name": "node_execution_id.node_id", "in": "path", "required": true, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceDeleteWorkflowAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Update the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_UpdateWorkflowAttributes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowAttributesUpdateResponse" - } + "name": "node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", - "in": "path", - "required": true, + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "attributes.workflow", - "description": "Workflow name for which this set of attributes will be applied.", - "in": "path", - "required": true, + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateWorkflowAttributesBody" - } + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" } ], "tags": [ @@ -7144,16 +2978,16 @@ ] } }, - "/api/v1/workflow_attributes/{project}/{domain}/{workflow}": { + "/api/v1/task_ids/{project}/{domain}": { "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Retrieve the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_GetWorkflowAttributes", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of task objects.", + "description": "Fetch existing task definition identifiers matching input filters.", + "operationId": "AdminService_ListTaskIds", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowAttributesGetResponse" + "$ref": "#/definitions/adminNamedEntityIdentifierList" } }, "default": { @@ -7166,64 +3000,124 @@ "parameters": [ { "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", + "description": "Name of the project that contains the identifiers.\n+required", "in": "path", "required": true, "type": "string" }, { "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", + "description": "Name of the domain the identifiers belongs to within the project.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", - "in": "path", - "required": true, + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, "type": "string" }, { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", "in": "query", "required": false, "type": "string", "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" + "DESCENDING", + "ASCENDING" ], - "default": "TASK_RESOURCE" + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/tasks": { + "post": { + "summary": "Create and upload a :ref:`ref_flyteidl.admin.Task` definition", + "description": "Create and register a task definition.", + "operationId": "AdminService_CreateTask", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/flyteidladminTaskCreateResponse" + } + }, + "400": { + "description": "Returned for bad request that may have failed validation.", + "schema": {} + }, + "409": { + "description": "Returned for a request that references an identical entity that has already been registered.", + "schema": {} }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/flyteidladminTaskCreateRequest" + } } ], "tags": [ "AdminService" ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Delete the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_DeleteWorkflowAttributes", + } + }, + "/api/v1/tasks/{id.project}/{id.domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", + "description": "Fetch existing task definitions matching input filters.", + "operationId": "AdminService_ListTasks2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowAttributesDeleteResponse" + "$ref": "#/definitions/adminTaskList" } }, "default": { @@ -7235,33 +3129,73 @@ }, "parameters": [ { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", "in": "path", "required": true, "type": "string" }, { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", - "in": "path", - "required": true, + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceDeleteWorkflowAttributesBody" - } + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" } ], "tags": [ @@ -7269,15 +3203,16 @@ ] } }, - "/api/v1/workflow_ids/{project}/{domain}": { + "/api/v1/tasks/{id.project}/{id.domain}/{id.name}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of workflow objects.", - "operationId": "AdminService_ListWorkflowIds", + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", + "description": "Fetch existing task definitions matching input filters.", + "operationId": "AdminService_ListTasks", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" + "$ref": "#/definitions/adminTaskList" } }, "default": { @@ -7289,19 +3224,33 @@ }, "parameters": [ { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", + "name": "id.project", + "description": "Name of the project the resource belongs to.", "in": "path", "required": true, "type": "string" }, { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", "in": "path", "required": true, "type": "string" }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, { "name": "limit", "description": "Indicates the number of resources to be returned.\n+required", @@ -7312,7 +3261,14 @@ }, { "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", "in": "query", "required": false, "type": "string" @@ -7335,20 +3291,6 @@ "ASCENDING" ], "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" } ], "tags": [ @@ -7356,26 +3298,18 @@ ] } }, - "/api/v1/workflows": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Workflow` definition", - "description": "Create and register a workflow definition.", - "operationId": "AdminService_CreateWorkflow", + "/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.Task` definition.", + "description": "Retrieve an existing task definition.", + "operationId": "AdminService_GetTask", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowCreateResponse" + "$ref": "#/definitions/adminTask" } }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, "default": { "description": "An unexpected error response.", "schema": { @@ -7385,12 +3319,54 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/adminWorkflowCreateRequest" - } + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -7398,26 +3374,17 @@ ] } }, - "/api/v1/workflows/org/{id.org}": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Workflow` definition", - "description": "Create and register a workflow definition.", - "operationId": "AdminService_CreateWorkflow2", + "/api/v1/version": { + "get": { + "description": "Retrieve the Version (including the Build information) for FlyteAdmin service", + "operationId": "AdminService_GetVersion", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowCreateResponse" + "$ref": "#/definitions/adminGetVersionResponse" } }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, "default": { "description": "An unexpected error response.", "schema": { @@ -7425,38 +3392,21 @@ } } }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateWorkflowBody" - } - } - ], "tags": [ "AdminService" ] } }, - "/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", - "description": "Fetch existing workflow definitions matching input filters.", - "operationId": "AdminService_ListWorkflows4", + "/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}": { + "put": { + "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", + "description": "Update the customized resource attributes associated with a project, domain and workflow combination", + "operationId": "AdminService_UpdateWorkflowAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowList" + "$ref": "#/definitions/adminWorkflowAttributesUpdateResponse" } }, "default": { @@ -7468,73 +3418,33 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", + "name": "attributes.project", + "description": "Unique project id for which this set of attributes will be applied.", "in": "path", "required": true, "type": "string" }, { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "attributes.domain", + "description": "Unique domain id for which this set of attributes will be applied.", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "attributes.workflow", + "description": "Workflow name for which this set of attributes will be applied.", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateWorkflowAttributesBody" + } } ], "tags": [ @@ -7542,16 +3452,16 @@ ] } }, - "/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}": { + "/api/v1/workflow_attributes/{project}/{domain}/{workflow}": { "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", - "description": "Fetch existing workflow definitions matching input filters.", - "operationId": "AdminService_ListWorkflows2", + "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", + "description": "Retrieve the customized resource attributes associated with a project, domain and workflow combination", + "operationId": "AdminService_GetWorkflowAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflowList" + "$ref": "#/definitions/adminWorkflowAttributesGetResponse" } }, "default": { @@ -7563,90 +3473,65 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "name": "workflow", + "description": "Workflow name which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "name": "resource_type", + "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", "in": "query", "required": false, - "type": "string" + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" }, { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", + "name": "org", + "description": "Optional, org key applied to the attributes.", "in": "query", "required": false, "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" } ], "tags": [ "AdminService" ] - } - }, - "/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Workflow` definition.", - "description": "Retrieve an existing workflow definition.", - "operationId": "AdminService_GetWorkflow2", + }, + "delete": { + "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", + "description": "Delete the customized resource attributes associated with a project, domain and workflow combination", + "operationId": "AdminService_DeleteWorkflowAttributes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminWorkflow" + "$ref": "#/definitions/adminWorkflowAttributesDeleteResponse" } }, "default": { @@ -7658,54 +3543,33 @@ }, "parameters": [ { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.name", - "description": "User provided value for the resource.", + "name": "workflow", + "description": "Workflow name which this set of attributes references.\n+required", "in": "path", "required": true, "type": "string" }, { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" + "schema": { + "$ref": "#/definitions/AdminServiceDeleteWorkflowAttributesBody" + } } ], "tags": [ @@ -7713,10 +3577,10 @@ ] } }, - "/api/v1/workflows/org/{org}/{project}/{domain}": { + "/api/v1/workflow_ids/{project}/{domain}": { "get": { "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of workflow objects.", - "operationId": "AdminService_ListWorkflowIds2", + "operationId": "AdminService_ListWorkflowIds", "responses": { "200": { "description": "A successful response.", @@ -7732,13 +3596,6 @@ } }, "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, { "name": "project", "description": "Name of the project that contains the identifiers.\n+required", @@ -7775,24 +3632,73 @@ "required": false, "type": "string" }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/workflows": { + "post": { + "summary": "Create and upload a :ref:`ref_flyteidl.admin.Workflow` definition", + "description": "Create and register a workflow definition.", + "operationId": "AdminService_CreateWorkflow", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowCreateResponse" + } + }, + "400": { + "description": "Returned for bad request that may have failed validation.", + "schema": {} + }, + "409": { + "description": "Returned for a request that references an identical entity that has already been registered.", + "schema": {} }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/adminWorkflowCreateRequest" + } } ], "tags": [ @@ -7804,7 +3710,7 @@ "get": { "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", "description": "Fetch existing workflow definitions matching input filters.", - "operationId": "AdminService_ListWorkflows3", + "operationId": "AdminService_ListWorkflows2", "responses": { "200": { "description": "A successful response.", @@ -7984,513 +3890,100 @@ ], "default": "DESCENDING" } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Workflow` definition.", - "description": "Retrieve an existing workflow definition.", - "operationId": "AdminService_GetWorkflow", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflow" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - } - }, - "definitions": { - "AdminServiceCreateExecutionBody": { - "type": "object", - "properties": { - "project": { - "type": "string", - "title": "Name of the project the execution belongs to.\n+required" - }, - "domain": { - "type": "string", - "title": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required" - }, - "name": { - "type": "string", - "title": "User provided value for the resource.\nIf none is provided the system will generate a unique string.\n+optional" - }, - "spec": { - "$ref": "#/definitions/adminExecutionSpec", - "title": "Additional fields necessary to launch the execution.\n+optional" - }, - "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": "Request to launch an execution with the given project, domain and optionally-assigned name." - }, - "AdminServiceCreateLaunchPlanBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." - } - }, - "description": "Uniquely identifies a launch plan entity.", - "title": "Uniquely identifies a launch plan entity." - }, - "spec": { - "$ref": "#/definitions/adminLaunchPlanSpec", - "description": "User-provided launch plan details, including reference workflow, inputs and other metadata." - } - }, - "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan." - }, - "AdminServiceCreateNodeEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "node_id": { - "type": "string" - }, - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" - } - }, - "title": "Unique identifier for this node execution" - }, - "producer_id": { - "type": "string", - "title": "the id of the originator (Propeller) of the event" - }, - "phase": { - "$ref": "#/definitions/coreNodeExecutionPhase" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the node." - }, - "input_uri": { - "type": "string" - }, - "input_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this node execution." - }, - "output_uri": { - "type": "string", - "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this node execution." - }, - "workflow_node_metadata": { - "$ref": "#/definitions/flyteidleventWorkflowNodeMetadata" - }, - "task_node_metadata": { - "$ref": "#/definitions/flyteidleventTaskNodeMetadata" - }, - "parent_task_metadata": { - "$ref": "#/definitions/eventParentTaskExecutionMetadata", - "description": "[To be deprecated] Specifies which task (if any) launched this node." - }, - "parent_node_metadata": { - "$ref": "#/definitions/eventParentNodeExecutionMetadata", - "description": "Specifies the parent node of the current node execution. Node executions at level zero will not have a parent node." - }, - "retry_group": { - "type": "string", - "title": "Retry group to indicate grouping of nodes by retries" - }, - "spec_node_id": { - "type": "string", - "title": "Identifier of the node in the original workflow/graph\nThis maps to value of WorkflowTemplate.nodes[X].id" - }, - "node_name": { - "type": "string", - "title": "Friendly readable name for the node" - }, - "event_version": { - "type": "integer", - "format": "int32" - }, - "is_parent": { - "type": "boolean", - "description": "Whether this node launched a subworkflow." - }, - "is_dynamic": { - "type": "boolean", - "description": "Whether this node yielded a dynamic workflow." - }, - "deck_uri": { - "type": "string", - "title": "String location uniquely identifying where the deck HTML file is\nNativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar)" - }, - "reported_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents the instant when the event was reported by the executing framework. For example,\nwhen first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when\nliteral inputs are initially copied. The event however will not be sent until after the copy completes.\nExtracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series." - }, - "is_array": { - "type": "boolean", - "description": "Indicates if this node is an ArrayNode." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a node execution event has occurred." - }, - "AdminServiceCreateTaskEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "task_id": { - "$ref": "#/definitions/coreIdentifier", - "description": "ID of the task. In combination with the retryAttempt this will indicate\nthe task execution uniquely for a given parent node execution." - }, - "parent_node_execution_id": { - "type": "object", - "properties": { - "node_id": { - "type": "string" - }, - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" - } - }, - "title": "A task execution is always kicked off by a node execution, the event consumer\nwill use the parent_id to relate the task to it's parent node execution" - }, - "retry_attempt": { - "type": "integer", - "format": "int64", - "title": "retry attempt number for this task, ie., 2 for the second attempt" - }, - "phase": { - "$ref": "#/definitions/coreTaskExecutionPhase", - "title": "Phase associated with the event" - }, - "producer_id": { - "type": "string", - "title": "id of the process that sent this event, mainly for trace debugging" - }, - "logs": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/coreTaskLog" - }, - "title": "log information for the task execution" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the task." - }, - "input_uri": { - "type": "string", - "description": "URI of the input file, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "input_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this task execution." - }, - "output_uri": { - "type": "string", - "description": "URI to the output of the execution, it will be in a format that encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this task execution." - }, - "custom_info": { - "type": "object", - "description": "Custom data that the task plugin sends back. This is extensible to allow various plugins in the system." - }, - "phase_version": { - "type": "integer", - "format": "int64", - "description": "Some phases, like RUNNING, can send multiple events with changed metadata (new logs, additional custom_info, etc)\nthat should be recorded regardless of the lack of phase change.\nThe version field should be incremented when metadata changes across the duration of an individual phase." - }, - "reason": { - "type": "string", - "description": "An optional explanation for the phase transition.\nDeprecated: Use reasons instead." - }, - "reasons": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/eventEventReason" - }, - "description": "An optional list of explanations for the phase transition." - }, - "task_type": { - "type": "string", - "description": "A predefined yet extensible Task type identifier. If the task definition is already registered in flyte admin\nthis type will be identical, but not all task executions necessarily use pre-registered definitions and this\ntype is useful to render the task in the UI, filter task executions, etc." - }, - "metadata": { - "$ref": "#/definitions/flyteidleventTaskExecutionMetadata", - "description": "Metadata around how a task was executed." - }, - "event_version": { - "type": "integer", - "format": "int32", - "description": "The event version is used to indicate versioned changes in how data is reported using this\nproto message. For example, event_verison \u003e 0 means that maps tasks report logs using the\nTaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog\nin this message." - }, - "reported_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s\npod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,\nbut this event will not be reported until the pod is marked as completed. Extracting both of these timestamps\nfacilitates a more accurate portrayal of the evaluation time-series." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a task execution event has occurred." + ], + "tags": [ + "AdminService" + ] + } }, - "AdminServiceCreateWorkflowBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." + "/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.Workflow` definition.", + "description": "Retrieve an existing workflow definition.", + "operationId": "AdminService_GetWorkflow", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflow" } }, - "title": "id represents the unique identifier of the workflow.\n+required" - }, - "spec": { - "$ref": "#/definitions/adminWorkflowSpec", - "title": "Represents the specification for workflow.\n+required" - } - }, - "title": "Represents a request structure to create a revision of a workflow.\nSee :ref:`ref_flyteidl.admin.Workflow` for more details" - }, - "AdminServiceCreateWorkflowEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Workflow execution id" - }, - "producer_id": { - "type": "string", - "title": "the id of the originator (Propeller) of the event" - }, - "phase": { - "$ref": "#/definitions/coreWorkflowExecutionPhase" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the workflow." - }, - "output_uri": { - "type": "string", - "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this workflow execution." + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" } + } + }, + "parameters": [ + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a workflow execution event has occurred." - }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + }, + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + } + }, + "definitions": { "AdminServiceDeleteProjectAttributesBody": { "type": "object", "properties": { "resource_type": { "$ref": "#/definitions/adminMatchableResource", "title": "Which type of matchable attributes to delete.\n+required" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the project." } }, "title": "Request to delete a set matchable project level attribute override.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" @@ -8501,6 +3994,10 @@ "resource_type": { "$ref": "#/definitions/adminMatchableResource", "title": "Which type of matchable attributes to delete.\n+required" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the attributes." } }, "title": "Request to delete a set matchable project domain attribute override.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" @@ -8511,117 +4008,25 @@ "resource_type": { "$ref": "#/definitions/adminMatchableResource", "title": "Which type of matchable attributes to delete.\n+required" - } - }, - "title": "Request to delete a set matchable workflow attribute override.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" - }, - "AdminServiceRecoverExecutionBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "description": "Identifier of the workflow execution to recover.", - "title": "Identifier of the workflow execution to recover." }, - "name": { + "org": { "type": "string", - "title": "User provided value for the recovered execution.\nIf none is provided the system will generate a unique string.\n+optional" - }, - "metadata": { - "$ref": "#/definitions/adminExecutionMetadata", - "description": "Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution." - } - }, - "description": "Request to recover the referenced execution." - }, - "AdminServiceRegisterProjectBody": { - "type": "object", - "properties": { - "project": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Globally unique project name." - }, - "name": { - "type": "string", - "description": "Display name." - }, - "domains": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/adminDomain" - } - }, - "description": { - "type": "string" - }, - "labels": { - "$ref": "#/definitions/adminLabels", - "description": "Leverage Labels from flyteidl.admin.common.proto to\ntag projects with ownership information." - }, - "state": { - "$ref": "#/definitions/ProjectProjectState" - } - }, - "title": "+required" + "description": "Optional, org key applied to the attributes." } }, - "title": "Adds a new user-project within the Flyte deployment.\nSee :ref:`ref_flyteidl.admin.Project` for more details" + "title": "Request to delete a set matchable workflow attribute override.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" }, - "AdminServiceRelaunchExecutionBody": { + "AdminServiceTerminateExecutionBody": { "type": "object", "properties": { "id": { "type": "object", "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { + "org": { "type": "string", - "description": "User or system provided value for the resource." + "description": "Optional, org key applied to the resource." } }, - "title": "Identifier of the workflow execution to relaunch.\n+required" - }, - "name": { - "type": "string", - "title": "User provided value for the relaunched execution.\nIf none is provided the system will generate a unique string.\n+optional" - }, - "overwrite_cache": { - "type": "boolean", - "description": "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.\nIf enabled, all calculations are performed even if cached results would be available, overwriting the stored\ndata once execution finishes successfully." - } - }, - "description": "Request to relaunch the referenced execution." - }, - "AdminServiceTerminateExecutionBody": { - "type": "object", - "properties": { - "id": { - "type": "object", "description": "Uniquely identifies the individual workflow execution to be terminated.", "title": "Uniquely identifies the individual workflow execution to be terminated." }, @@ -8637,6 +4042,12 @@ "properties": { "id": { "type": "object", + "properties": { + "org": { + "type": "string", + "description": "Optional, org key applied to the resource." + } + }, "title": "Identifier of the execution to update" }, "state": { @@ -8675,6 +4086,12 @@ "properties": { "id": { "type": "object", + "properties": { + "org": { + "type": "string", + "description": "Optional, org key applied to the resource." + } + }, "title": "Identifier of the metadata to update\n+required" }, "metadata": { @@ -8692,6 +4109,10 @@ "properties": { "matching_attributes": { "$ref": "#/definitions/adminMatchingAttributes" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the project." } }, "title": "+required" @@ -8722,6 +4143,10 @@ }, "state": { "$ref": "#/definitions/ProjectProjectState" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the resource." } }, "description": "Top-level namespace used to classify different entities like workflows and executions." @@ -8734,6 +4159,10 @@ "properties": { "matching_attributes": { "$ref": "#/definitions/adminMatchingAttributes" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the attributes." } }, "title": "+required" @@ -8749,6 +4178,10 @@ "properties": { "matching_attributes": { "$ref": "#/definitions/adminMatchingAttributes" + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the attributes." } }, "title": "Defines a set of custom matching attributes which defines resource defaults for a project, domain and workflow.\nFor more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration`" @@ -13534,42 +8967,6 @@ ], "default": "NULL_VALUE", "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." - }, - "serviceAdminServiceCreateTaskBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." - } - }, - "title": "id represents the unique identifier of the task.\n+required" - }, - "spec": { - "$ref": "#/definitions/adminTaskSpec", - "title": "Represents the specification for task.\n+required" - } - }, - "title": "Represents a request structure to create a revision of a task.\nSee :ref:`ref_flyteidl.admin.Task` for more details" } } } diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.pb.gw.go b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.pb.gw.go index 7913c742e73..aefec7bfb26 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.pb.gw.go +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.pb.gw.go @@ -143,136 +143,6 @@ func local_request_SignalService_ListSignals_0(ctx context.Context, marshaler ru } -var ( - filter_SignalService_ListSignals_1 = &utilities.DoubleArray{Encoding: map[string]int{"workflow_execution_id": 0, "org": 1, "project": 2, "domain": 3, "name": 4}, Base: []int{1, 8, 9, 10, 11, 12, 2, 0, 4, 0, 6, 0, 8, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 2, 11, 2, 13, 3, 4, 5, 6}} -) - -func request_SignalService_ListSignals_1(ctx context.Context, marshaler runtime.Marshaler, client extService.SignalServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.SignalListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["workflow_execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.org", err) - } - - val, ok = pathParams["workflow_execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.project", err) - } - - val, ok = pathParams["workflow_execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.domain", err) - } - - val, ok = pathParams["workflow_execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SignalService_ListSignals_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListSignals(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_SignalService_ListSignals_1(ctx context.Context, marshaler runtime.Marshaler, server extService.SignalServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.SignalListRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["workflow_execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.org", err) - } - - val, ok = pathParams["workflow_execution_id.project"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.project") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.project", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.project", err) - } - - val, ok = pathParams["workflow_execution_id.domain"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.domain") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.domain", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.domain", err) - } - - val, ok = pathParams["workflow_execution_id.name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "workflow_execution_id.name") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "workflow_execution_id.name", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "workflow_execution_id.name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SignalService_ListSignals_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListSignals(ctx, &protoReq) - return msg, metadata, err - -} - func request_SignalService_SetSignal_0(ctx context.Context, marshaler runtime.Marshaler, client extService.SignalServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.SignalSetRequest var metadata runtime.ServerMetadata @@ -307,74 +177,6 @@ func local_request_SignalService_SetSignal_0(ctx context.Context, marshaler runt } -func request_SignalService_SetSignal_1(ctx context.Context, marshaler runtime.Marshaler, client extService.SignalServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.SignalSetRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.org", err) - } - - msg, err := client.SetSignal(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_SignalService_SetSignal_1(ctx context.Context, marshaler runtime.Marshaler, server extService.SignalServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.SignalSetRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id.execution_id.org"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.execution_id.org") - } - - err = runtime.PopulateFieldFromPath(&protoReq, "id.execution_id.org", val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.execution_id.org", err) - } - - msg, err := server.SetSignal(ctx, &protoReq) - return msg, metadata, err - -} - // RegisterSignalServiceHandlerServer registers the http handlers for service SignalService to "mux". // UnaryRPC :call SignalServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -406,31 +208,6 @@ func RegisterSignalServiceHandlerServer(ctx context.Context, mux *runtime.ServeM }) - mux.Handle("GET", pattern_SignalService_ListSignals_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.SignalService/ListSignals", runtime.WithHTTPPathPattern("/api/v1/signals/org/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_SignalService_ListSignals_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_SignalService_ListSignals_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("POST", pattern_SignalService_SetSignal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -456,31 +233,6 @@ func RegisterSignalServiceHandlerServer(ctx context.Context, mux *runtime.ServeM }) - mux.Handle("POST", pattern_SignalService_SetSignal_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.SignalService/SetSignal", runtime.WithHTTPPathPattern("/api/v1/signals/org/{id.execution_id.org}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_SignalService_SetSignal_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_SignalService_SetSignal_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - return nil } @@ -544,28 +296,6 @@ func RegisterSignalServiceHandlerClient(ctx context.Context, mux *runtime.ServeM }) - mux.Handle("GET", pattern_SignalService_ListSignals_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.SignalService/ListSignals", runtime.WithHTTPPathPattern("/api/v1/signals/org/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_SignalService_ListSignals_1(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_SignalService_ListSignals_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("POST", pattern_SignalService_SetSignal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -588,47 +318,17 @@ func RegisterSignalServiceHandlerClient(ctx context.Context, mux *runtime.ServeM }) - mux.Handle("POST", pattern_SignalService_SetSignal_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.SignalService/SetSignal", runtime.WithHTTPPathPattern("/api/v1/signals/org/{id.execution_id.org}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_SignalService_SetSignal_1(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_SignalService_SetSignal_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - return nil } var ( pattern_SignalService_ListSignals_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "signals", "workflow_execution_id.project", "workflow_execution_id.domain", "workflow_execution_id.name"}, "")) - pattern_SignalService_ListSignals_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "signals", "org", "workflow_execution_id.org", "workflow_execution_id.project", "workflow_execution_id.domain", "workflow_execution_id.name"}, "")) - pattern_SignalService_SetSignal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "signals"}, "")) - - pattern_SignalService_SetSignal_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "signals", "org", "id.execution_id.org"}, "")) ) var ( forward_SignalService_ListSignals_0 = runtime.ForwardResponseMessage - forward_SignalService_ListSignals_1 = runtime.ForwardResponseMessage - forward_SignalService_SetSignal_0 = runtime.ForwardResponseMessage - - forward_SignalService_SetSignal_1 = runtime.ForwardResponseMessage ) diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json index 4af1a6023c6..94c859bfcd2 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json @@ -58,150 +58,6 @@ ] } }, - "/api/v1/signals/org/{id.execution_id.org}": { - "post": { - "summary": "Sets the value on a :ref:`ref_flyteidl.admin.Signal` definition", - "description": "Set a signal value.", - "operationId": "SignalService_SetSignal2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminSignalSetResponse" - } - }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/SignalServiceSetSignalBody" - } - } - ], - "tags": [ - "SignalService" - ] - } - }, - "/api/v1/signals/org/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Signal` definitions.", - "description": "Fetch existing signal definitions matching the input signal id filters.", - "operationId": "SignalService_ListSignals2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminSignalList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "workflow_execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the, server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "SignalService" - ] - } - }, "/api/v1/signals/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { "get": { "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Signal` definitions.", @@ -332,46 +188,6 @@ } } }, - "SignalServiceSetSignalBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "signal_id": { - "type": "string", - "description": "Unique identifier for a signal." - }, - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "description": "Identifies the Flyte workflow execution this signal belongs to.", - "title": "Identifies the Flyte workflow execution this signal belongs to." - } - }, - "description": "A unique identifier for the requested signal.", - "title": "A unique identifier for the requested signal." - }, - "value": { - "$ref": "#/definitions/coreLiteral", - "description": "The value of this signal, must match the defining signal type." - } - }, - "title": "SignalSetRequest represents a request structure to set the value on a signal. Setting a signal\neffetively satisfies the signal condition within a Flyte workflow.\nSee :ref:`ref_flyteidl.admin.Signal` for more details" - }, "SortDirection": { "type": "string", "enum": [ diff --git a/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py b/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py index bc05666fcdc..f2b5a55db6a 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py @@ -30,7 +30,7 @@ from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/service/admin.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1c\x66lyteidl/admin/project.proto\x1a.flyteidl/admin/project_domain_attributes.proto\x1a\'flyteidl/admin/project_attributes.proto\x1a\x19\x66lyteidl/admin/task.proto\x1a\x1d\x66lyteidl/admin/workflow.proto\x1a(flyteidl/admin/workflow_attributes.proto\x1a flyteidl/admin/launch_plan.proto\x1a\x1a\x66lyteidl/admin/event.proto\x1a\x1e\x66lyteidl/admin/execution.proto\x1a\'flyteidl/admin/matchable_resource.proto\x1a#flyteidl/admin/node_execution.proto\x1a#flyteidl/admin/task_execution.proto\x1a\x1c\x66lyteidl/admin/version.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\'flyteidl/admin/description_entity.proto\x1a.protoc-gen-openapiv2/options/annotations.proto2\xb0\x9b\x01\n\x0c\x41\x64minService\x12\xe6\x02\n\nCreateTask\x12!.flyteidl.admin.TaskCreateRequest\x1a\".flyteidl.admin.TaskCreateResponse\"\x90\x02\x92\x41\xd3\x01\x1a&Create and register a task definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x82\xd3\xe4\x93\x02\x33:\x01*Z\x1f:\x01*\"\x1a/api/v1/tasks/org/{id.org}\"\r/api/v1/tasks\x12\x82\x02\n\x07GetTask\x12 .flyteidl.admin.ObjectGetRequest\x1a\x14.flyteidl.admin.Task\"\xbe\x01\x92\x41\'\x1a%Retrieve an existing task definition.\x82\xd3\xe4\x93\x02\x8d\x01ZL\x12J/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}\x12=/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x8d\x02\n\x0bListTaskIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\xa0\x01\x92\x41\x44\x1a\x42\x46\x65tch existing task definition identifiers matching input filters.\x82\xd3\xe4\x93\x02SZ,\x12*/api/v1/tasks/org/{org}/{project}/{domain}\x12#/api/v1/task_ids/{project}/{domain}\x12\xe4\x02\n\tListTasks\x12#.flyteidl.admin.ResourceListRequest\x1a\x18.flyteidl.admin.TaskList\"\x97\x02\x92\x41\x39\x1a\x37\x46\x65tch existing task definitions matching input filters.\x82\xd3\xe4\x93\x02\xd4\x01Z?\x12=/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}/{id.name}Z(\x12&/api/v1/tasks/{id.project}/{id.domain}Z5\x12\x33/api/v1/tasks/org/{id.org}/{id.project}/{id.domain}\x12\x30/api/v1/tasks/{id.project}/{id.domain}/{id.name}\x12\xfe\x02\n\x0e\x43reateWorkflow\x12%.flyteidl.admin.WorkflowCreateRequest\x1a&.flyteidl.admin.WorkflowCreateResponse\"\x9c\x02\x92\x41\xd7\x01\x1a*Create and register a workflow definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x82\xd3\xe4\x93\x02;:\x01*Z#:\x01*\"\x1e/api/v1/workflows/org/{id.org}\"\x11/api/v1/workflows\x12\x96\x02\n\x0bGetWorkflow\x12 .flyteidl.admin.ObjectGetRequest\x1a\x18.flyteidl.admin.Workflow\"\xca\x01\x92\x41+\x1a)Retrieve an existing workflow definition.\x82\xd3\xe4\x93\x02\x95\x01ZP\x12N/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x41/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xd1\x01\n\x0fListWorkflowIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"a\x82\xd3\xe4\x93\x02[Z0\x12./api/v1/workflows/org/{org}/{project}/{domain}\x12\'/api/v1/workflow_ids/{project}/{domain}\x12\x80\x03\n\rListWorkflows\x12#.flyteidl.admin.ResourceListRequest\x1a\x1c.flyteidl.admin.WorkflowList\"\xab\x02\x92\x41=\x1a;Fetch existing workflow definitions matching input filters.\x82\xd3\xe4\x93\x02\xe4\x01ZC\x12\x41/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}/{id.name}Z,\x12*/api/v1/workflows/{id.project}/{id.domain}Z9\x12\x37/api/v1/workflows/org/{id.org}/{id.project}/{id.domain}\x12\x34/api/v1/workflows/{id.project}/{id.domain}/{id.name}\x12\x8d\x03\n\x10\x43reateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanCreateRequest\x1a(.flyteidl.admin.LaunchPlanCreateResponse\"\xa5\x02\x92\x41\xda\x01\x1a-Create and register a launch plan definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x82\xd3\xe4\x93\x02\x41:\x01*Z&:\x01*\"!/api/v1/launch_plans/org/{id.org}\"\x14/api/v1/launch_plans\x12\xa3\x02\n\rGetLaunchPlan\x12 .flyteidl.admin.ObjectGetRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"\xd3\x01\x92\x41.\x1a,Retrieve an existing launch plan definition.\x82\xd3\xe4\x93\x02\x9b\x01ZS\x12Q/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xc3\x02\n\x13GetActiveLaunchPlan\x12\'.flyteidl.admin.ActiveLaunchPlanRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"\xe6\x01\x92\x41M\x1aKRetrieve the active launch plan version specified by input request filters.\x82\xd3\xe4\x93\x02\x8f\x01ZM\x12K/api/v1/active_launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}\x12>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x12\xa7\x02\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xc0\x01\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x82\xd3\xe4\x93\x02lZ:\x12\x38/api/v1/active_launch_plans/org/{org}/{project}/{domain}\x12./api/v1/active_launch_plans/{project}/{domain}\x12\xab\x02\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\xb8\x01\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x82\xd3\xe4\x93\x02\x64Z6\x12\x34/api/v1/launch_plan_ids/org/{org}/{project}/{domain}\x12*/api/v1/launch_plan_ids/{project}/{domain}\x12\x93\x03\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xba\x02\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x82\xd3\xe4\x93\x02\xf0\x01ZF\x12\x44/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}Z/\x12-/api/v1/launch_plans/{id.project}/{id.domain}Z<\x12:/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}\x12\x96\x07\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xae\x06\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x82\xd3\xe4\x93\x02\x9e\x01:\x01*ZS\x1aQ/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xc5\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"a\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x82\xd3\xe4\x93\x02::\x01*Z!:\x01*\x1a\x1c/api/v1/executions/org/{org}\"\x12/api/v1/executions\x12\xe0\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"x\x92\x41 \x1a\x1eRelaunch a workflow execution.\x82\xd3\xe4\x93\x02O:\x01*Z-:\x01*\"(/api/v1/executions/org/{id.org}/relaunch\"\x1b/api/v1/executions/relaunch\x12\xcb\x05\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\xe4\x04\x92\x41\x8d\x04\x1a\x8a\x04Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\x82\xd3\xe4\x93\x02M:\x01*Z,:\x01*\"\'/api/v1/executions/org/{id.org}/recover\"\x1a/api/v1/executions/recover\x12\x89\x02\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"\xb0\x01\x92\x41*\x1a(Retrieve an existing workflow execution.\x82\xd3\xe4\x93\x02}ZD\x12\x42/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xef\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"\x8a\x01\x82\xd3\xe4\x93\x02\x83\x01:\x01*ZG:\x01*\x1a\x42/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\x86\x02\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"\x8e\x01\x82\xd3\xe4\x93\x02\x87\x01ZI\x12G/api/v1/data/org/{id.org}/executions/{id.project}/{id.domain}/{id.name}\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x12\xc5\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"o\x82\xd3\xe4\x93\x02iZ:\x12\x38/api/v1/executions/org/{id.org}/{id.project}/{id.domain}\x12+/api/v1/executions/{id.project}/{id.domain}\x12\xf8\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"\x8a\x01\x82\xd3\xe4\x93\x02\x83\x01:\x01*ZG:\x01**B/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}*5/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xe2\x02\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"\x85\x02\x82\xd3\xe4\x93\x02\xfe\x01Z\x8b\x01\x12\x88\x01/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\x9e\x03\n\x16GetDynamicNodeWorkflow\x12-.flyteidl.admin.GetDynamicNodeWorkflowRequest\x1a+.flyteidl.admin.DynamicNodeWorkflowResponse\"\xa7\x02\x82\xd3\xe4\x93\x02\xa0\x02Z\x9c\x01\x12\x99\x01/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow\x12\x7f/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow\x12\xf9\x02\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\x95\x02\x82\xd3\xe4\x93\x02\x8e\x02Z\x96\x01\x12\x93\x01/api/v1/node_executions/org/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x12\x8f\x08\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\x9d\x07\x82\xd3\xe4\x93\x02\x96\x07Z\xe7\x03\x12\xe4\x03/api/v1/children/org/{task_execution_id.node_execution_id.execution_id.org}/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x12\x83\x03\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"\x8f\x02\x82\xd3\xe4\x93\x02\x88\x02Z\x90\x01\x12\x8d\x01/api/v1/data/org/{id.execution_id.org}/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\xa8\x01\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"D\x82\xd3\xe4\x93\x02>:\x01*Z\':\x01*\"\"/api/v1/projects/org/{project.org}\"\x10/api/v1/projects\x12\xad\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"\\\x92\x41\x13\x1a\x11Update a project.\x82\xd3\xe4\x93\x02@:\x01*Z$:\x01*\x1a\x1f/api/v1/projects/org/{org}/{id}\x1a\x15/api/v1/projects/{id}\x12\xa3\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"U\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x82\xd3\xe4\x93\x02\x30Z\x1c\x12\x1a/api/v1/projects/org/{org}\x12\x10/api/v1/projects\x12\x9a\x02\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"\xa3\x01\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x82\xd3\xe4\x93\x02Y:\x01*Z::\x01*\"5/api/v1/events/org/{event.execution_id.org}/workflows\"\x18/api/v1/events/workflows\x12\x85\x02\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"\x9a\x01\x92\x41=\x1a;Create a node execution event recording a phase transition.\x82\xd3\xe4\x93\x02T:\x01*Z9:\x01*\"4/api/v1/events/org/{event.id.execution_id.org}/nodes\"\x14/api/v1/events/nodes\x12\x9b\x02\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"\xb0\x01\x92\x41=\x1a;Create a task execution event recording a phase transition.\x82\xd3\xe4\x93\x02j:\x01*ZO:\x01*\"J/api/v1/events/org/{event.parent_node_execution_id.execution_id.org}/tasks\"\x14/api/v1/events/tasks\x12\xf4\x05\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\x97\x05\x92\x41&\x1a$Retrieve an existing task execution.\x82\xd3\xe4\x93\x02\xe7\x04Z\xc8\x02\x12\xc5\x02/api/v1/task_executions/org/{id.node_execution_id.execution_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xac\x04\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xc8\x03\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x82\xd3\xe4\x93\x02\x86\x03Z\xd6\x01\x12\xd3\x01/api/v1/task_executions/org/{node_execution_id.execution_id.org}/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x12\xb0\x06\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xbc\x05\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x82\xd3\xe4\x93\x02\xf1\x04Z\xcd\x02\x12\xca\x02/api/v1/data/org/{id.node_execution_id.execution_id.org}/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xa6\x03\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\x97\x02\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02\xb5\x01:\x01*Zd:\x01*\x1a_/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}\x12\xe1\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\xdb\x01\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02xZ@\x12>/api/v1/project_domain_attributes/org/{org}/{project}/{domain}\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x12\xee\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\xdf\x01\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02~:\x01*ZC:\x01**>/api/v1/project_domain_attributes/org/{org}/{project}/{domain}*4/api/v1/project_domain_attributes/{project}/{domain}\x12\xd2\x02\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\"\xd5\x01\x92\x41\x45\x1a\x43Update the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02\x86\x01:\x01*ZP:\x01*\x1aK/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}\x1a//api/v1/project_attributes/{attributes.project}\x12\xa3\x02\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\"\xaf\x01\x92\x41G\x1a\x45Retrieve the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02_Z7\x12\x35/api/v1/project_domain_attributes/org/{org}/{project}\x12$/api/v1/project_attributes/{project}\x12\xb0\x02\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"\xb3\x01\x92\x41\x45\x1a\x43\x44\x65lete the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02\x65:\x01*Z::\x01**5/api/v1/project_domain_attributes/org/{org}/{project}*$/api/v1/project_attributes/{project}\x12\xc5\x03\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xc5\x02\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02\xd5\x01:\x01*Zt:\x01*\x1ao/api/v1/workflow_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}/{attributes.workflow}\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}\x12\xeb\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xf4\x01\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02\x82\x01ZE\x12\x43/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xf8\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xf8\x01\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02\x88\x01:\x01*ZH:\x01**C/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}*9/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\x8c\x02\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"\x8f\x01\x92\x41>\x1a/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x12\xeb\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\x84\x01\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x12\xf3\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\x80\x01\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x12\x8c\x02\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xb3\x01\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x82\xd3\xe4\x93\x02jZ/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}\x12\xc0\x06\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xd8\x05\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x82\xd3\xe4\x93\x02I:\x01*\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xa2\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\">\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/executions\x12\xb1\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"I\x92\x41 \x1a\x1eRelaunch a workflow execution.\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/executions/relaunch\x12\x9d\x05\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\xb6\x04\x92\x41\x8d\x04\x1a\x8a\x04Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/v1/executions/recover\x12\xc2\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"j\x92\x41*\x1a(Retrieve an existing workflow execution.\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xa4\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"@\x82\xd3\xe4\x93\x02::\x01*\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xb9\x01\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"B\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x12\x89\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x12\xad\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"@\x82\xd3\xe4\x93\x02::\x01**5/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xd2\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"v\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\xff\x01\n\x16GetDynamicNodeWorkflow\x12-.flyteidl.admin.GetDynamicNodeWorkflowRequest\x1a+.flyteidl.admin.DynamicNodeWorkflowResponse\"\x88\x01\x82\xd3\xe4\x93\x02\x81\x01\x12\x7f/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow\x12\xde\x01\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x12\xa5\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb3\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x12\xee\x01\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\x7f\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/api/v1/projects\x12\x87\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"6\x92\x41\x13\x1a\x11Update a project.\x82\xd3\xe4\x93\x02\x1a:\x01*\x1a\x15/api/v1/projects/{id}\x12\x85\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"7\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x12\xdd\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"g\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/v1/events/workflows\x12\xc9\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"_\x92\x41=\x1a;Create a node execution event recording a phase transition.\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/nodes\x12\xc9\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"_\x92\x41=\x1a;Create a task execution event recording a phase transition.\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/tasks\x12\xa9\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xcc\x02\x92\x41&\x1a$Retrieve an existing task execution.\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xd3\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xef\x01\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x12\xe0\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xec\x02\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xbf\x02\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\xb0\x01\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02O:\x01*\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}\x12\x9f\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\x99\x01\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x12\xa9\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\x9a\x01\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02\x39:\x01**4/api/v1/project_domain_attributes/{project}/{domain}\x12\xff\x01\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\"\x82\x01\x92\x41\x45\x1a\x43Update the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02\x34:\x01*\x1a//api/v1/project_attributes/{attributes.project}\x12\xe9\x01\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\"v\x92\x41G\x1a\x45Retrieve the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02&\x12$/api/v1/project_attributes/{project}\x12\xf3\x01\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"w\x92\x41\x45\x1a\x43\x44\x65lete the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02):\x01**$/api/v1/project_attributes/{project}\x12\xce\x02\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xce\x01\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02_:\x01*\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}\x12\xa3\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xac\x01\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xad\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xad\x01\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02>:\x01**9/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xe1\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"e\x92\x41>\x1a/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}' + _ADMINSERVICE.methods_by_name['GetActiveLaunchPlan']._serialized_options = b'\222AM\032KRetrieve the active launch plan version specified by input request filters.\202\323\344\223\002@\022>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}' _ADMINSERVICE.methods_by_name['ListActiveLaunchPlans']._options = None - _ADMINSERVICE.methods_by_name['ListActiveLaunchPlans']._serialized_options = b'\222AK\032IFetch the active launch plan versions specified by input request filters.\202\323\344\223\002lZ:\0228/api/v1/active_launch_plans/org/{org}/{project}/{domain}\022./api/v1/active_launch_plans/{project}/{domain}' + _ADMINSERVICE.methods_by_name['ListActiveLaunchPlans']._serialized_options = b'\222AK\032IFetch the active launch plan versions specified by input request filters.\202\323\344\223\0020\022./api/v1/active_launch_plans/{project}/{domain}' _ADMINSERVICE.methods_by_name['ListLaunchPlanIds']._options = None - _ADMINSERVICE.methods_by_name['ListLaunchPlanIds']._serialized_options = b'\222AK\032IFetch existing launch plan definition identifiers matching input filters.\202\323\344\223\002dZ6\0224/api/v1/launch_plan_ids/org/{org}/{project}/{domain}\022*/api/v1/launch_plan_ids/{project}/{domain}' + _ADMINSERVICE.methods_by_name['ListLaunchPlanIds']._serialized_options = b'\222AK\032IFetch existing launch plan definition identifiers matching input filters.\202\323\344\223\002,\022*/api/v1/launch_plan_ids/{project}/{domain}' _ADMINSERVICE.methods_by_name['ListLaunchPlans']._options = None - _ADMINSERVICE.methods_by_name['ListLaunchPlans']._serialized_options = b'\222A@\032>Fetch existing launch plan definitions matching input filters.\202\323\344\223\002\360\001ZF\022D/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}Z/\022-/api/v1/launch_plans/{id.project}/{id.domain}Z<\022:/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}\0227/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}' + _ADMINSERVICE.methods_by_name['ListLaunchPlans']._serialized_options = b'\222A@\032>Fetch existing launch plan definitions matching input filters.\202\323\344\223\002jZ/\022-/api/v1/launch_plans/{id.project}/{id.domain}\0227/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}' _ADMINSERVICE.methods_by_name['UpdateLaunchPlan']._options = None - _ADMINSERVICE.methods_by_name['UpdateLaunchPlan']._serialized_options = b'\222A\205\005\032\202\005Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\202\323\344\223\002\236\001:\001*ZS\032Q/api/v1/launch_plans/org/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}\032D/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}' + _ADMINSERVICE.methods_by_name['UpdateLaunchPlan']._serialized_options = b'\222A\205\005\032\202\005Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\202\323\344\223\002I:\001*\032D/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}' _ADMINSERVICE.methods_by_name['CreateExecution']._options = None - _ADMINSERVICE.methods_by_name['CreateExecution']._serialized_options = b'\222A\036\032\034Create a workflow execution.\202\323\344\223\002::\001*Z!:\001*\032\034/api/v1/executions/org/{org}\"\022/api/v1/executions' + _ADMINSERVICE.methods_by_name['CreateExecution']._serialized_options = b'\222A\036\032\034Create a workflow execution.\202\323\344\223\002\027:\001*\"\022/api/v1/executions' _ADMINSERVICE.methods_by_name['RelaunchExecution']._options = None - _ADMINSERVICE.methods_by_name['RelaunchExecution']._serialized_options = b'\222A \032\036Relaunch a workflow execution.\202\323\344\223\002O:\001*Z-:\001*\"(/api/v1/executions/org/{id.org}/relaunch\"\033/api/v1/executions/relaunch' + _ADMINSERVICE.methods_by_name['RelaunchExecution']._serialized_options = b'\222A \032\036Relaunch a workflow execution.\202\323\344\223\002 :\001*\"\033/api/v1/executions/relaunch' _ADMINSERVICE.methods_by_name['RecoverExecution']._options = None - _ADMINSERVICE.methods_by_name['RecoverExecution']._serialized_options = b'\222A\215\004\032\212\004Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\202\323\344\223\002M:\001*Z,:\001*\"\'/api/v1/executions/org/{id.org}/recover\"\032/api/v1/executions/recover' + _ADMINSERVICE.methods_by_name['RecoverExecution']._serialized_options = b'\222A\215\004\032\212\004Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\202\323\344\223\002\037:\001*\"\032/api/v1/executions/recover' _ADMINSERVICE.methods_by_name['GetExecution']._options = None - _ADMINSERVICE.methods_by_name['GetExecution']._serialized_options = b'\222A*\032(Retrieve an existing workflow execution.\202\323\344\223\002}ZD\022B/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}\0225/api/v1/executions/{id.project}/{id.domain}/{id.name}' + _ADMINSERVICE.methods_by_name['GetExecution']._serialized_options = b'\222A*\032(Retrieve an existing workflow execution.\202\323\344\223\0027\0225/api/v1/executions/{id.project}/{id.domain}/{id.name}' _ADMINSERVICE.methods_by_name['UpdateExecution']._options = None - _ADMINSERVICE.methods_by_name['UpdateExecution']._serialized_options = b'\202\323\344\223\002\203\001:\001*ZG:\001*\032B/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}\0325/api/v1/executions/{id.project}/{id.domain}/{id.name}' + _ADMINSERVICE.methods_by_name['UpdateExecution']._serialized_options = b'\202\323\344\223\002::\001*\0325/api/v1/executions/{id.project}/{id.domain}/{id.name}' _ADMINSERVICE.methods_by_name['GetExecutionData']._options = None - _ADMINSERVICE.methods_by_name['GetExecutionData']._serialized_options = b'\202\323\344\223\002\207\001ZI\022G/api/v1/data/org/{id.org}/executions/{id.project}/{id.domain}/{id.name}\022:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}' + _ADMINSERVICE.methods_by_name['GetExecutionData']._serialized_options = b'\202\323\344\223\002<\022:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}' _ADMINSERVICE.methods_by_name['ListExecutions']._options = None - _ADMINSERVICE.methods_by_name['ListExecutions']._serialized_options = b'\202\323\344\223\002iZ:\0228/api/v1/executions/org/{id.org}/{id.project}/{id.domain}\022+/api/v1/executions/{id.project}/{id.domain}' + _ADMINSERVICE.methods_by_name['ListExecutions']._serialized_options = b'\202\323\344\223\002-\022+/api/v1/executions/{id.project}/{id.domain}' _ADMINSERVICE.methods_by_name['TerminateExecution']._options = None - _ADMINSERVICE.methods_by_name['TerminateExecution']._serialized_options = b'\202\323\344\223\002\203\001:\001*ZG:\001**B/api/v1/executions/org/{id.org}/{id.project}/{id.domain}/{id.name}*5/api/v1/executions/{id.project}/{id.domain}/{id.name}' + _ADMINSERVICE.methods_by_name['TerminateExecution']._serialized_options = b'\202\323\344\223\002::\001**5/api/v1/executions/{id.project}/{id.domain}/{id.name}' _ADMINSERVICE.methods_by_name['GetNodeExecution']._options = None - _ADMINSERVICE.methods_by_name['GetNodeExecution']._serialized_options = b'\202\323\344\223\002\376\001Z\213\001\022\210\001/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\022n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}' + _ADMINSERVICE.methods_by_name['GetNodeExecution']._serialized_options = b'\202\323\344\223\002p\022n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}' _ADMINSERVICE.methods_by_name['GetDynamicNodeWorkflow']._options = None - _ADMINSERVICE.methods_by_name['GetDynamicNodeWorkflow']._serialized_options = b'\202\323\344\223\002\240\002Z\234\001\022\231\001/api/v1/node_executions/org/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow\022\177/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow' + _ADMINSERVICE.methods_by_name['GetDynamicNodeWorkflow']._serialized_options = b'\202\323\344\223\002\201\001\022\177/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow' _ADMINSERVICE.methods_by_name['ListNodeExecutions']._options = None - _ADMINSERVICE.methods_by_name['ListNodeExecutions']._serialized_options = b'\202\323\344\223\002\216\002Z\226\001\022\223\001/api/v1/node_executions/org/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\022s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}' + _ADMINSERVICE.methods_by_name['ListNodeExecutions']._serialized_options = b'\202\323\344\223\002u\022s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}' _ADMINSERVICE.methods_by_name['ListNodeExecutionsForTask']._options = None - _ADMINSERVICE.methods_by_name['ListNodeExecutionsForTask']._serialized_options = b'\202\323\344\223\002\226\007Z\347\003\022\344\003/api/v1/children/org/{task_execution_id.node_execution_id.execution_id.org}/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\022\251\003/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}' + _ADMINSERVICE.methods_by_name['ListNodeExecutionsForTask']._serialized_options = b'\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}' _ADMINSERVICE.methods_by_name['GetNodeExecutionData']._options = None - _ADMINSERVICE.methods_by_name['GetNodeExecutionData']._serialized_options = b'\202\323\344\223\002\210\002Z\220\001\022\215\001/api/v1/data/org/{id.execution_id.org}/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\022s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}' + _ADMINSERVICE.methods_by_name['GetNodeExecutionData']._serialized_options = b'\202\323\344\223\002u\022s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}' _ADMINSERVICE.methods_by_name['RegisterProject']._options = None - _ADMINSERVICE.methods_by_name['RegisterProject']._serialized_options = b'\202\323\344\223\002>:\001*Z\':\001*\"\"/api/v1/projects/org/{project.org}\"\020/api/v1/projects' + _ADMINSERVICE.methods_by_name['RegisterProject']._serialized_options = b'\202\323\344\223\002\025:\001*\"\020/api/v1/projects' _ADMINSERVICE.methods_by_name['UpdateProject']._options = None - _ADMINSERVICE.methods_by_name['UpdateProject']._serialized_options = b'\222A\023\032\021Update a project.\202\323\344\223\002@:\001*Z$:\001*\032\037/api/v1/projects/org/{org}/{id}\032\025/api/v1/projects/{id}' + _ADMINSERVICE.methods_by_name['UpdateProject']._serialized_options = b'\222A\023\032\021Update a project.\202\323\344\223\002\032:\001*\032\025/api/v1/projects/{id}' _ADMINSERVICE.methods_by_name['ListProjects']._options = None - _ADMINSERVICE.methods_by_name['ListProjects']._serialized_options = b'\222A\034\032\032Fetch registered projects.\202\323\344\223\0020Z\034\022\032/api/v1/projects/org/{org}\022\020/api/v1/projects' + _ADMINSERVICE.methods_by_name['ListProjects']._serialized_options = b'\222A\034\032\032Fetch registered projects.\202\323\344\223\002\022\022\020/api/v1/projects' _ADMINSERVICE.methods_by_name['CreateWorkflowEvent']._options = None - _ADMINSERVICE.methods_by_name['CreateWorkflowEvent']._serialized_options = b'\222AA\032?Create a workflow execution event recording a phase transition.\202\323\344\223\002Y:\001*Z::\001*\"5/api/v1/events/org/{event.execution_id.org}/workflows\"\030/api/v1/events/workflows' + _ADMINSERVICE.methods_by_name['CreateWorkflowEvent']._serialized_options = b'\222AA\032?Create a workflow execution event recording a phase transition.\202\323\344\223\002\035:\001*\"\030/api/v1/events/workflows' _ADMINSERVICE.methods_by_name['CreateNodeEvent']._options = None - _ADMINSERVICE.methods_by_name['CreateNodeEvent']._serialized_options = b'\222A=\032;Create a node execution event recording a phase transition.\202\323\344\223\002T:\001*Z9:\001*\"4/api/v1/events/org/{event.id.execution_id.org}/nodes\"\024/api/v1/events/nodes' + _ADMINSERVICE.methods_by_name['CreateNodeEvent']._serialized_options = b'\222A=\032;Create a node execution event recording a phase transition.\202\323\344\223\002\031:\001*\"\024/api/v1/events/nodes' _ADMINSERVICE.methods_by_name['CreateTaskEvent']._options = None - _ADMINSERVICE.methods_by_name['CreateTaskEvent']._serialized_options = b'\222A=\032;Create a task execution event recording a phase transition.\202\323\344\223\002j:\001*ZO:\001*\"J/api/v1/events/org/{event.parent_node_execution_id.execution_id.org}/tasks\"\024/api/v1/events/tasks' + _ADMINSERVICE.methods_by_name['CreateTaskEvent']._serialized_options = b'\222A=\032;Create a task execution event recording a phase transition.\202\323\344\223\002\031:\001*\"\024/api/v1/events/tasks' _ADMINSERVICE.methods_by_name['GetTaskExecution']._options = None - _ADMINSERVICE.methods_by_name['GetTaskExecution']._serialized_options = b'\222A&\032$Retrieve an existing task execution.\202\323\344\223\002\347\004Z\310\002\022\305\002/api/v1/task_executions/org/{id.node_execution_id.execution_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\022\231\002/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}' + _ADMINSERVICE.methods_by_name['GetTaskExecution']._serialized_options = b'\222A&\032$Retrieve an existing task execution.\202\323\344\223\002\234\002\022\231\002/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}' _ADMINSERVICE.methods_by_name['ListTaskExecutions']._options = None - _ADMINSERVICE.methods_by_name['ListTaskExecutions']._serialized_options = b'\222A8\0326Fetch existing task executions matching input filters.\202\323\344\223\002\206\003Z\326\001\022\323\001/api/v1/task_executions/org/{node_execution_id.execution_id.org}/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\022\252\001/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}' + _ADMINSERVICE.methods_by_name['ListTaskExecutions']._serialized_options = b'\222A8\0326Fetch existing task executions matching input filters.\202\323\344\223\002\255\001\022\252\001/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}' _ADMINSERVICE.methods_by_name['GetTaskExecutionData']._options = None - _ADMINSERVICE.methods_by_name['GetTaskExecutionData']._serialized_options = b'\222AA\032?Retrieve input and output data from an existing task execution.\202\323\344\223\002\361\004Z\315\002\022\312\002/api/v1/data/org/{id.node_execution_id.execution_id.org}/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\022\236\002/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}' + _ADMINSERVICE.methods_by_name['GetTaskExecutionData']._serialized_options = b'\222AA\032?Retrieve input and output data from an existing task execution.\202\323\344\223\002\241\002\022\236\002/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}' _ADMINSERVICE.methods_by_name['UpdateProjectDomainAttributes']._options = None - _ADMINSERVICE.methods_by_name['UpdateProjectDomainAttributes']._serialized_options = b'\222AX\032VUpdate the customized resource attributes associated with a project-domain combination\202\323\344\223\002\265\001:\001*Zd:\001*\032_/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}\032J/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}' + _ADMINSERVICE.methods_by_name['UpdateProjectDomainAttributes']._serialized_options = b'\222AX\032VUpdate the customized resource attributes associated with a project-domain combination\202\323\344\223\002O:\001*\032J/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}' _ADMINSERVICE.methods_by_name['GetProjectDomainAttributes']._options = None - _ADMINSERVICE.methods_by_name['GetProjectDomainAttributes']._serialized_options = b'\222AZ\032XRetrieve the customized resource attributes associated with a project-domain combination\202\323\344\223\002xZ@\022>/api/v1/project_domain_attributes/org/{org}/{project}/{domain}\0224/api/v1/project_domain_attributes/{project}/{domain}' + _ADMINSERVICE.methods_by_name['GetProjectDomainAttributes']._serialized_options = b'\222AZ\032XRetrieve the customized resource attributes associated with a project-domain combination\202\323\344\223\0026\0224/api/v1/project_domain_attributes/{project}/{domain}' _ADMINSERVICE.methods_by_name['DeleteProjectDomainAttributes']._options = None - _ADMINSERVICE.methods_by_name['DeleteProjectDomainAttributes']._serialized_options = b'\222AX\032VDelete the customized resource attributes associated with a project-domain combination\202\323\344\223\002~:\001*ZC:\001**>/api/v1/project_domain_attributes/org/{org}/{project}/{domain}*4/api/v1/project_domain_attributes/{project}/{domain}' + _ADMINSERVICE.methods_by_name['DeleteProjectDomainAttributes']._serialized_options = b'\222AX\032VDelete the customized resource attributes associated with a project-domain combination\202\323\344\223\0029:\001**4/api/v1/project_domain_attributes/{project}/{domain}' _ADMINSERVICE.methods_by_name['UpdateProjectAttributes']._options = None - _ADMINSERVICE.methods_by_name['UpdateProjectAttributes']._serialized_options = b'\222AE\032CUpdate the customized resource attributes associated with a project\202\323\344\223\002\206\001:\001*ZP:\001*\032K/api/v1/project_domain_attributes/org/{attributes.org}/{attributes.project}\032//api/v1/project_attributes/{attributes.project}' + _ADMINSERVICE.methods_by_name['UpdateProjectAttributes']._serialized_options = b'\222AE\032CUpdate the customized resource attributes associated with a project\202\323\344\223\0024:\001*\032//api/v1/project_attributes/{attributes.project}' _ADMINSERVICE.methods_by_name['GetProjectAttributes']._options = None - _ADMINSERVICE.methods_by_name['GetProjectAttributes']._serialized_options = b'\222AG\032ERetrieve the customized resource attributes associated with a project\202\323\344\223\002_Z7\0225/api/v1/project_domain_attributes/org/{org}/{project}\022$/api/v1/project_attributes/{project}' + _ADMINSERVICE.methods_by_name['GetProjectAttributes']._serialized_options = b'\222AG\032ERetrieve the customized resource attributes associated with a project\202\323\344\223\002&\022$/api/v1/project_attributes/{project}' _ADMINSERVICE.methods_by_name['DeleteProjectAttributes']._options = None - _ADMINSERVICE.methods_by_name['DeleteProjectAttributes']._serialized_options = b'\222AE\032CDelete the customized resource attributes associated with a project\202\323\344\223\002e:\001*Z::\001**5/api/v1/project_domain_attributes/org/{org}/{project}*$/api/v1/project_attributes/{project}' + _ADMINSERVICE.methods_by_name['DeleteProjectAttributes']._serialized_options = b'\222AE\032CDelete the customized resource attributes associated with a project\202\323\344\223\002):\001**$/api/v1/project_attributes/{project}' _ADMINSERVICE.methods_by_name['UpdateWorkflowAttributes']._options = None - _ADMINSERVICE.methods_by_name['UpdateWorkflowAttributes']._serialized_options = b'\222Af\032dUpdate the customized resource attributes associated with a project, domain and workflow combination\202\323\344\223\002\325\001:\001*Zt:\001*\032o/api/v1/workflow_attributes/org/{attributes.org}/{attributes.project}/{attributes.domain}/{attributes.workflow}\032Z/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}' + _ADMINSERVICE.methods_by_name['UpdateWorkflowAttributes']._serialized_options = b'\222Af\032dUpdate the customized resource attributes associated with a project, domain and workflow combination\202\323\344\223\002_:\001*\032Z/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}' _ADMINSERVICE.methods_by_name['GetWorkflowAttributes']._options = None - _ADMINSERVICE.methods_by_name['GetWorkflowAttributes']._serialized_options = b'\222Ah\032fRetrieve the customized resource attributes associated with a project, domain and workflow combination\202\323\344\223\002\202\001ZE\022C/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}\0229/api/v1/workflow_attributes/{project}/{domain}/{workflow}' + _ADMINSERVICE.methods_by_name['GetWorkflowAttributes']._serialized_options = b'\222Ah\032fRetrieve the customized resource attributes associated with a project, domain and workflow combination\202\323\344\223\002;\0229/api/v1/workflow_attributes/{project}/{domain}/{workflow}' _ADMINSERVICE.methods_by_name['DeleteWorkflowAttributes']._options = None - _ADMINSERVICE.methods_by_name['DeleteWorkflowAttributes']._serialized_options = b'\222Af\032dDelete the customized resource attributes associated with a project, domain and workflow combination\202\323\344\223\002\210\001:\001*ZH:\001**C/api/v1/workflow_attributes/org/{org}/{project}/{domain}/{workflow}*9/api/v1/workflow_attributes/{project}/{domain}/{workflow}' + _ADMINSERVICE.methods_by_name['DeleteWorkflowAttributes']._serialized_options = b'\222Af\032dDelete the customized resource attributes associated with a project, domain and workflow combination\202\323\344\223\002>:\001**9/api/v1/workflow_attributes/{project}/{domain}/{workflow}' _ADMINSERVICE.methods_by_name['ListMatchableAttributes']._options = None - _ADMINSERVICE.methods_by_name['ListMatchableAttributes']._serialized_options = b'\222A>\032\032 Date: Thu, 15 Feb 2024 09:08:03 -0600 Subject: [PATCH 024/107] added fixed_literal to launchplan template (#4902) Signed-off-by: Daniel Rammer --- .../gen/pb-es/flyteidl/core/workflow_pb.ts | 10 ++- .../gen/pb-go/flyteidl/core/workflow.pb.go | 65 ++++++++++++------- .../flyteidl/service/admin.swagger.json | 4 ++ flyteidl/gen/pb-js/flyteidl.d.ts | 6 ++ flyteidl/gen/pb-js/flyteidl.js | 19 ++++++ .../pb_python/flyteidl/core/workflow_pb2.py | 6 +- .../pb_python/flyteidl/core/workflow_pb2.pyi | 6 +- flyteidl/gen/pb_rust/flyteidl.core.rs | 3 + flyteidl/protos/flyteidl/core/workflow.proto | 3 + 9 files changed, 91 insertions(+), 31 deletions(-) diff --git a/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts index 6c599f08b30..644f792e633 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts @@ -8,7 +8,7 @@ import { Duration, Message, proto3 } from "@bufbuild/protobuf"; import { BooleanExpression } from "./condition_pb.js"; import { Error, LiteralType } from "./types_pb.js"; import { Identifier } from "./identifier_pb.js"; -import { Binding, RetryStrategy } from "./literals_pb.js"; +import { Binding, LiteralMap, RetryStrategy } from "./literals_pb.js"; import { QualityOfService } from "./execution_pb.js"; import { TypedInterface } from "./interface_pb.js"; import { ExtendedResources, Resources } from "./tasks_pb.js"; @@ -1170,6 +1170,13 @@ export class LaunchPlanTemplate extends Message { */ interface?: TypedInterface; + /** + * A collection of input literals that are fixed for the launch plan + * + * @generated from field: flyteidl.core.LiteralMap fixed_inputs = 3; + */ + fixedInputs?: LiteralMap; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -1180,6 +1187,7 @@ export class LaunchPlanTemplate extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "id", kind: "message", T: Identifier }, { no: 2, name: "interface", kind: "message", T: TypedInterface }, + { no: 3, name: "fixed_inputs", kind: "message", T: LiteralMap }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): LaunchPlanTemplate { diff --git a/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go b/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go index 66127d2534f..f9318f539f9 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go @@ -1556,6 +1556,8 @@ type LaunchPlanTemplate struct { Id *Identifier `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The input and output interface for the launch plan Interface *TypedInterface `protobuf:"bytes,2,opt,name=interface,proto3" json:"interface,omitempty"` + // A collection of input literals that are fixed for the launch plan + FixedInputs *LiteralMap `protobuf:"bytes,3,opt,name=fixed_inputs,json=fixedInputs,proto3" json:"fixed_inputs,omitempty"` } func (x *LaunchPlanTemplate) Reset() { @@ -1604,6 +1606,13 @@ func (x *LaunchPlanTemplate) GetInterface() *TypedInterface { return nil } +func (x *LaunchPlanTemplate) GetFixedInputs() *LiteralMap { + if x != nil { + return x.FixedInputs + } + return nil +} + var File_flyteidl_core_workflow_proto protoreflect.FileDescriptor var file_flyteidl_core_workflow_proto_rawDesc = []byte{ @@ -1840,26 +1849,30 @@ var file_flyteidl_core_workflow_proto_rawDesc = []byte{ 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, - 0x61, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, - 0x63, 0x65, 0x42, 0xb3, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 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, + 0x72, 0x63, 0x65, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, + 0x6c, 0x61, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x66, 0x69, 0x78, 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, 0x52, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, + 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, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 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 ( @@ -1908,6 +1921,7 @@ var file_flyteidl_core_workflow_proto_goTypes = []interface{}{ (*TypedInterface)(nil), // 28: flyteidl.core.TypedInterface (*Resources)(nil), // 29: flyteidl.core.Resources (*ExtendedResources)(nil), // 30: flyteidl.core.ExtendedResources + (*LiteralMap)(nil), // 31: flyteidl.core.LiteralMap } var file_flyteidl_core_workflow_proto_depIdxs = []int32{ 20, // 0: flyteidl.core.IfBlock.condition:type_name -> flyteidl.core.BooleanExpression @@ -1951,11 +1965,12 @@ var file_flyteidl_core_workflow_proto_depIdxs = []int32{ 30, // 38: flyteidl.core.TaskNodeOverrides.extended_resources:type_name -> flyteidl.core.ExtendedResources 22, // 39: flyteidl.core.LaunchPlanTemplate.id:type_name -> flyteidl.core.Identifier 28, // 40: flyteidl.core.LaunchPlanTemplate.interface:type_name -> flyteidl.core.TypedInterface - 41, // [41:41] is the sub-list for method output_type - 41, // [41:41] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name + 31, // 41: flyteidl.core.LaunchPlanTemplate.fixed_inputs:type_name -> flyteidl.core.LiteralMap + 42, // [42:42] is the sub-list for method output_type + 42, // [42:42] is the sub-list for method input_type + 42, // [42:42] is the sub-list for extension type_name + 42, // [42:42] is the sub-list for extension extendee + 0, // [0:42] is the sub-list for field type_name } func init() { file_flyteidl_core_workflow_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 30e653daa3a..73dbd3b8dcf 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -7221,6 +7221,10 @@ "interface": { "$ref": "#/definitions/coreTypedInterface", "title": "The input and output interface for the launch plan" + }, + "fixed_inputs": { + "$ref": "#/definitions/coreLiteralMap", + "title": "A collection of input literals that are fixed for the launch plan" } }, "description": "A structure that uniquely identifies a launch plan in the system." diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 0c056241314..87de89064b3 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -4993,6 +4993,9 @@ export namespace flyteidl { /** LaunchPlanTemplate interface */ "interface"?: (flyteidl.core.ITypedInterface|null); + + /** LaunchPlanTemplate fixedInputs */ + fixedInputs?: (flyteidl.core.ILiteralMap|null); } /** Represents a LaunchPlanTemplate. */ @@ -5010,6 +5013,9 @@ export namespace flyteidl { /** LaunchPlanTemplate interface. */ public interface?: (flyteidl.core.ITypedInterface|null); + /** LaunchPlanTemplate fixedInputs. */ + public fixedInputs?: (flyteidl.core.ILiteralMap|null); + /** * Creates a new LaunchPlanTemplate instance using the specified properties. * @param [properties] Properties to set diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 4fe6ae7a4ad..c7fac48ad5f 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -12100,6 +12100,7 @@ * @interface ILaunchPlanTemplate * @property {flyteidl.core.IIdentifier|null} [id] LaunchPlanTemplate id * @property {flyteidl.core.ITypedInterface|null} ["interface"] LaunchPlanTemplate interface + * @property {flyteidl.core.ILiteralMap|null} [fixedInputs] LaunchPlanTemplate fixedInputs */ /** @@ -12133,6 +12134,14 @@ */ LaunchPlanTemplate.prototype["interface"] = null; + /** + * LaunchPlanTemplate fixedInputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} fixedInputs + * @memberof flyteidl.core.LaunchPlanTemplate + * @instance + */ + LaunchPlanTemplate.prototype.fixedInputs = null; + /** * Creates a new LaunchPlanTemplate instance using the specified properties. * @function create @@ -12161,6 +12170,8 @@ $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message["interface"] != null && message.hasOwnProperty("interface")) $root.flyteidl.core.TypedInterface.encode(message["interface"], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.fixedInputs != null && message.hasOwnProperty("fixedInputs")) + $root.flyteidl.core.LiteralMap.encode(message.fixedInputs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -12188,6 +12199,9 @@ case 2: message["interface"] = $root.flyteidl.core.TypedInterface.decode(reader, reader.uint32()); break; + case 3: + message.fixedInputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -12217,6 +12231,11 @@ if (error) return "interface." + error; } + if (message.fixedInputs != null && message.hasOwnProperty("fixedInputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.fixedInputs); + if (error) + return "fixedInputs." + error; + } return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py index 0d5c6e9b466..ab629c2b9fb 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py @@ -22,7 +22,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\"{\n\x07IfBlock\x12>\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpressionR\tcondition\x12\x30\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x08thenNode\"\xd4\x01\n\x0bIfElseBlock\x12*\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlockR\x04\x63\x61se\x12,\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlockR\x05other\x12\x32\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00R\x08\x65lseNode\x12,\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rrorB\t\n\x07\x64\x65\x66\x61ult\"A\n\nBranchNode\x12\x33\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlockR\x06ifElse\"\x97\x01\n\x08TaskNode\x12>\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0breferenceId\x12>\n\toverrides\x18\x02 \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverridesB\x0b\n\treference\"\xa6\x01\n\x0cWorkflowNode\x12\x42\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\rlaunchplanRef\x12\x45\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0esubWorkflowRefB\x0b\n\treference\"/\n\x10\x41pproveCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\"\x90\x01\n\x0fSignalCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x30\n\x14output_variable_name\x18\x03 \x01(\tR\x12outputVariableName\"G\n\x0eSleepCondition\x12\x35\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\"\xc5\x01\n\x08GateNode\x12;\n\x07\x61pprove\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.ApproveConditionH\x00R\x07\x61pprove\x12\x38\n\x06signal\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SignalConditionH\x00R\x06signal\x12\x35\n\x05sleep\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.SleepConditionH\x00R\x05sleepB\x0b\n\tcondition\"\xbf\x01\n\tArrayNode\x12\'\n\x04node\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x04node\x12 \n\x0bparallelism\x18\x02 \x01(\rR\x0bparallelism\x12%\n\rmin_successes\x18\x03 \x01(\rH\x00R\x0cminSuccesses\x12,\n\x11min_success_ratio\x18\x04 \x01(\x02H\x00R\x0fminSuccessRatioB\x12\n\x10success_criteria\"\x8c\x03\n\x0cNodeMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x33\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x07timeout\x12\x36\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategyR\x07retries\x12&\n\rinterruptible\x18\x06 \x01(\x08H\x00R\rinterruptible\x12\x1e\n\tcacheable\x18\x07 \x01(\x08H\x01R\tcacheable\x12%\n\rcache_version\x18\x08 \x01(\tH\x02R\x0c\x63\x61\x63heVersion\x12/\n\x12\x63\x61\x63he_serializable\x18\t \x01(\x08H\x03R\x11\x63\x61\x63heSerializableB\x15\n\x13interruptible_valueB\x11\n\x0f\x63\x61\x63heable_valueB\x15\n\x13\x63\x61\x63he_version_valueB\x1a\n\x18\x63\x61\x63he_serializable_value\"/\n\x05\x41lias\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x14\n\x05\x61lias\x18\x02 \x01(\tR\x05\x61lias\"\x9f\x04\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadataR\x08metadata\x12.\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x06inputs\x12*\n\x11upstream_node_ids\x18\x04 \x03(\tR\x0fupstreamNodeIds\x12;\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.AliasR\routputAliases\x12\x36\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00R\x08taskNode\x12\x42\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00R\x0cworkflowNode\x12<\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00R\nbranchNode\x12\x36\n\tgate_node\x18\t \x01(\x0b\x32\x17.flyteidl.core.GateNodeH\x00R\x08gateNode\x12\x39\n\narray_node\x18\n \x01(\x0b\x32\x18.flyteidl.core.ArrayNodeH\x00R\tarrayNodeB\x08\n\x06target\"\xfc\x02\n\x10WorkflowMetadata\x12M\n\x12quality_of_service\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12N\n\non_failure\x18\x02 \x01(\x0e\x32/.flyteidl.core.WorkflowMetadata.OnFailurePolicyR\tonFailure\x12=\n\x04tags\x18\x03 \x03(\x0b\x32).flyteidl.core.WorkflowMetadata.TagsEntryR\x04tags\x1a\x37\n\tTagsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"Q\n\x0fOnFailurePolicy\x12\x14\n\x10\x46\x41IL_IMMEDIATELY\x10\x00\x12(\n$FAIL_AFTER_EXECUTABLE_NODES_COMPLETE\x10\x01\"@\n\x18WorkflowMetadataDefaults\x12$\n\rinterruptible\x18\x01 \x01(\x08R\rinterruptible\"\xa2\x03\n\x10WorkflowTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\x08metadata\x18\x02 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowMetadataR\x08metadata\x12;\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12)\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.NodeR\x05nodes\x12\x30\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x07outputs\x12\x36\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x0b\x66\x61ilureNode\x12T\n\x11metadata_defaults\x18\x07 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaultsR\x10metadataDefaults\"\x9c\x01\n\x11TaskNodeOverrides\x12\x36\n\tresources\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\x12O\n\x12\x65xtended_resources\x18\x02 \x01(\x0b\x32 .flyteidl.core.ExtendedResourcesR\x11\x65xtendedResources\"|\n\x12LaunchPlanTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\tinterface\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterfaceB\xb3\x01\n\x11\x63om.flyteidl.coreB\rWorkflowProtoP\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/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\"{\n\x07IfBlock\x12>\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpressionR\tcondition\x12\x30\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x08thenNode\"\xd4\x01\n\x0bIfElseBlock\x12*\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlockR\x04\x63\x61se\x12,\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlockR\x05other\x12\x32\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00R\x08\x65lseNode\x12,\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rrorB\t\n\x07\x64\x65\x66\x61ult\"A\n\nBranchNode\x12\x33\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlockR\x06ifElse\"\x97\x01\n\x08TaskNode\x12>\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0breferenceId\x12>\n\toverrides\x18\x02 \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverridesB\x0b\n\treference\"\xa6\x01\n\x0cWorkflowNode\x12\x42\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\rlaunchplanRef\x12\x45\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0esubWorkflowRefB\x0b\n\treference\"/\n\x10\x41pproveCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\"\x90\x01\n\x0fSignalCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x30\n\x14output_variable_name\x18\x03 \x01(\tR\x12outputVariableName\"G\n\x0eSleepCondition\x12\x35\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\"\xc5\x01\n\x08GateNode\x12;\n\x07\x61pprove\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.ApproveConditionH\x00R\x07\x61pprove\x12\x38\n\x06signal\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SignalConditionH\x00R\x06signal\x12\x35\n\x05sleep\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.SleepConditionH\x00R\x05sleepB\x0b\n\tcondition\"\xbf\x01\n\tArrayNode\x12\'\n\x04node\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x04node\x12 \n\x0bparallelism\x18\x02 \x01(\rR\x0bparallelism\x12%\n\rmin_successes\x18\x03 \x01(\rH\x00R\x0cminSuccesses\x12,\n\x11min_success_ratio\x18\x04 \x01(\x02H\x00R\x0fminSuccessRatioB\x12\n\x10success_criteria\"\x8c\x03\n\x0cNodeMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x33\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x07timeout\x12\x36\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategyR\x07retries\x12&\n\rinterruptible\x18\x06 \x01(\x08H\x00R\rinterruptible\x12\x1e\n\tcacheable\x18\x07 \x01(\x08H\x01R\tcacheable\x12%\n\rcache_version\x18\x08 \x01(\tH\x02R\x0c\x63\x61\x63heVersion\x12/\n\x12\x63\x61\x63he_serializable\x18\t \x01(\x08H\x03R\x11\x63\x61\x63heSerializableB\x15\n\x13interruptible_valueB\x11\n\x0f\x63\x61\x63heable_valueB\x15\n\x13\x63\x61\x63he_version_valueB\x1a\n\x18\x63\x61\x63he_serializable_value\"/\n\x05\x41lias\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x14\n\x05\x61lias\x18\x02 \x01(\tR\x05\x61lias\"\x9f\x04\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadataR\x08metadata\x12.\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x06inputs\x12*\n\x11upstream_node_ids\x18\x04 \x03(\tR\x0fupstreamNodeIds\x12;\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.AliasR\routputAliases\x12\x36\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00R\x08taskNode\x12\x42\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00R\x0cworkflowNode\x12<\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00R\nbranchNode\x12\x36\n\tgate_node\x18\t \x01(\x0b\x32\x17.flyteidl.core.GateNodeH\x00R\x08gateNode\x12\x39\n\narray_node\x18\n \x01(\x0b\x32\x18.flyteidl.core.ArrayNodeH\x00R\tarrayNodeB\x08\n\x06target\"\xfc\x02\n\x10WorkflowMetadata\x12M\n\x12quality_of_service\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12N\n\non_failure\x18\x02 \x01(\x0e\x32/.flyteidl.core.WorkflowMetadata.OnFailurePolicyR\tonFailure\x12=\n\x04tags\x18\x03 \x03(\x0b\x32).flyteidl.core.WorkflowMetadata.TagsEntryR\x04tags\x1a\x37\n\tTagsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"Q\n\x0fOnFailurePolicy\x12\x14\n\x10\x46\x41IL_IMMEDIATELY\x10\x00\x12(\n$FAIL_AFTER_EXECUTABLE_NODES_COMPLETE\x10\x01\"@\n\x18WorkflowMetadataDefaults\x12$\n\rinterruptible\x18\x01 \x01(\x08R\rinterruptible\"\xa2\x03\n\x10WorkflowTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\x08metadata\x18\x02 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowMetadataR\x08metadata\x12;\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12)\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.NodeR\x05nodes\x12\x30\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x07outputs\x12\x36\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x0b\x66\x61ilureNode\x12T\n\x11metadata_defaults\x18\x07 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaultsR\x10metadataDefaults\"\x9c\x01\n\x11TaskNodeOverrides\x12\x36\n\tresources\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\x12O\n\x12\x65xtended_resources\x18\x02 \x01(\x0b\x32 .flyteidl.core.ExtendedResourcesR\x11\x65xtendedResources\"\xba\x01\n\x12LaunchPlanTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\tinterface\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12<\n\x0c\x66ixed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ixedInputsB\xb3\x01\n\x11\x63om.flyteidl.coreB\rWorkflowProtoP\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) @@ -71,6 +71,6 @@ _globals['_WORKFLOWTEMPLATE']._serialized_end=3573 _globals['_TASKNODEOVERRIDES']._serialized_start=3576 _globals['_TASKNODEOVERRIDES']._serialized_end=3732 - _globals['_LAUNCHPLANTEMPLATE']._serialized_start=3734 - _globals['_LAUNCHPLANTEMPLATE']._serialized_end=3858 + _globals['_LAUNCHPLANTEMPLATE']._serialized_start=3735 + _globals['_LAUNCHPLANTEMPLATE']._serialized_end=3921 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi index d23b07f5403..efee1e9ec27 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi @@ -207,9 +207,11 @@ class TaskNodeOverrides(_message.Message): def __init__(self, resources: _Optional[_Union[_tasks_pb2.Resources, _Mapping]] = ..., extended_resources: _Optional[_Union[_tasks_pb2.ExtendedResources, _Mapping]] = ...) -> None: ... class LaunchPlanTemplate(_message.Message): - __slots__ = ["id", "interface"] + __slots__ = ["id", "interface", "fixed_inputs"] ID_FIELD_NUMBER: _ClassVar[int] INTERFACE_FIELD_NUMBER: _ClassVar[int] + FIXED_INPUTS_FIELD_NUMBER: _ClassVar[int] id: _identifier_pb2.Identifier interface: _interface_pb2.TypedInterface - def __init__(self, id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., interface: _Optional[_Union[_interface_pb2.TypedInterface, _Mapping]] = ...) -> None: ... + fixed_inputs: _literals_pb2.LiteralMap + def __init__(self, id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., interface: _Optional[_Union[_interface_pb2.TypedInterface, _Mapping]] = ..., fixed_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ...) -> None: ... diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index 8485a6d7559..683581190e6 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -2645,6 +2645,9 @@ pub struct LaunchPlanTemplate { /// The input and output interface for the launch plan #[prost(message, optional, tag="2")] pub interface: ::core::option::Option, + /// A collection of input literals that are fixed for the launch plan + #[prost(message, optional, tag="3")] + pub fixed_inputs: ::core::option::Option, } /// Adjacency list for the workflow. This is created as part of the compilation process. Every process after the compilation /// step uses this created ConnectionSet diff --git a/flyteidl/protos/flyteidl/core/workflow.proto b/flyteidl/protos/flyteidl/core/workflow.proto index f06b04860ac..8433fc9e31f 100644 --- a/flyteidl/protos/flyteidl/core/workflow.proto +++ b/flyteidl/protos/flyteidl/core/workflow.proto @@ -306,4 +306,7 @@ message LaunchPlanTemplate { // The input and output interface for the launch plan TypedInterface interface = 2; + + // A collection of input literals that are fixed for the launch plan + LiteralMap fixed_inputs = 3; } From 02cc15efa7bf79f7b1728323d168f8572a6a9894 Mon Sep 17 00:00:00 2001 From: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> Date: Fri, 16 Feb 2024 17:57:02 +0100 Subject: [PATCH 025/107] Update broken links (#4910) Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> --- CHANGELOG/CHANGELOG-v0.11.0.md | 2 +- CHANGELOG/CHANGELOG-v0.14.0.md | 4 +-- CHANGELOG/CHANGELOG-v0.17.0.md | 6 ++-- CHANGELOG/CHANGELOG-v0.5.0.md | 6 ++-- CHANGELOG/CHANGELOG-v0.9.0.md | 2 +- CHANGELOG/CHANGELOG-v1.1.0.md | 2 +- CHANGELOG/CHANGELOG-v1.2.0.md | 8 +++--- CHANGELOG/CHANGELOG-v1.3.0.md | 2 +- CHANGELOG/CHANGELOG-v1.5.0.md | 18 ++++++------ docs/community/roadmap.rst | 2 +- rfc/system/1476-task-resources.md | 6 ++-- .../1893-caching-of-offloaded-objects.md | 28 +++++++++---------- .../2633-eviction-of-cached-task-outputs.md | 14 +++++----- 13 files changed, 50 insertions(+), 50 deletions(-) diff --git a/CHANGELOG/CHANGELOG-v0.11.0.md b/CHANGELOG/CHANGELOG-v0.11.0.md index 16c450a82ec..f6008fc2916 100644 --- a/CHANGELOG/CHANGELOG-v0.11.0.md +++ b/CHANGELOG/CHANGELOG-v0.11.0.md @@ -4,7 +4,7 @@ * New to flyte? https://start.flyte.org takes you through first run experience. (Thanks to @jeevb) * [Grafana templates](https://docs.flyte.org/en/latest/howto/monitoring/index.html) for monitoring Flyte System and User Workflows. * [Extend Flyte](https://docs.flyte.org/en/latest/plugins/index.html) docs. -* [FlyteIdl Docs](https://docs.flyte.org/en/latest/) are published! You can learn about the core language that makes it all work. +* [FlyteIdl Docs](https://docs.flyte.org/en/latest/reference_flyteidl.html) are published! You can learn about the core language that makes it all work. * [Additional knob](https://github.com/flyteorg/flytepropeller/pull/219/files#diff-91657d6448dfbf87f4cecf126ad02bd668ea233edcf74e860ef4f54bdd4cb552R78) for fine tuning flyte propeller performance that speeds up executions drastically. * OidC support for Google Idp (And other OidC compliant Idps) * Various stabilization bugs. diff --git a/CHANGELOG/CHANGELOG-v0.14.0.md b/CHANGELOG/CHANGELOG-v0.14.0.md index 705ab6ac037..d27dfcabda6 100644 --- a/CHANGELOG/CHANGELOG-v0.14.0.md +++ b/CHANGELOG/CHANGELOG-v0.14.0.md @@ -11,7 +11,7 @@ - performance improvement for dynamic workflows ## Flyteconsole - - Bug fixes + - Bug fixes - More updates coming soon ## Flytekit @@ -27,6 +27,6 @@ - More use case driven examples in flytesnacks ## flytectl - - flytectl is ready for BETA. check it out - https://docs.flyte.org/en/latest/flytectl/ + - flytectl is ready for BETA. check it out - https://docs.flyte.org/en/latest/flytectl/overview.html Please see the [flytekit release](https://github.com/flyteorg/flytekit/releases/tag/v0.18.0) for the full list and more details. diff --git a/CHANGELOG/CHANGELOG-v0.17.0.md b/CHANGELOG/CHANGELOG-v0.17.0.md index 2605bfae45a..2304834992e 100644 --- a/CHANGELOG/CHANGELOG-v0.17.0.md +++ b/CHANGELOG/CHANGELOG-v0.17.0.md @@ -7,10 +7,10 @@ ## Flytekit -1. Great Expectations Integration ([docs](https://docs.flyte.org/en/latest/flytesnacks/auto/integrations/flytekit_plugins/greatexpectations/index.html#great-expectations)). +1. Great Expectations Integration ([docs](https://docs.flyte.org/en/latest/flytesnacks/examples/greatexpectations_plugin/index.html)). 1. Access to durable blob stores (AWS/GCS/etc) are now pluggable. 1. Local task execution has been updated to also trigger the type engine. -1. Tasks that have `cache=True` should now be cached when running locally as well ([docs](https://docs.flyte.org/en/latest/flytesnacks/auto/core/flyte_basics/task_cache.html#how-local-caching-works)). +1. Tasks that have `cache=True` should now be cached when running locally as well ([docs](https://docs.flyte.org/en/latest/flytesnacks/examples/development_lifecycle/task_cache.html#how-does-local-caching-work)). Please see the [flytekit release](https://github.com/flyteorg/flytekit/releases/tag/v0.22.0) for the full list and more details. @@ -20,7 +20,7 @@ Please see the [flytekit release](https://github.com/flyteorg/flytekit/releases/ New Graph UX 1. JSON Validation for json-based types in the UI. - + | Before | After | | -------- | -------- | diff --git a/CHANGELOG/CHANGELOG-v0.5.0.md b/CHANGELOG/CHANGELOG-v0.5.0.md index ed6d4bb6be2..20382f7050b 100644 --- a/CHANGELOG/CHANGELOG-v0.5.0.md +++ b/CHANGELOG/CHANGELOG-v0.5.0.md @@ -2,12 +2,12 @@ ## Infrastructure - Moved CI/CD to Github Actions -- Added end-to-end tests as part of the PR & master merges. +- Added end-to-end tests as part of the PR & master merges. - Enable CI system to run on forks. ## Core Platform -- [Single Task Execution](https://flyte.readthedocs.io/en/latest/user/features/single_task_execution.html) to enable registering and launching tasks outside the scope of a workflow to enable faster iteration and a more intuitive development workflow. -- [Run to completion](https://flyte.readthedocs.io/en/latest/user/features/on_failure_policy.html) to enable workflows to continue executing even if one or more branches fail. +- [Single Task Execution](https://docs.flyte.org/en/latest/flytesnacks/examples/development_lifecycle/remote_task.html) to enable registering and launching tasks outside the scope of a workflow to enable faster iteration and a more intuitive development workflow. +- [Run to completion](https://docs.flyte.org/en/latest/protos/docs/core/core.html#ref-flyteidl-core-workflowmetadata-onfailurepolicy) to enable workflows to continue executing even if one or more branches fail. - Fixed retries for dynamically yielded nodes. - PreAlpha Support for Raw container with FlyteCoPilot. (docs coming soon). [Sample Notebooks](https://github.com/lyft/flytekit/blob/master/sample-notebooks/raw-container-shell.ipynb). This makes it possible to run workflows with arbitrary containers diff --git a/CHANGELOG/CHANGELOG-v0.9.0.md b/CHANGELOG/CHANGELOG-v0.9.0.md index 4b6b3fd8c53..c8654e0b396 100644 --- a/CHANGELOG/CHANGELOG-v0.9.0.md +++ b/CHANGELOG/CHANGELOG-v0.9.0.md @@ -1,7 +1,7 @@ ### Flytekit -* Fast register - code only changes no longer need a rebuild of the container to run ([read the docs!](https://flyte.readthedocs.io/en/latest/user/features/fast_registration.html)) +* [Fast register](https://docs.flyte.org/en/latest/flyte_fundamentals/registering_workflows.html) - code only changes no longer need a rebuild of the container to run. * Project archive/activate command in flyte-cli * Bug fixes and misc improvements diff --git a/CHANGELOG/CHANGELOG-v1.1.0.md b/CHANGELOG/CHANGELOG-v1.1.0.md index 9b84ae94d8a..ebcee3739aa 100644 --- a/CHANGELOG/CHANGELOG-v1.1.0.md +++ b/CHANGELOG/CHANGELOG-v1.1.0.md @@ -4,7 +4,7 @@ ### User Improvements Support for [Optional types](https://github.com/flyteorg/flyte/issues/2426). With the inclusion of Union types in flytekit, we can now support optional types. -[Flyte Deck](https://github.com/flyteorg/flyte/issues/2175) is now available. Please take a look at the [documentation](https://docs.flyte.org/en/latest/flytesnacks/auto/core/flyte_basics/deck.html#sphx-glr-auto-core-flyte-basics-deck-py) and also the [OSS presentation](https://www.youtube.com/watch?v=KqyBYIaAZ7c) that was done a few weeks back. +[Flyte Deck](https://github.com/flyteorg/flyte/issues/2175) is now available. Please take a look at the [documentation](https://docs.flyte.org/en/latest/flytesnacks/examples/development_lifecycle/decks.html) and also the [OSS presentation](https://www.youtube.com/watch?v=KqyBYIaAZ7c) that was done a few weeks back. ### Backend Improvements diff --git a/CHANGELOG/CHANGELOG-v1.2.0.md b/CHANGELOG/CHANGELOG-v1.2.0.md index 6ceafe8cfe1..00a3d8c735f 100644 --- a/CHANGELOG/CHANGELOG-v1.2.0.md +++ b/CHANGELOG/CHANGELOG-v1.2.0.md @@ -1,7 +1,7 @@ # Flyte 1.2 Release ## Platform -- Support for Ray (https://github.com/flyteorg/flyte/issues/2641) - Also see the [blog post](https://blog.flyte.org/ray-and-flyte). +- Support for Ray (https://github.com/flyteorg/flyte/issues/2641) - Also see the [blog post](https://blog.flyte.org/ray-and-flyte). - Execution names can be longer now, up to 63 characters (https://github.com/flyteorg/flyteadmin/pull/466) - Offloading FlyteWorkflow CRD static workflow spec (https://github.com/flyteorg/flyte/issues/2705) - Enabled FlytePropeller subqueue - this means that every time a pod is updated in the workflow it reevals for faster downstream scheduling @@ -18,9 +18,9 @@ - dbt plugin (https://github.com/flyteorg/flyte/issues/2202) - cache overriding behavior is now open to all types (https://github.com/flyteorg/flyte/issues/2912) - Bug: Fallback to pickling in the case of unknown types used Unions (https://github.com/flyteorg/flyte/issues/2823) -- [pyflyte run](https://docs.flyte.org/en/latest/api/flytekit/design/clis.html#pyflyte-run) now supports [imperative workflows](https://docs.flyte.org/en/latest/flytesnacks/auto/core/flyte_basics/imperative_wf_style.html#sphx-glr-auto-core-flyte-basics-imperative-wf-style-py) +- [pyflyte run](https://docs.flyte.org/en/latest/api/flytekit/design/clis.html#pyflyte-run) now supports [imperative workflows](https://docs.flyte.org/en/latest/flytesnacks/examples/basics/imperative_workflow.html) - Newlines are now stripped from client secrets (https://github.com/flyteorg/flytekit/pull/1163) -- Ensure repeatability in the generation of cache keys in the case of dictionaries (https://github.com/flyteorg/flytekit/pull/1126) +- Ensure repeatability in the generation of cache keys in the case of dictionaries (https://github.com/flyteorg/flytekit/pull/1126) - Support for multiple images in the yaml config file (https://github.com/flyteorg/flytekit/pull/1106) And more. See the full changelog in https://github.com/flyteorg/flytekit/releases/tag/v1.2.0 @@ -29,7 +29,7 @@ And more. See the full changelog in https://github.com/flyteorg/flytekit/release ## Flyteconsole - fix: Make sure groups used in graph aren't undefined [#545](https://github.com/flyteorg/flyteconsole/pull/545) - fix: Graph Center on initial render [#541](https://github.com/flyteorg/flyteconsole/pull/541) -- fix: Graph edge overlaps nodes [#542](https://github.com/flyteorg/flyteconsole/pull/542) +- fix: Graph edge overlaps nodes [#542](https://github.com/flyteorg/flyteconsole/pull/542) - Fix searchbar X button [#564](https://github.com/flyteorg/flyteconsole/pull/564) - fix: Update timeline view to show dynamic wf internals on first render [#562](https://github.com/flyteorg/flyteconsole/pull/562) - fix: Webmanifest missing crossorigin attribute [#566](https://github.com/flyteorg/flyteconsole/pull/566) diff --git a/CHANGELOG/CHANGELOG-v1.3.0.md b/CHANGELOG/CHANGELOG-v1.3.0.md index 44b836313c1..c15224d4a69 100644 --- a/CHANGELOG/CHANGELOG-v1.3.0.md +++ b/CHANGELOG/CHANGELOG-v1.3.0.md @@ -99,7 +99,7 @@ Users can now configure workflow execution to overwrite the cache. Each task in ### Support for Dask -Users will be able to spawn [Dask](https://www.dask.org/) ephemeral clusters as part of their workflows, similar to the support for [Ray](https://docs.flyte.org/en/latest/flytesnacks/auto/integrations/kubernetes/ray_example/ray_example.html#sphx-glr-auto-integrations-kubernetes-ray-example-ray-example-py) and [Spark](https://docs.flyte.org/en/latest/flytesnacks/examples/k8s_spark_plugin/index.html). +Users will be able to spawn [Dask](https://www.dask.org/) ephemeral clusters as part of their workflows, similar to the support for [Ray](https://docs.flyte.org/en/latest/flytesnacks/examples/ray_plugin/index.html) and [Spark](https://docs.flyte.org/en/latest/flytesnacks/examples/k8s_spark_plugin/index.html). ## Looking Ahead diff --git a/CHANGELOG/CHANGELOG-v1.5.0.md b/CHANGELOG/CHANGELOG-v1.5.0.md index 0c4c7eb4ebb..a711e388351 100644 --- a/CHANGELOG/CHANGELOG-v1.5.0.md +++ b/CHANGELOG/CHANGELOG-v1.5.0.md @@ -11,9 +11,9 @@ Several bug fixes, including: - [Split flyte-binary services into http and grpc in helm charts](https://github.com/flyteorg/flyte/pull/3518) ### Database Migrations -One of the improvements planned requires us to clean up our database migrations. We have done so in this release so you should see a series of new migrations. -These should have zero impact if you are otherwise up-to-date on migrations (which is why they are all labeled `noop`) but please be aware that it will add a minute or so to the -init container/command that runs the migrations in the default Helm charts. Notably, because these should be a no-op, they also do not come with any rollback commands. +One of the improvements planned requires us to clean up our database migrations. We have done so in this release so you should see a series of new migrations. +These should have zero impact if you are otherwise up-to-date on migrations (which is why they are all labeled `noop`) but please be aware that it will add a minute or so to the +init container/command that runs the migrations in the default Helm charts. Notably, because these should be a no-op, they also do not come with any rollback commands. If you experience any issues, please let us know. ## Flytekit @@ -21,7 +21,7 @@ If you experience any issues, please let us know. Python 3.11 is now officially supported. ### Revamped Data subsystem -The data persistence layer was completely revamped. We now rely exclusively on [fsspec](https://filesystem-spec.readthedocs.io/en/latest/) to handle IO. +The data persistence layer was completely revamped. We now rely exclusively on [fsspec](https://filesystem-spec.readthedocs.io/en/latest/) to handle IO. Most users will benefit from a more performant IO subsystem, in other words, no change is needed in user code. @@ -46,14 +46,14 @@ def copy_file(ff: FlyteFile) -> FlyteFile: This feature is marked as experimental. We'd love feedback on the API! ### Limited support for partial tasks -We can use [functools.partial](https://docs.python.org/3/library/functools.html#functools.partial) to "freeze" +We can use [functools.partial](https://docs.python.org/3/library/functools.html#functools.partial) to "freeze" some task arguments. Let's take a look at an example where we partially fix the parameter for a task: ``` @task def t1(a: int, b: str) -> str: return f"{a} -> {b}" - + t1_fixed_b = functools.partial(t1, b="hello") @workflow @@ -63,7 +63,7 @@ def wf(a: int) -> str: Notice how calls to `t1_fixed_b` do not need to specify the `b` parameter. -This also works for [MapTasks](https://docs.flyte.org/en/latest/flytesnacks/auto/core/control_flow/map_task.html#sphx-glr-auto-core-control-flow-map-task-py) in a limited capacity. For example: +This also works for [Map Tasks](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/map_task.html) in a limited capacity. For example: ``` from flytekit import task, workflow, partial, map_task @@ -78,7 +78,7 @@ def wf(y: List[float]): return map_task(partial_t1)(y=y) ``` -We are currently seeking feedback on this feature, and as a result, it is labeled as experimental for now. +We are currently seeking feedback on this feature, and as a result, it is labeled as experimental for now. Also worth mentioning that fixing parameters of type list is not currently supported. For example, if we try to register this workflow: @@ -107,5 +107,5 @@ Map tasks do not support partial tasks with lists as inputs. ## Flyteconsole -Multiple bug fixes around [waiting for external inputs](https://docs.flyte.org/en/latest/flytesnacks/auto/core/control_flow/waiting_for_external_inputs.html#waiting-for-external-inputs). +Multiple bug fixes around [waiting for external inputs](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/waiting_for_external_inputs.html#waiting-for-external-inputs). Better support for dataclasses in the launch form. diff --git a/docs/community/roadmap.rst b/docs/community/roadmap.rst index 6ea83ec5d96..72912ddf37d 100644 --- a/docs/community/roadmap.rst +++ b/docs/community/roadmap.rst @@ -17,7 +17,7 @@ It is extremely important to let the community know about your use cases, so tha Milestones and Release Processes ================================ -Flyte consists of many components and services. Each service is independently iterated and coordinated by maintaining backwards compatible contracts using Protobuf messages defined in `FlyteIDL `__. +Flyte consists of many components and services. Each service is independently iterated and coordinated by maintaining backwards compatible contracts using Protobuf messages defined in `FlyteIDL `__. Release Cadence --------------- diff --git a/rfc/system/1476-task-resources.md b/rfc/system/1476-task-resources.md index 638cfbfbb54..c62a90a8def 100644 --- a/rfc/system/1476-task-resources.md +++ b/rfc/system/1476-task-resources.md @@ -6,7 +6,7 @@ ## 1 Executive Summary -Task resource allocation in Flyte includes the process of setting *CPU, memory, GPU* and *ephemeral storage* requests and limits for containers running Flyte tasks on [kubernetes](https://docs.flyte.org/en/latest/flytesnacks/native_backend_plugins.html#native-backend-plugins). These resource selections affect pod scheduling decisions and as such sensible defaults ought to be applied when a user doesn't specify requests or limits. This fallback behavior currently exists in Flyte but has been configured and modified organically such that the default value assignment has grown convoluted and unfortunately error-prone. +Task resource allocation in Flyte includes the process of setting *CPU, memory, GPU* and *ephemeral storage* requests and limits for containers running Flyte tasks on [kubernetes](https://docs.flyte.org/en/latest/flytesnacks/integrations.html#native-backend-plugins). These resource selections affect pod scheduling decisions and as such sensible defaults ought to be applied when a user doesn't specify requests or limits. This fallback behavior currently exists in Flyte but has been configured and modified organically such that the default value assignment has grown convoluted and unfortunately error-prone. ## 2 Motivation @@ -34,7 +34,7 @@ The `ExecutionConfig` already stores the [admin-resolved values](https://github. When building a task container, the default container task plugin will use user-specified resource values and verify they do not exceed the platform-supplied **max** values. When a request and/or limit for a specific resource (e.g. CPU, memory, etc) is not user-supplied the platform-supplied **default** values will be used. After this resolution is performed, the plugin handler will finally make sure that no resource requests exceed resource limits, leading to an impossible-to-schedule situation. ### K8s Pod Plugin Behavior -This will behave similarly to the default container plugin behavior. Platform-supplied **max** values will be enforced for *all* containers defined in a k8s pod spec for a task. However, platform-supplied **default** values will only be substituted for primary container tasks (see more [here](https://docs.flyte.org/en/latest/flytesnacks/auto/integrations/kubernetes/pod/pod.html#sphx-glr-auto-integrations-kubernetes-pod-pod-py)). +This will behave similarly to the default container plugin behavior. Platform-supplied **max** values will be enforced for *all* containers defined in a k8s pod spec for a task. However, platform-supplied **default** values will only be substituted for primary container tasks (see more [here](https://docs.flyte.org/en/latest/flytesnacks/examples/k8s_pod_plugin/index.html)). @@ -51,7 +51,7 @@ Introducing this change as always, has the potential for leading to bugs and con ## 7 Potential Impact and Dependencies ### Fallback Behavior -Introducing this revamped task resource resolution should not result in existing executions failing! In this case, we must build with backwards compatibility in mind and not depend on the `GetPlatformTaskResourceValues()` method necessarily being populated with values. +Introducing this revamped task resource resolution should not result in existing executions failing! In this case, we must build with backwards compatibility in mind and not depend on the `GetPlatformTaskResourceValues()` method necessarily being populated with values. ## 8 Unresolved questions diff --git a/rfc/system/1893-caching-of-offloaded-objects.md b/rfc/system/1893-caching-of-offloaded-objects.md index c08bf450bae..806b6cfd369 100644 --- a/rfc/system/1893-caching-of-offloaded-objects.md +++ b/rfc/system/1893-caching-of-offloaded-objects.md @@ -6,7 +6,7 @@ ## 1 Executive Summary -We propose a way to override the default behavior of [caching task executions](https://docs.flyte.org/en/latest/flytesnacks/auto/core/flyte_basics/task_cache.html), enabling cache-by-value semantics for certain categories of objects. +We propose a way to override the default behavior of [caching task executions](https://docs.flyte.org/en/latest/flytesnacks/examples/development_lifecycle/task_cache.html), enabling cache-by-value semantics for certain categories of objects. ## 2 Motivation @@ -22,10 +22,10 @@ def foo(a: int, b: str) -> pd.DataFrame: @task(cached=True, version="1.0") def bar(df: pd.Dataframe) -> int: ... - + @workflow def wf(a: int, b: str): - df = foo(a=a, b=b) + df = foo(a=a, b=b) v = bar(df=df) ``` @@ -41,15 +41,15 @@ First we're going to enumerate the problems tackled in this proposal and discuss ### Problem 1: Cache-by-value semantics for non-Flyte objects -For a certain category of objects, for example pandas dataframes, in order to pass data around in a performant way, Flyte writes the actual data to an object in the configured blob store and uses the path to this random object as part of the representation of the object. In other words, from the perspective of the backend, for all intents and purposes we offer cache-by-reference semantics for these objects. +For a certain category of objects, for example pandas dataframes, in order to pass data around in a performant way, Flyte writes the actual data to an object in the configured blob store and uses the path to this random object as part of the representation of the object. In other words, from the perspective of the backend, for all intents and purposes we offer cache-by-reference semantics for these objects. So how to offer a cache-by-value semantics for the case of these offloaded objects? We're going to expose a way for users to override the hash of objects and use that hash as part of the caching computation. #### Exposing a hash in Literals -We will expose a new field in [Literal](https://github.com/flyteorg/flyteidl/blob/master/protos/flyteidl/core/literals.proto#L68-L79) objects called `hash`, which will be used to represent that literal in cache key calculations. +We will expose a new field in [Literal](https://github.com/flyteorg/flyteidl/blob/master/protos/flyteidl/core/literals.proto#L68-L79) objects called `hash`, which will be used to represent that literal in cache key calculations. -Each client will then define the mechanics of setting that field when it's appropriate. Specifically for flytekit, we are going to use the extensions to the typing module proposed in https://www.python.org/dev/peps/pep-0593/, more specifically [`typing.Annotated`](https://docs.python.org/3/library/typing.html#typing.Annotated). +Each client will then define the mechanics of setting that field when it's appropriate. Specifically for flytekit, we are going to use the extensions to the typing module proposed in https://www.python.org/dev/peps/pep-0593/, more specifically [`typing.Annotated`](https://docs.python.org/3/library/typing.html#typing.Annotated). The following example illustrates how these annotated return objects are going to look like: @@ -64,7 +64,7 @@ def foo(a: int, b: str) -> Annotated[pd.DataFrame, HashMethod(hash_pandas_datafr @task(cached=True, version="1.0") def bar(df: pd.Dataframe) -> int: ... - + @workflow def wf(a: int, b: str): df = foo(a=a, b=b) @@ -72,7 +72,7 @@ def wf(a: int, b: str): # 1. the return type of `foo` wraps around a pandas datataframe and adds some metadata to it. # 2. the task `bar` is marked as cached and since the dataframe returned by `foo` overrides its hash # we will check the cache using the dataframe's hash as opposed to the literal representation. - v = bar(df=df) + v = bar(df=df) ``` It's worth noting that this is a strictly opt-in feature, controlled at the level of Type Transformers. In other words, annotating types for which Type Transformers are not marked as opted in will be a no-op. @@ -102,7 +102,7 @@ message Literal { } ``` -#### Flytekit +#### Flytekit The crux of the mechanics in flytekit revolves around how to expose enough flexibility to allow for arbitrary hash functions to be used, while at the same time providing enough information to flytekit. We propose the use of a `HashMethod` metadata object used in annotated return types. The idea being that during the process of converting from a python value to a literal we apply that hash method and set it in the literal. @@ -120,7 +120,7 @@ Although nothing prevents the adoption of this feature in other clients, flyteki ### Problem 2: Bubbling up caching information -A natural question to ask is in what ways we can help users in the process of authoring and visualizing workflows that use these hash-annotated objects? +A natural question to ask is in what ways we can help users in the process of authoring and visualizing workflows that use these hash-annotated objects? First of all, we're going to augment the [`LiteralType` metadata](https://github.com/flyteorg/flyteidl/blob/master/protos/flyteidl/core/types.proto#L91) with a `hashable` field. Setting this field will indicate that for that type we expect the hash to be overridden in case that type is used as an input in a cacheable task. @@ -140,13 +140,13 @@ def foo(a: int, b: str) -> pd.DataFrame: @task(cached=True, version="1.0") def bar(df: pd.Dataframe) -> int: ... - + @workflow def wf(a: int, b: str): df = foo(a=a, b=b) # At registration time we will be able to signal to the user that calls to the task `bar` will never be cached, since that even though the hashable bit is set, # the upstream task is not returning a hash-annotated object. - v = bar(df=df) + v = bar(df=df) ... ``` @@ -163,13 +163,13 @@ N/A? ## 5 Drawbacks -Although this feature does *not* impact the other aspects of how the cache works, for example, changes to the version or the signature of the task invalidate the cache entries, it still might cause confusion since from the perspective of a task execution we will not be able to tell if an object will have its hash overridden. +Although this feature does *not* impact the other aspects of how the cache works, for example, changes to the version or the signature of the task invalidate the cache entries, it still might cause confusion since from the perspective of a task execution we will not be able to tell if an object will have its hash overridden. ## 6 Alternatives A few options were discussed in https://github.com/flyteorg/flyte/issues/1581: -**Expose a `hash` method in Type Transformers and annotate the task in case the type transformer does not contain a hash function:** The major drawbacks of this alternative are two-fold: +**Expose a `hash` method in Type Transformers and annotate the task in case the type transformer does not contain a hash function:** The major drawbacks of this alternative are two-fold: (1) There's no way to opt-out, i.e. all objects produced by that Type Transformer will be cached. (2) The UX is a bit clunky in the case of user-defined hash functions for two reasons: - the return type does not contain any indication that the object is being cached, i.e. we'd have to look in the parameters set in the @task decorator diff --git a/rfc/system/2633-eviction-of-cached-task-outputs.md b/rfc/system/2633-eviction-of-cached-task-outputs.md index 04774d8cbde..45c3cd8d732 100644 --- a/rfc/system/2633-eviction-of-cached-task-outputs.md +++ b/rfc/system/2633-eviction-of-cached-task-outputs.md @@ -29,7 +29,7 @@ Our proposed implementation consists of two parts, which - while related to one ### Cache eviction override for a single execution -Similar to the `interruptible` override flag provided for a single execution of a workflow or task, we propose adding a flag (e.g. `cache_override`) to evict the cached output of an execution and force its calculation to be performed (and cached) again. +Similar to the `interruptible` override flag provided for a single execution of a workflow or task, we propose adding a flag (e.g. `cache_override`) to evict the cached output of an execution and force its calculation to be performed (and cached) again. This cleanup would be performed automatically by Flyte during the execution of a new workflow or task, returning the updated results: ![cache eviction flowchart](https://i.imgur.com/0NeoYGy.png) @@ -47,7 +47,7 @@ The following Flyte components would need to support this change: #### `datacatalog` -`datacatalog` needs to support the eviction of its cache entries, removing them from both its database as well as the underlying blob storage. +`datacatalog` needs to support the eviction of its cache entries, removing them from both its database as well as the underlying blob storage. All major cloud providers currently supported should provide sufficient functionality in their SDK/CLI. Current reservations need to be respected - if the requesting executor is not the current owner, we potentially need to wait until the previous reservation has been released or synchronize access to ensure we're not running into race conditions with simultaneous executions. @@ -132,8 +132,8 @@ As the implementation of this API extension could potentially lead to additional ## 5 Drawbacks -The proposed cache eviction changes introduces a slight overhead in execution preparation in case an eviction has been requested since a reservation must be acquired and the stored data has to be removed from `datacatalog` and its underlying blob storage. -Depending on the size of the cached outputs and the blob storage speed, this might induce increased scheduling times for tasks, although no performance impact should occur if no cache eviction is performed. +The proposed cache eviction changes introduces a slight overhead in execution preparation in case an eviction has been requested since a reservation must be acquired and the stored data has to be removed from `datacatalog` and its underlying blob storage. +Depending on the size of the cached outputs and the blob storage speed, this might induce increased scheduling times for tasks, although no performance impact should occur if no cache eviction is performed. In order to minimize the execution startup delay, cache eviction could be postponed until the task executed successfully, only requiring a quick check beforehand and ensuring the actual computation can start as soon as possible. We do not anticipate any noticeable impact by the API extension for `flyteadmin` during regular executions, however evicting all cached outputs of a large workflow could introduce some strain on `flyteadmin`/`datacatalog` during processing. @@ -158,9 +158,9 @@ The potential for malicious exploitation is deemed non-existent as no access to 3. Which Flyte tools (`flyteconsole`/`flytectl`) should support the proposed `AdminService` API extension for `flyteadmin`, if any? - **RESOLVED**: `flytectl`, `flytekit.remote`, `flyteconsole` 4. Should we support automatic eviction of cached results on workflow archival (opt-out via `flyteconsole`)? -5. Should we evict [Infratask Checkpoints](https://docs.flyte.org/en/latest/flytesnacks/auto/core/control_flow/checkpoint.html) from the cache as well since they might return cached results? If so, should we evict them from the backend side or pass the `cache_override` flag along to `flytekit`/its `Checkpointer` to skip any available entries? - - **RESOLVED**: not for the initial implementation. Infratask checkpoints are only relevant for consecutive retries of a task - their results would not be considered when launching another execution with a `cache_override` flag set. +5. Should we evict [Intratask Checkpoints](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/checkpoint.html#intratask-checkpoints) from the cache as well since they might return cached results? If so, should we evict them from the backend side or pass the `cache_override` flag along to `flytekit`/its `Checkpointer` to skip any available entries? + - **RESOLVED**: not for the initial implementation. Intratask checkpoints are only relevant for consecutive retries of a task - their results would not be considered when launching another execution with a `cache_override` flag set. ## 9 Conclusion -At the time of writing, Flyte does not provide any functionality to clean up its cache, especially in a targeted, selective manner. This proposal introduces a way for users to control caching behaviour and potentially cut down on computational costs of task re-runs. Whilst the backend portion is relatively clear already, some questions still remain open, especially for the frontend components. +At the time of writing, Flyte does not provide any functionality to clean up its cache, especially in a targeted, selective manner. This proposal introduces a way for users to control caching behavior and potentially cut down on computational costs of task re-runs. Whilst the backend portion is relatively clear already, some questions still remain open, especially for the frontend components. From 962d45827646f106265630a0fb1d9ae74968bc32 Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Fri, 16 Feb 2024 14:48:50 -0800 Subject: [PATCH 026/107] make generate (#4911) Signed-off-by: Kevin Su --- flyteidl/clients/go/assets/admin.swagger.json | 4 ++++ flyteidl/gen/pb_rust/flyteidl.core.rs | 4 ++-- flyteidl/gen/pb_rust/flyteidl.event.rs | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 30e653daa3a..73dbd3b8dcf 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -7221,6 +7221,10 @@ "interface": { "$ref": "#/definitions/coreTypedInterface", "title": "The input and output interface for the launch plan" + }, + "fixed_inputs": { + "$ref": "#/definitions/coreLiteralMap", + "title": "A collection of input literals that are fixed for the launch plan" } }, "description": "A structure that uniquely identifies a launch plan in the system." diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index 683581190e6..b2cc8088f54 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -259,9 +259,9 @@ pub struct OutputReference { // @workflow // def wf(): // o = t1() -// t2(o.a\["b"][0\]) +// t2(o.a["b"][0]) // ``` -// the output reference t2 binds to has a list of PromiseAttribute ["a", "b", 0] +// the output reference t2 binds to has a list of PromiseAttribute \["a", "b", 0\] #[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 703e5c9e9c4..a9f4b224ae8 100644 --- a/flyteidl/gen/pb_rust/flyteidl.event.rs +++ b/flyteidl/gen/pb_rust/flyteidl.event.rs @@ -49,7 +49,7 @@ pub struct NodeExecutionEvent { /// by the executor of the node. #[prost(message, optional, tag="4")] pub occurred_at: ::core::option::Option<::prost_types::Timestamp>, - /// [To be deprecated] Specifies which task (if any) launched this node. + /// \[To be deprecated\] Specifies which task (if any) launched this node. #[prost(message, optional, tag="9")] pub parent_task_metadata: ::core::option::Option, /// Specifies the parent node of the current node execution. Node executions at level zero will not have a parent node. From e93a4de1002763992f5a0cb8f8b895585b5360b4 Mon Sep 17 00:00:00 2001 From: peterghaddad <107633597+peterghaddad@users.noreply.github.com> Date: Tue, 20 Feb 2024 12:25:09 -0700 Subject: [PATCH 027/107] Service Account for V1 Ray Jobs (#4920) * Add sa * add test * Add submitterPodTemplate --- flyteplugins/go/tasks/plugins/k8s/ray/config.go | 2 ++ .../go/tasks/plugins/k8s/ray/config_test.go | 10 ++++++++++ flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 16 ++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/config.go b/flyteplugins/go/tasks/plugins/k8s/ray/config.go index e73fc4dc7d2..045f8a09a1b 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/config.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/config.go @@ -23,6 +23,7 @@ var ( DashboardHost: "0.0.0.0", EnableUsageStats: false, KubeRayCrdVersion: "v1alpha1", + ServiceAccount: "default", Defaults: DefaultConfig{ HeadNode: NodeConfig{ StartParameters: map[string]string{ @@ -87,6 +88,7 @@ type Config struct { Defaults DefaultConfig `json:"defaults" pflag:"-,Default configuration for ray jobs"` EnableUsageStats bool `json:"enableUsageStats" pflag:",Enable usage stats for ray jobs. These stats are submitted to usage-stats.ray.io per https://docs.ray.io/en/latest/cluster/usage-stats.html"` KubeRayCrdVersion string `json:"kubeRayCrdVersion" pflag:",Version of the Ray CRD to use when creating RayClusters or RayJobs."` + ServiceAccount string `json:"serviceAccount" pflag:",The k8s service account to run as"` } type DefaultConfig struct { diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/config_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/config_test.go index 08c44ce9e15..d19c047ca61 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/config_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/config_test.go @@ -25,3 +25,13 @@ func TestLoadConfig(t *testing.T) { assert.DeepEqual(t, config.RemoteClusterConfig, remoteConfig) }) } + +func TestLoadDefaultServiceAccountConfig(t *testing.T) { + rayConfig := GetConfig() + assert.Assert(t, rayConfig != nil) + + t.Run("serviceAccount", func(t *testing.T) { + config := GetConfig() + assert.Equal(t, config.ServiceAccount, "default") + }) +} diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index 25291b20663..bc34753425f 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -114,6 +114,8 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC headNodeRayStartParams[DisableUsageStatsStartParameter] = DisableUsageStatsStartParameterVal } + podSpec.ServiceAccountName = cfg.ServiceAccount + headPodSpec := podSpec.DeepCopy() if cfg.KubeRayCrdVersion == "v1" { @@ -300,12 +302,15 @@ func constructV1Job(taskCtx pluginsCore.TaskExecutionContext, rayJob plugins.Ray ttlSecondsAfterFinished = &rayJob.TtlSecondsAfterFinished } + submitterPodTemplate := buildSubmitterPodTemplate(headPodSpec, objectMeta, taskCtx) + jobSpec := rayv1.RayJobSpec{ RayClusterSpec: &rayClusterSpec, Entrypoint: strings.Join(primaryContainer.Args, " "), ShutdownAfterJobFinishes: shutdownAfterJobFinishes, TTLSecondsAfterFinished: ttlSecondsAfterFinished, RuntimeEnv: rayJob.RuntimeEnv, + SubmitterPodTemplate: &submitterPodTemplate, } return &rayv1.RayJob{ @@ -425,6 +430,17 @@ func buildHeadPodTemplate(primaryContainer *v1.Container, podSpec *v1.PodSpec, o return podTemplateSpec } +func buildSubmitterPodTemplate(podSpec *v1.PodSpec, objectMeta *metav1.ObjectMeta, taskCtx pluginsCore.TaskExecutionContext) v1.PodTemplateSpec { + podTemplateSpec := v1.PodTemplateSpec{ + Spec: *podSpec, + ObjectMeta: *objectMeta, + } + cfg := config.GetK8sPluginConfig() + podTemplateSpec.SetLabels(utils.UnionMaps(cfg.DefaultLabels, podTemplateSpec.GetLabels(), utils.CopyMap(taskCtx.TaskExecutionMetadata().GetLabels()))) + podTemplateSpec.SetAnnotations(utils.UnionMaps(cfg.DefaultAnnotations, podTemplateSpec.GetAnnotations(), utils.CopyMap(taskCtx.TaskExecutionMetadata().GetAnnotations()))) + return podTemplateSpec +} + func buildWorkerPodTemplate(primaryContainer *v1.Container, podSpec *v1.PodSpec, objectMetadata *metav1.ObjectMeta, taskCtx pluginsCore.TaskExecutionContext) v1.PodTemplateSpec { // Some configs are copy from https://github.com/ray-project/kuberay/blob/b72e6bdcd9b8c77a9dc6b5da8560910f3a0c3ffd/apiserver/pkg/util/cluster.go#L185 // They should always be the same, so we could hard code here. From 95333b4c433946fd1b8e683a894e3085f6283a48 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Tue, 20 Feb 2024 11:32:15 -0800 Subject: [PATCH 028/107] Cache console assets in single binary (#4919) Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- cmd/single/console_dist.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/single/console_dist.go b/cmd/single/console_dist.go index ce6c32ce0d4..f7ea8b674c3 100644 --- a/cmd/single/console_dist.go +++ b/cmd/single/console_dist.go @@ -20,6 +20,7 @@ var consoleHandlers = map[string]handlerFunc{ consoleHandler.ServeHTTP(writer, request) }, consoleRoot + "/": func(writer http.ResponseWriter, request *http.Request) { + writer.Header().Set("Cache-Control", "max-age=604800") // 7 days consoleHandler.ServeHTTP(writer, request) }, } From 0ec0c25a50124025b240fc2e340ac3666d3497f0 Mon Sep 17 00:00:00 2001 From: WenChih Lo Date: Wed, 21 Feb 2024 04:14:13 +0800 Subject: [PATCH 029/107] fix: mount flyte-secret-auth secret conditionally (#4914) Signed-off-by: Ryan Lo --- .../flyte-core/templates/clusterresourcesync/deployment.yaml | 4 ++++ charts/flyte-core/templates/flytescheduler/deployment.yaml | 4 ++++ charts/flyte-core/templates/propeller/deployment.yaml | 4 ++++ charts/flyte-core/templates/propeller/manager.yaml | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/charts/flyte-core/templates/clusterresourcesync/deployment.yaml b/charts/flyte-core/templates/clusterresourcesync/deployment.yaml index 7fb93c9b92f..19c0b9c48af 100644 --- a/charts/flyte-core/templates/clusterresourcesync/deployment.yaml +++ b/charts/flyte-core/templates/clusterresourcesync/deployment.yaml @@ -38,9 +38,11 @@ spec: {{- if not .Values.cluster_resource_manager.config.cluster_resources.standaloneDeployment }} {{- include "databaseSecret.volumeMount" . | nindent 10 }} {{- else }} + {{- if .Values.secrets.adminOauthClientCredentials.enabled }} - name: auth mountPath: /etc/secrets/ {{- end }} + {{- end }} - mountPath: /etc/flyte/clusterresource/templates name: resource-templates - mountPath: /etc/flyte/config @@ -66,10 +68,12 @@ spec: secretName: cluster-credentials {{- end }} {{- if .Values.cluster_resource_manager.config.cluster_resources.standaloneDeployment }} + {{- if .Values.secrets.adminOauthClientCredentials.enabled }} - name: auth secret: secretName: flyte-secret-auth {{- end }} + {{- end }} {{- with .Values.cluster_resource_manager.nodeSelector }} nodeSelector: {{ tpl (toYaml .) $ | nindent 8 }} {{- end }} diff --git a/charts/flyte-core/templates/flytescheduler/deployment.yaml b/charts/flyte-core/templates/flytescheduler/deployment.yaml index 8e6cd2a4eae..aa22a13e09e 100755 --- a/charts/flyte-core/templates/flytescheduler/deployment.yaml +++ b/charts/flyte-core/templates/flytescheduler/deployment.yaml @@ -76,8 +76,10 @@ spec: volumeMounts: {{- include "databaseSecret.volumeMount" . | nindent 8 }} - mountPath: /etc/flyte/config name: config-volume + {{- if .Values.secrets.adminOauthClientCredentials.enabled }} - name: auth mountPath: /etc/secrets/ + {{- end }} {{- with .Values.flytescheduler.additionalVolumeMounts -}} {{ tpl (toYaml .) $ | nindent 8 }} {{- end }} @@ -91,9 +93,11 @@ spec: - configMap: name: flyte-scheduler-config name: config-volume + {{- if .Values.secrets.adminOauthClientCredentials.enabled }} - name: auth secret: secretName: flyte-secret-auth + {{- end }} {{- with .Values.flytescheduler.additionalVolumes -}} {{ tpl (toYaml .) $ | nindent 6 }} {{- end }} diff --git a/charts/flyte-core/templates/propeller/deployment.yaml b/charts/flyte-core/templates/propeller/deployment.yaml index d24101582b3..5fd09e5d5da 100644 --- a/charts/flyte-core/templates/propeller/deployment.yaml +++ b/charts/flyte-core/templates/propeller/deployment.yaml @@ -82,8 +82,10 @@ spec: volumeMounts: - name: config-volume mountPath: /etc/flyte/config + {{- if .Values.secrets.adminOauthClientCredentials.enabled }} - name: auth mountPath: /etc/secrets/ + {{- end }} {{- with .Values.flytepropeller.additionalVolumeMounts -}} {{ tpl (toYaml .) $ | nindent 8 }} {{- end }} @@ -98,9 +100,11 @@ spec: - configMap: name: flyte-propeller-config name: config-volume + {{- if .Values.secrets.adminOauthClientCredentials.enabled }} - name: auth secret: secretName: flyte-secret-auth + {{- end }} {{- with .Values.flytepropeller.additionalVolumes -}} {{ tpl (toYaml .) $ | nindent 6 }} {{- end }} diff --git a/charts/flyte-core/templates/propeller/manager.yaml b/charts/flyte-core/templates/propeller/manager.yaml index 875d05dab41..21eb894ba84 100644 --- a/charts/flyte-core/templates/propeller/manager.yaml +++ b/charts/flyte-core/templates/propeller/manager.yaml @@ -43,8 +43,10 @@ template: volumeMounts: - name: config-volume mountPath: /etc/flyte/config + {{- if .Values.secrets.adminOauthClientCredentials.enabled }} - name: auth mountPath: /etc/secrets/ + {{- end }} {{- if .Values.flytepropeller.terminationMessagePolicy }} terminationMessagePolicy: "{{ .Values.flytepropeller.terminationMessagePolicy }}" {{- end }} @@ -53,9 +55,11 @@ template: - configMap: name: flyte-propeller-config name: config-volume + {{- if .Values.secrets.adminOauthClientCredentials.enabled }} - name: auth secret: secretName: flyte-secret-auth + {{- end }} {{- with .Values.flytepropeller.nodeSelector }} nodeSelector: {{ tpl (toYaml .) $ | nindent 6 }} {{- end }} From e58e3d3b27152b3514858804743bbfa8fe2bbad4 Mon Sep 17 00:00:00 2001 From: Katrina Rogan Date: Tue, 20 Feb 2024 12:49:26 -0800 Subject: [PATCH 030/107] Refresh matchable resources documentation (#4921) --- docs/concepts/admin.rst | 38 -- .../configuration/customizable_resources.rst | 408 +++++++++++++----- docs/deployment/configuration/general.rst | 321 +------------- docs/deployment/configuration/index.md | 9 +- .../configuration/resource_manager.rst | 109 +++++ docs/deployment/plugins/aws/batch.rst | 2 +- docs/deployment/plugins/k8s/index.rst | 4 +- 7 files changed, 424 insertions(+), 467 deletions(-) create mode 100644 docs/deployment/configuration/resource_manager.rst diff --git a/docs/concepts/admin.rst b/docs/concepts/admin.rst index 4e6ee67a8ec..f33ef513647 100644 --- a/docs/concepts/admin.rst +++ b/docs/concepts/admin.rst @@ -237,44 +237,6 @@ Permitted project operations include: - Register - List -.. _divedeep-admin-matchable-resources: - -Matchable resources -+++++++++++++++++++ - -A thorough background on :ref:`matchable resources ` explains -their purpose and application logic. As a summary, these are used to override system level defaults for Kubernetes cluster -resource management, default execution values, and more across different levels of specificity. - -These entities consist of: - -- ProjectDomainAttributes -- WorkflowAttributes - -``ProjectDomainAttributes`` configure customizable overrides at the project and domain level, and ``WorkflowAttributes`` configure customizable overrides at the project, domain and workflow level. - -Permitted attribute operations include: - -- Update (implicitly creates if there is no existing override) -- Get -- Delete - - -Defaults --------- - -Task resource defaults -++++++++++++++++++++++ - -User-facing documentation on configuring task resource requests and limits can be found in :std:ref:`cookbook:customizing task resources`. - -As a system administrator you may want to define default task resource requests and limits across your Flyte deployment. -This can be done through the flyteadmin config. - -**Default** values get injected as the task requests and limits when a task definition omits a specific resource. -**Limit** values are only used as validation. Neither a task request nor limit can exceed the limit for a resource type. - - Using the Admin Service ----------------------- diff --git a/docs/deployment/configuration/customizable_resources.rst b/docs/deployment/configuration/customizable_resources.rst index 5e41863a7a5..2b785d31f67 100644 --- a/docs/deployment/configuration/customizable_resources.rst +++ b/docs/deployment/configuration/customizable_resources.rst @@ -1,12 +1,292 @@ .. _deployment-configuration-customizable-resources: -################################# -Adding New Customizable Resources -################################# +################################################################# +Customizing project, domain, and workflow resources with flytectl +################################################################# + +For critical projects and workflows, you can use the :ref:`flytectl update ` command to configure +settings for task, cluster, and workflow execution resources, set matching executions to execute on specific clusters, set execution queue attributes, and :ref:`more ` +that differ from the default values set for your global Flyte installation. These customizable settings are created, updated, and deleted via the API and stored in the FlyteAdmin database. + +In code, these settings are sometimes called `matchable attributes` or `matchable resources`, because we use a hierarchy for matching the customizations to applicable Flyte inventory and executions. + +******************************* +Configuring existing resources +******************************* + + +About the resource hierarchy +============================ + +Many platform specifications set in the FlyteAdmin config are applied to every project and domain. Although these values are customizable as part of your helm installation, they are still applied to every user project and domain combination. + +You can choose to customize these settings along increasing levels of specificity with Flyte: + +- Domain +- Project and Domain +- Project, Domain, and Workflow name +- Project, Domain, Workflow name and LaunchPlan name + +See :ref:`control-plane` to understand projects and domains. +The following section will show you how to configure the settings along +these dimensions. + +Task resources +============== + +As a system administrator you may want to define default task resource requests and limits across your Flyte deployment. This can be set globally in the FlyteAdmin `config `__ +in `task_resource_defaults`. + +**Default** values get injected as the task requests and limits when a task definition omits a specific :py:class:`resource `. + +**Limit** values are only used as validation. Neither a task request nor limit can exceed the limit for a resource type. + +Configuring task resources +-------------------------- +Available resources for configuration include: + +- CPU +- GPU +- Memory +- `Ephemeral Storage `__ + +In the absence of a customization, the global +`default values `__ +in `task_resource_defaults` are used. + +The customized values from the database are assigned at execution, rather than registration time. + +Customizing task resource configuration +--------------------------------------- + +To customize resources for project-domain attributes using `flytectl`, define a ``tra.yaml`` file with your customizations: + +.. code-block:: yaml + + project: flyteexamples + domain: development + defaults: + cpu: "1" + memory: 150Mi + limits: + cpu: "2" + memory: 450Mi + +Update the task resource attributes for a project-domain combination: + +.. prompt:: bash $ + + flytectl update task-resource-attribute --attrFile tra.yaml + +.. note:: + + Refer to the :ref:`docs ` to + learn more about the command and its supported flag(s). + +To fetch and verify the individual project-domain attributes: + +.. prompt:: bash $ + + flytectl get task-resource-attribute -p flyteexamples -d development + +.. note:: + + Refer to the :ref:`docs ` to learn + more about the command and its supported flag(s). + +You can view all custom task-resource-attributes by visiting +``protocol://`` and substitute +the protocol and host appropriately. + +Cluster resources +================= + +Cluster resources are how you configure Kubernetes namespace attributes that are applied at execution time. This includes per-namespace resource quota, patching the default service account with a bounded IAM role, or attaching `imagePullSecrets` to the default service account for accessing a private container registry + + +Configuring cluster resources +----------------------------- +The format of all these parameters are free-form key-value pairs used for populating the Kubernetes object templates consumed by the cluster resource controller. The cluster resource controller ensures these fully rendered object templates are applied as Kubernetes resources for each execution namespace. + +The keys represent templatized variables in the +`cluster resource template `__ +and the values are what you want to see filled in. + +In the absence of custom customized values, your Flyte installation will use ``templateData`` from the +`FlyteAdmin config `__ +as the per-domain defaults. Flyte specifies these defaults by domain and applies them to every +project-domain namespace combination. + + +Customizing cluster resource configuration +------------------------------------------ +.. note:: + The cluster resource template values can be specified on domain, and project-and-domain. + Since Flyte execution namespaces are never on a per-workflow or a launch plan basis, specifying a workflow or launch plan level customization is non-actionable. + This is a departure from the usual hierarchy for customizable resources. + + +Define an attributes file, ``cra.yaml``: + +.. code-block:: yaml + + domain: development + project: flyteexamples + attributes: + projectQuotaCpu: "1000" + projectQuotaMemory: 5Ti + +To ensure that the customizations reflect in the Kubernetes namespace +``flyteexamples-development`` (that is, the namespace has a resource quota of +1000 CPU cores and 5TB of memory) when the admin fills in cluster resource +templates: + +.. prompt:: bash $ + + flytectl update cluster-resource-attribute --attrFile cra.yaml + +.. note:: + + Refer to the :ref:`docs ` + to learn more about the command and its supported flag(s). + +To fetch and verify the individual project-domain attributes: + +.. prompt:: bash $ + + flytectl get cluster-resource-attribute -p flyteexamples -d development + +.. note:: + + Refer to the :ref:`docs ` to + learn more about the command and its supported flag(s). + +Flyte uses these updated values to fill the template fields for the +``flyteexamples-development`` namespace. + +For other namespaces, the +`platform defaults `__ +apply. + +.. note:: + The template values, for example, ``projectQuotaCpu`` or ``projectQuotaMemory`` are free-form strings. + Ensure that they match the template placeholders in your `template file `__ + for your changes to take effect and custom values to be substituted. + +You can view all custom cluster-resource-attributes by visiting ``protocol://`` +and substitute the protocol and host appropriately. + + +Workflow execution configuration +================================ + + +Although many execution-time parameters can be overridden at execution time itself, it is helpful to set defaults on a per-project or per-workflow basis. This config includes +- `annotations and labels `__ +etc. in the `Workflow execution config `__. +- `max_parallelism`: Limits maximum number of nodes that can be evaluated for an individual workflow in parallel +- `security context `__: configures the pod identity and auth credentials for task pods at execution time +- `raw_output_data_config`: where offloaded user data is stored +- `interruptible`: whether to use [spot instances](https://docs.flyte.org/en/latest/flytesnacks/examples/productionizing/spot_instances.html#using-spot-preemptible-instances) +- `overwrite_cache`: Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. +- `envs`: Custom environment variables to apply for task pods brought up during execution + +Customizing workflow execution configuration +-------------------------------------------- + +These can be defined at two levels of project-domain or project-domain-workflow: + +.. prompt:: bash $ + + flytectl update workflow-execution-config + +.. note:: + + Refer to the :ref:`docs ` + to learn more about the command and its supported flag(s). + +Execution cluster label +======================= + +This matchable attributes allows forcing a matching execution to consistently execute on a specific Kubernetes cluster for multi-cluster Flyte deployment set-up. In lieu of an explicit customization, cluster assignment is random. + +For setting up a multi-cluster environment, follow :ref:`the guide ` + + +Customizing execution cluster label configuration +------------------------------------------------- + +Define an attributes file in `ec.yaml`: + +.. code-block:: yaml + + value: mycluster + domain: development + project: flyteexamples + +Ensure that admin places executions in the flyteexamples project and development domain onto ``mycluster``: + +.. prompt:: bash $ + + flytectl update execution-cluster-label --attrFile ec.yaml + +.. note:: + + Refer to the :ref:`docs ` + to learn more about the command and its supported flag(s). + +To fetch and verify the individual project-domain attributes: + +.. prompt:: bash $ + + flytectl get execution-cluster-label -p flyteexamples -d development + +.. note:: + + Refer to the :ref:`docs ` to + learn more about the command and its supported flag(s). + +You can view all custom execution cluster attributes by visiting +``protocol://`` and substitute +the protocol and host appropriately. + +.. _deployment-customizable-resources-execution-queues: + +Execution queues +================ + +Execution queues are defined in +`FlyteAdmin config `__. +These are used for execution placement for constructs like AWS Batch. + +The **attributes** associated with an execution queue must match the **tags** +for workflow executions. The tags associated with configurable resources are +stored in the admin database. + +Customizing execution queue configuration +----------------------------------------- + +.. prompt:: bash $ + + flytectl update execution-queue-attribute + +.. note:: + + Refer to the :ref:`docs ` + to learn more about the command and its supported flag(s). + +You can view existing attributes for which tags can be assigned by visiting +``protocol:///api/v1/matchable_attributes?resource_type=2`` and substitute +the protocol and host appropriately. + + +********************************* +Adding new customizable resources +********************************* .. tags:: Infrastructure, Advanced -As a quick refresher, custom resources allow you to manage configurations for specific combinations of user projects, domains and workflows that override default values. +As a quick refresher, custom resources allow you to manage configurations for specific combinations of user projects, domains and workflows that customize default values. Examples of such resources include execution clusters, task resource defaults, and :std:ref:`more `. .. note:: @@ -16,8 +296,9 @@ In a :ref:`multi-cluster setup `, an example Here's how you could go about building a customizable priority designation. + Example -------- +======= Let's say you want to inject a default priority annotation for your workflows. Perhaps you start off with a model where everything has a default priority but soon you realize it makes sense that workflows in your production domain should take higher priority than those in your development domain. @@ -27,7 +308,7 @@ Now, one of your user teams requires critical workflows to have a higher priorit Here's how you could do that. Flyte IDL -^^^^^^^^^ +--------- Introduce a new :std:ref:`matchable resource ` that includes a unique enum value and proto message definition. @@ -56,7 +337,7 @@ See the changes in this `file `__ your new matchable priority resource and use it while creating executions or in relevant use cases. @@ -84,119 +365,8 @@ For example: Flytekit -^^^^^^^^ +-------- For convenience, add a FlyteCTL wrapper to update the new attributes. Refer to `this PR `__ for the entire set of changes required. That's it! You now have a new matchable attribute to configure as the needs of your users evolve. - -Flyte ResourceManager ---------------------- - -**Flyte ResourceManager** is a configurable component that allows plugins to manage resource allocations independently. It helps track resource utilization of tasks that run on Flyte. The default deployments are configured as ``noop``, which indicates that the ResourceManager provided by Flyte is disabled and plugins rely on each independent platform to manage resource utilization. In situations like the K8s plugin, where the platform has a robust mechanism to manage resource scheduling, this may work well. However, in a scenario like a simple web API plugin, the rate at which Flyte sends requests may overwhelm a service and benefit from additional resource management. - -The below attribute is configurable within FlytePropeller, which can be disabled with: - -.. code-block:: yaml - - resourcemanager: - type: noop - -The ResourceManager provides a task-type-specific pooling system for Flyte tasks. Optionally, plugin writers can request resource allocation in their tasks. - -A plugin defines a collection of resource pools using its configuration. Flyte uses tokens as a placeholder to represent a unit of resource. - -How does a Flyte plugin request for resources? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -The Flyte plugin registers the resource and the desired quota of every resource with the **ResourceRegistrar** when setting up FlytePropeller. When a plugin is invoked, FlytePropeller provides a proxy for the plugin. This proxy facilitates the plugin's view of the resource pool by controlling operations to allocate and deallocate resources. - -.. dropdown:: :fa:`info-circle` Enabling Redis instance - :title: text-muted - :animate: fade-in-slide-down - - The ResourceManager can use a Redis instance as an external store to track and manage resource pool allocation. By default, it is disabled, and can be enabled with: - - .. code-block:: yaml - - resourcemanager: - type: redis - resourceMaxQuota: 100 - redis: - hostPaths: - - foo - hostKey: bar - maxRetries: 0 - -Once the setup is complete, FlytePropeller builds a ResourceManager based on the previously requested resource registration. Based on the plugin implementation's logic, resources are allocated and deallocated. - -During runtime, the ResourceManager: - -#. Allocates tokens to the plugin. -#. Releases tokens once the task is completed. - -How are resources allocated? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -When a Flyte task execution needs to send a request to an external service, the plugin claims a unit of the corresponding resource. This is done using a **ResourceName**, which is a unique token and a fully qualified resource request (which is typically an integer). The execution generates this unique token and registers this token with the ResourceManager by calling the ResourceManager’s **"AllocateResource function"**. If the resource pool has sufficient capacity to fulfil your request, then the resources requested are allocated, and the plugin proceeds further. - -When the status is **"AllocationGranted"**, the execution moves forward and sends out the request for those resources. - -The granted token is recorded in a token pool which corresponds to the resource that is managed by the ResourceManager. - -How are resources deallocated? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -When the request is completed, the plugin asks the ResourceManager to release the token by calling the ReleaseResource() function present in the ResourceManager. Upon calling the function, the token is eliminated from the token pool. -In this manner, Flyte plugins intelligently throttle resource usage during parallel execution of nodes. - -Example -^^^^^^^^ -Let's take an example to understand resource allocation and deallocation when a plugin requests resources. - -Flyte has a built-in `Qubole `__ plugin. This plugin allows Flyte tasks to send Hive commands to Qubole. In the plugin, a single Qubole cluster is considered a resource, and sending a single Hive command to a Qubole cluster consumes a token of the corresponding resource. -The resource is allocated when the status is **“AllocationGranted”**. Qubole plugin calls: - -.. code-block:: go - - status, err := AllocateResource(ctx, , , ) - -Wherein the placeholders are occupied by: - -.. code-block:: go - - status, err := AllocateResource(ctx, "default_cluster", "flkgiwd13-akjdoe-0", ResourceConstraintsSpec{}) - -The resource is deallocated when the Hive command completes its execution and the corresponding token is released. The plugin calls: - -.. code-block:: go - - status, err := AllocateResource(ctx, , , ) - -Wherein the placeholders are occupied by: - -.. code-block:: go - - err := ReleaseResource(ctx, "default_cluster", "flkgiwd13-akjdoe-0") - -Below is an example interface that shows allocation and deallocation of resources. - -.. code-block:: go - - type ResourceManager interface { - GetID() string - // During execution, the plugin calls AllocateResource() to register a token in the token pool associated with a resource - // If it is granted an allocation, the token is recorded in the token pool until the same plugin releases it. - // When calling AllocateResource, the plugin has to specify a ResourceConstraintsSpec that contains resource capping constraints at different project and namespace levels. - // The ResourceConstraint pointers in ResourceConstraintsSpec can be set to nil to not have a constraint at that level - AllocateResource(ctx context.Context, namespace ResourceNamespace, allocationToken string, constraintsSpec ResourceConstraintsSpec) (AllocationStatus, error) - // During execution, after an outstanding request is completed, the plugin uses ReleaseResource() to release the allocation of the token from the token pool. This way, it redeems the quota taken by the token - ReleaseResource(ctx context.Context, namespace ResourceNamespace, allocationToken string) error - } - -How can you force ResourceManager to force runtime quota allocation constraints? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Runtime quota allocation constraints can be achieved using ResourceConstraintsSpec. It is a contact that a plugin can specify at different project and namespace levels. - -Let's take an example to understand it. - -You can set ResourceConstraintsSpec to ``nil`` objects, which means there would be no allocation constraints at the respective project and namespace level. When ResourceConstraintsSpec specifies ``nil`` ProjectScopeResourceConstraint, and a non-nil NamespaceScopeResourceConstraint, it suggests no constraints specified at any project or namespace level. diff --git a/docs/deployment/configuration/general.rst b/docs/deployment/configuration/general.rst index 828ff3871b6..b5278365d22 100644 --- a/docs/deployment/configuration/general.rst +++ b/docs/deployment/configuration/general.rst @@ -1,319 +1,31 @@ .. _deployment-configuration-general: -################################# -Configuring Custom K8s Resources -################################# - -*************************** -Configurable Resource Types -*************************** - -Many platform specifications such as task resource defaults, project namespace Kubernetes quota, and more can be -assigned using default values or custom overrides. Defaults are specified in the FlyteAdmin config and -overrides for specific projects are registered with the FlyteAdmin service. - -You can customize these settings along increasing levels of specificity with Flyte: - -- Domain -- Project and Domain -- Project, Domain, and Workflow name -- Project, Domain, Workflow name and LaunchPlan name - -See :ref:`control-plane` to understand projects and domains. -The following section will show you how to configure the settings along -these dimensions. - -Task Resources -============== - -Configuring task :py:class:`resources ` includes -setting default values for unspecified task requests and limits. Task resources -also include limits which specify the maximum value that a task request or a limit can have. - -- CPU -- GPU -- Memory -- Storage -- `Ephemeral Storage `__ - -In the absence of an override, the global -`default values `__ -in `task_resource_defaults` are used. - -The override values from the database are assigned at execution, rather than registration time. - -To customize resources for project-domain attributes, define a ``tra.yaml`` file with your overrides: - -.. code-block:: yaml - - project: flyteexamples - domain: development - defaults: - cpu: "1" - memory: 150Mi - limits: - cpu: "2" - memory: 450Mi - -Update the task resource attributes for a project-domain combination: - -.. prompt:: bash $ - - flytectl update task-resource-attribute --attrFile tra.yaml - -.. note:: - - Refer to the :ref:`docs ` to - learn more about the command and its supported flag(s). - -To fetch and verify the individual project-domain attributes: - -.. prompt:: bash $ - - flytectl get task-resource-attribute -p flyteexamples -d development - -.. note:: - - Refer to the :ref:`docs ` to learn - more about the command and its supported flag(s). - -You can view all custom task-resource-attributes by visiting -``protocol://`` and substitute -the protocol and host appropriately. - -Cluster Resources -================= -These are free-form key-value pairs used when filling the templates that the -admin feeds into the cluster manager, which is the process that syncs Kubernetes -resources. - -The keys represent templatized variables in the -`cluster resource template `__ -and the values are what you want to see filled in. - -In the absence of custom override values, you can use ``templateData`` from the -`FlyteAdmin config `__ -as a default. Flyte specifies these defaults by domain and applies them to every -project-domain namespace combination. - -.. note:: - The settings above can be specified on domain, and project-and-domain. - Since Flyte hasn't tied the notion of a workflow or a launch plan to any Kubernetes construct, specifying a workflow or launch plan name doesn't make sense. - This is a departure from the usual hierarchy for customizable resources. - -Define an attributes file, ``cra.yaml``: - -.. code-block:: yaml - - domain: development - project: flyteexamples - attributes: - projectQuotaCpu: "1000" - projectQuotaMemory: 5Ti - -To ensure that the overrides reflect in the Kubernetes namespace -``flyteexamples-development`` (that is, the namespace has a resource quota of -1000 CPU cores and 5TB of memory) when the admin fills in cluster resource -templates: - -.. prompt:: bash $ - - flytectl update cluster-resource-attribute --attrFile cra.yaml - -.. note:: - - Refer to the :ref:`docs ` - to learn more about the command and its supported flag(s). - -To fetch and verify the individual project-domain attributes: - -.. prompt:: bash $ - - flytectl get cluster-resource-attribute -p flyteexamples -d development - -.. note:: - - Refer to the :ref:`docs ` to - learn more about the command and its supported flag(s). - -Flyte uses these updated values to fill the template fields for the -``flyteexamples-development`` namespace. - -For other namespaces, the -`platform defaults `__ -apply. - -.. note:: - The template values, for example, ``projectQuotaCpu`` or ``projectQuotaMemory`` are free-form strings. - Ensure that they match the template placeholders in your `template file `__ - for your changes to take effect and custom values to be substituted. - -You can view all custom cluster-resource-attributes by visiting ``protocol://`` -and substitute the protocol and host appropriately. - -Execution Cluster Label -======================= -This allows forcing a matching execution to consistently execute on a specific -Kubernetes cluster for multi-cluster Flyte deployment set-up. - -Define an attributes file in `ec.yaml`: - -.. code-block:: yaml - - value: mycluster - domain: development - project: flyteexamples - -Ensure that admin places executions in the flyteexamples project and development domain onto ``mycluster``: - -.. prompt:: bash $ - - flytectl update execution-cluster-label --attrFile ec.yaml - -.. note:: - - Refer to the :ref:`docs ` - to learn more about the command and its supported flag(s). - -To fetch and verify the individual project-domain attributes: - -.. prompt:: bash $ - - flytectl get execution-cluster-label -p flyteexamples -d development - -.. note:: - - Refer to the :ref:`docs ` to - learn more about the command and its supported flag(s). - -You can view all custom execution cluster attributes by visiting -``protocol://`` and substitute -the protocol and host appropriately. - -Execution Queues -================ -Execution queues are defined in -`flyteadmin config `__. -These are used for execution placement for constructs like AWS Batch. - -The **attributes** associated with an execution queue must match the **tags** -for workflow executions. The tags associated with configurable resources are -stored in the admin database. - -.. prompt:: bash $ - - flytectl update execution-queue-attribute - -.. note:: - - Refer to the :ref:`docs ` - to learn more about the command and its supported flag(s). - -You can view existing attributes for which tags can be assigned by visiting -``protocol:///api/v1/matchable_attributes?resource_type=2`` and substitute -the protocol and host appropriately. - -Workflow Execution Config -========================= - -This helps with overriding the config used for workflows execution which includes -`security context `__, `annotations or labels `__ -etc. in the `Workflow execution config `__. -These can be defined at two levels of project-domain or project-domain-workflow: - -.. prompt:: bash $ - - flytectl update workflow-execution-config - -.. note:: - - Refer to the :ref:`docs ` - to learn more about the command and its supported flag(s). - -Configuring Service Roles -========================= -You can configure service roles along 3 levels: - -#. Project + domain defaults (every execution launched in this project/domain uses this service account) - -#. Launch plan default (every invocation of this launch plan uses this service account) - -#. Execution time override (overrides at invocation for a specific execution only) - -********* -Hierarchy -********* - -Increasing specificity defines how matchable resource attributes get applied. -The available configurations, in order of decreasing specificity are: - -#. Domain, Project, Workflow name, and LaunchPlan - -#. Domain, Project, and Workflow name - -#. Domain and Project - -#. Domain - -Default values for all and per-domain attributes may be specified in the -FlyteAdmin config as documented in the :std:ref:`deployment-configuration-customizable-resources`. - -Example -======= -If the database includes the following: - -+------------+--------------+----------+-------------+-----------+ -| Domain | Project | Workflow | Launch Plan | Tags | -+============+==============+==========+=============+===========+ -| production | widgetmodels | | | critical | -+------------+--------------+----------+-------------+-----------+ -| production | widgetmodels | Demand | | supply | -+------------+--------------+----------+-------------+-----------+ - -- Any inbound ``CreateExecution`` requests with **[Domain: Production, Project: widgetmodels, Workflow: Demand]** for any launch plan will have a tag value of "supply". -- Any inbound ``CreateExecution`` requests with **[Domain: Production, Project: widgetmodels]** for any workflow other than ``Demand`` and any launch plan will have a tag value "critical". -- All other inbound CreateExecution requests will use the default values specified in the FlyteAdmin config (if any). - - -Configuring K8s Pod -=================== - -There are two approaches to applying the K8s Pod configuration. The **recommended** -method is to use Flyte's Compile-time and Runtime PodTemplate schemes. You can do this by creating -K8s PodTemplate resource/s that serves as the base configuration for all the -task Pods that Flyte initializes. This solution ensures completeness regarding -support configuration options and maintainability as new features are added to K8s. - -The legacy technique is to set configuration options in Flyte's K8s plugin configuration. - -.. note :: - - These two approaches can be used simultaneously, where the K8s plugin configuration will override the default PodTemplate values. - -.. _using-k8s-podtemplates: - -******************************* -Using K8s PodTemplates -******************************* +########################################### +Configuring task pods with K8s PodTemplates +########################################### `PodTemplate `__ is a K8s native resource used to define a K8s Pod. It contains all the fields in the PodSpec, in addition to ObjectMeta to control resource-specific metadata -such as Labels or Annotations. They are commonly applied in Deployments, +such as Labels or Annotations. PodTemplates are commonly applied in Deployments, ReplicaSets, etc to define the managed Pod configuration of the resources. -Within Flyte, you can leverage this resource to configure Pods created as part -of Flyte's task execution. It ensures complete control over Pod configuration, +Within Flyte, you can use PodTemplates to configure Pods created as part +of Flyte's task execution. This ensures complete control over Pod configuration, supporting all options available through the resource and ensuring maintainability in future versions. -Starting with the Flyte 1.4 release, we now have 2 ways of defining `PodTemplate `__: +Starting with the Flyte 1.4 release, there are two ways of defining `PodTemplate `__: 1. Compile-time PodTemplate defined at the task level 2. Runtime PodTemplates +.. note :: + + The legacy technique is to set configuration options in Flyte's K8s plugin configuration. These two approaches can be used simultaneously, where the K8s plugin configuration will override the default PodTemplate values. +************************* Compile-time PodTemplates -========================= +************************* We can define a compile-time pod template, as part of the definition of a `Task `__, for example: @@ -356,8 +68,9 @@ the name of the primary container, labels, and annotations. The term compile-time here refers to the fact that the pod template definition is part of the `TaskSpec `__. +******************** Runtime PodTemplates -==================== +******************** Runtime PodTemplates, as the name suggests, are applied during runtime, as part of building the resultant Pod. In terms of how they are applied, you have two choices: (1) you either elect one specific PodTemplate to be considered as default, or (2) you @@ -367,7 +80,7 @@ PodTemplate name will be used. Set the ``default-pod-template-name`` in FlytePropeller --------------------------------------------------------- +======================================================= This `option `__ initializes a K8s informer internally to track system PodTemplate updates @@ -390,7 +103,7 @@ An example configuration is: default-pod-template-name: Create a PodTemplate resource ------------------------------- +============================= Flyte recognizes PodTemplate definitions with the ``default-pod-template-name`` at two granularities. @@ -425,7 +138,7 @@ set to anything. However, we recommend using a real image, for example ``docker.io/rwgrim/docker-noop``. Using ``pod_template_name`` in a Task --------------------------------------- +===================================== It's also possible to use PodTemplate in tasks by specifying ``pod_template_name`` in the task definition. For example: diff --git a/docs/deployment/configuration/index.md b/docs/deployment/configuration/index.md index 9eec8385962..b5758679d7a 100644 --- a/docs/deployment/configuration/index.md +++ b/docs/deployment/configuration/index.md @@ -33,10 +33,10 @@ you'll need to add the configuration settings under the `inline` section in the - Migration guide to move to Admin's own authorization server. * - {ref}`Understanding Authentication ` - Migration guide to move to Admin's own authorization server. -* - {ref}`Configuring Custom K8s Resources ` +* - {ref}`Configuring task pods with K8s PodTemplates ` - Use Flyte's cluster-resource-controller to control specific Kubernetes resources and administer project/domain-specific CPU/GPU/memory resource quotas. -* - {ref}`Adding New Customizable Resources ` - - Create new default configurations or overriding certain values for specific combinations of user projects, domains and workflows through Flyte APIs. +* - {ref}`Customizing project, domain, and workflow resources with flytectl ` + - Use the Flyte APIs to create new default configurations to override certain values for specific combinations of user projects, domains and workflows. * - {ref}`Notifications ` - Guide to setting up and configuring notifications. * - {ref}`External Events ` @@ -47,6 +47,8 @@ you'll need to add the configuration settings under the `inline` section in the - Improve the performance of the core Flyte engine. * - {ref}`Platform Events ` - Configure Flyte to to send events to external pub/sub systems. +* - {ref}`Resource Manager ` + - Manage external resource pooling ``` ```{toctree} @@ -63,4 +65,5 @@ monitoring notifications performance cloud_event +resource_manager ``` diff --git a/docs/deployment/configuration/resource_manager.rst b/docs/deployment/configuration/resource_manager.rst new file mode 100644 index 00000000000..3bb3d079d4b --- /dev/null +++ b/docs/deployment/configuration/resource_manager.rst @@ -0,0 +1,109 @@ +.. _deployment-configuration-resource-manager: + +##################### +Flyte ResourceManager +##################### + +**Flyte ResourceManager** is a configurable component that helps track resource utilization of tasks that run on Flyte and allows plugins to manage resource allocations independently. Default deployments are configured with the ResourceManager disabled, which means plugins rely on each independent platform to manage resource utilization. See below for the default ResourceManager configuration: + +.. code-block:: yaml + + resourcemanager: + type: noop + +When using a plugin that connects to a platform with a robust resource scheduling mechanism, like the K8s plugin, we recommend leaving the default ``flyteresourcemanager`` configuration in place. However, with web API plugins (for example), the rate at which Flyte sends requests may overwhelm a service, and we recommend changing the ``resourcemanager`` configuration. + +The ResourceManager provides a task-type-specific pooling system for Flyte tasks. Optionally, plugin writers can request resource allocation in their tasks. + +A plugin defines a collection of resource pools using its configuration. Flyte uses tokens as a placeholder to represent a unit of resource. + +How Flyte plugins request resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Flyte plugins register the desired resource and resource quota with the **ResourceRegistrar** when setting up FlytePropeller. When a plugin is invoked, FlytePropeller provides a proxy for the plugin. This proxy facilitates the plugin's view of the resource pool by controlling operations to allocate and deallocate resources. + +Once the setup is complete, FlytePropeller builds a ResourceManager based on the previously requested resource registration. Based on the plugin implementation's logic, resources are allocated and deallocated. + +During runtime, the ResourceManager: + +#. Allocates tokens to the plugin. +#. Releases tokens once the task is completed. + +In this manner, Flyte plugins intelligently throttle resource usage during parallel execution of nodes. + +.. note :: + + The ResourceManager can use a Redis instance as an external store to track and manage resource pool allocation. By default, it is disabled, and can be enabled with: + + .. code-block:: yaml + + resourcemanager: + type: redis + resourceMaxQuota: 100 + redis: + hostPaths: + - foo + hostKey: bar + maxRetries: 0 + +Plugin resource allocation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When a Flyte task execution needs to send a request to an external service, the plugin claims a unit of the corresponding resource using a **ResourceName**, which is a unique token and a fully qualified resource request (typically an integer). The task execution generates this unique token and registers the token with the ResourceManager by calling the ResourceManager’s ``AllocateResource`` function. If the resource pool has sufficient capacity to fulfill the request, then the requested resources are allocated, and the plugin proceeds further. + +When the status changes to **"AllocationGranted"**, the execution sends out the request for those resources. + +The granted token is recorded in a token pool which corresponds to the resource that is managed by the ResourceManager. + +Plugin resource deallocation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When the request is completed, the plugin asks the ResourceManager to release the token by calling the ResourceManager's ``ReleaseResource()`` function, which eliminates the token from the token pool. + +Example +^^^^^^^^ + +Flyte has a built-in `Qubole `__ plugin which allows Flyte tasks to send Hive commands to Qubole. In the plugin, a single Qubole cluster is considered a resource, and sending a single Hive command to a Qubole cluster consumes a token of the corresponding resource. +The resource is allocated when the status is **“AllocationGranted”**. The Qubole plugin calls: + +.. code-block:: go + + status, err := AllocateResource(ctx, , , ) + +In our example scenario, the placeholder values are replaced with the following: + +.. code-block:: go + + status, err := AllocateResource(ctx, "default_cluster", "flkgiwd13-akjdoe-0", ResourceConstraintsSpec{}) + +The resource is deallocated when the Hive command completes its execution and the corresponding token is released. The plugin calls: + +.. code-block:: go + + status, err := AllocateResource(ctx, , , ) + +In our example scenario, the placeholder values are replaced with the following: + +.. code-block:: go + + err := ReleaseResource(ctx, "default_cluster", "flkgiwd13-akjdoe-0") + +See below for an example interface that shows allocation and deallocation of resources: + +.. code-block:: go + + type ResourceManager interface { + GetID() string + // During execution, the plugin calls AllocateResource() to register a token in the token pool associated with a resource + // If it is granted an allocation, the token is recorded in the token pool until the same plugin releases it. + // When calling AllocateResource, the plugin has to specify a ResourceConstraintsSpec that contains resource capping constraints at different project and namespace levels. + // The ResourceConstraint pointers in ResourceConstraintsSpec can be set to nil to not have a constraint at that level + AllocateResource(ctx context.Context, namespace ResourceNamespace, allocationToken string, constraintsSpec ResourceConstraintsSpec) (AllocationStatus, error) + // During execution, after an outstanding request is completed, the plugin uses ReleaseResource() to release the allocation of the token from the token pool. This way, it redeems the quota taken by the token + ReleaseResource(ctx context.Context, namespace ResourceNamespace, allocationToken string) error + } + +Configuring ResourceManager to force runtime quota allocation constraints +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Runtime quota allocation constraints can be achieved using ResourceConstraintsSpec. It is a contact that a plugin can specify at different project and namespace levels. + +For example, you can set ResourceConstraintsSpec to ``nil`` objects, which means there would be no allocation constraints at the respective project and namespace level. When ResourceConstraintsSpec specifies ``nil`` ProjectScopeResourceConstraint, and a non-nil NamespaceScopeResourceConstraint, it suggests no constraints specified at any project or namespace level. diff --git a/docs/deployment/plugins/aws/batch.rst b/docs/deployment/plugins/aws/batch.rst index 15bfe5939da..f640b7907ab 100644 --- a/docs/deployment/plugins/aws/batch.rst +++ b/docs/deployment/plugins/aws/batch.rst @@ -113,7 +113,7 @@ with distinct attributes and matching logic based on project/domain/workflowName - default These settings can also be dynamically altered through ``flytectl`` (or FlyteAdmin API). -Learn about the :ref:`core concept here `. +Learn about the :ref:`core concept here `. For guidance on how to dynamically update these configurations, refer to the :ref:`Flytectl docs `. Update FlytePropeller's configuration diff --git a/docs/deployment/plugins/k8s/index.rst b/docs/deployment/plugins/k8s/index.rst index 2199f099e89..7e1c103eece 100644 --- a/docs/deployment/plugins/k8s/index.rst +++ b/docs/deployment/plugins/k8s/index.rst @@ -440,14 +440,14 @@ Install the Kubernetes operator 3. Use a Flyte pod template with ``template.spec.schedulerName: scheduler-plugins-scheduler`` to use the new gang scheduler for your tasks. - See the :ref:`using-k8s-podtemplates` section for more information on pod templates in Flyte. + See :ref:`deployment-configuration-general` for more information on pod templates in Flyte. You can set the scheduler name in the pod template passed to the ``@task`` decorator. However, to prevent the two different schedulers from competing for resources, it is recommended to set the scheduler name in the pod template in the ``flyte`` namespace which is applied to all tasks. Non distributed training tasks can be scheduled by the gang scheduler as well. - For more information on pod templates in Flyte, refer to the :ref:`using-k8s-podtemplates` section. + For more information on pod templates in Flyte, see :ref:`deployment-configuration-general`. You can set the scheduler name in the pod template passed to the ``@task`` decorator. However, to avoid resource competition between the two different schedulers, it is recommended to set the scheduler name in the pod template in the ``flyte`` namespace, From e39acc70e1656c3ada5d085d8f8bce180a346f56 Mon Sep 17 00:00:00 2001 From: "Fabio M. Graetz, Ph.D" Date: Wed, 21 Feb 2024 03:34:10 +0100 Subject: [PATCH 031/107] Fix: Handle overriding of container image in backend (#4858) * Add container image to TaskNodeOverrides proto Signed-off-by: Fabio Graetz * Add container image override to v1alpha1.NodeSpec Signed-off-by: Fabio Graetz * Override container image in pod Signed-off-by: Fabio Graetz * Add unit test for creation of task node with image override Signed-off-by: Fabio Graetz * Add unit test for building a pod with container image override Signed-off-by: Fabio Graetz * Re-generate flytidl Signed-off-by: Fabio Graetz * Mock GetContainerImage for ExecutableNode Signed-off-by: Fabio Graetz * Make dask tests pass Signed-off-by: Fabio Graetz * Lint Signed-off-by: Fabio Graetz * Make kubeflow tests pass Signed-off-by: Fabio Graetz * Make spark tests pass Signed-off-by: Fabio Graetz * Make ray tests pass Signed-off-by: Fabio Graetz * Fix remaining flyteplugins tests Signed-off-by: Fabio Graetz * Add container test for image overriding Signed-off-by: Fabio Graetz * Add container image override test for pytorch jobs Signed-off-by: Fabio Graetz * Add ray test for container image overriding Signed-off-by: Fabio Graetz * Re-generate flyteidl Signed-off-by: Fabio Graetz * Add comment about container_image to TaskNodOverride proto Signed-off-by: Fabio Graetz * Re-generate flyteidl Signed-off-by: Fabio Graetz * Re-generate propeller Signed-off-by: Fabio Graetz * Lint Signed-off-by: Fabio Graetz * Re-generate flyteidl Signed-off-by: Fabio Graetz --------- Signed-off-by: Fabio Graetz --- flyteidl/clients/go/assets/admin.swagger.json | 4 + .../gen/pb-es/flyteidl/core/workflow_pb.ts | 8 ++ .../gen/pb-go/flyteidl/core/workflow.pb.go | 62 ++++++----- .../flyteidl/service/admin.swagger.json | 4 + flyteidl/gen/pb-js/flyteidl.d.ts | 6 ++ flyteidl/gen/pb-js/flyteidl.js | 17 +++ .../pb_python/flyteidl/core/workflow_pb2.py | 8 +- .../pb_python/flyteidl/core/workflow_pb2.pyi | 6 +- flyteidl/gen/pb_rust/flyteidl.core.rs | 3 + flyteidl/protos/flyteidl/core/workflow.proto | 3 + .../pluginmachinery/core/exec_metadata.go | 1 + .../core/mocks/task_overrides.go | 35 ++++++ .../flytek8s/plugin_exec_context.go | 4 + .../pluginmachinery/flytek8s/pod_helper.go | 16 ++- .../flytek8s/pod_helper_test.go | 57 ++++++---- .../plugins/array/k8s/management_test.go | 1 + .../go/tasks/plugins/k8s/dask/dask_test.go | 1 + .../plugins/k8s/kfoperators/mpi/mpi_test.go | 1 + .../k8s/kfoperators/pytorch/pytorch_test.go | 101 +++++++++++++++--- .../kfoperators/tensorflow/tensorflow_test.go | 1 + .../tasks/plugins/k8s/pod/container_test.go | 58 ++++++++-- .../go/tasks/plugins/k8s/pod/sidecar_test.go | 1 + .../go/tasks/plugins/k8s/ray/ray_test.go | 68 +++++++++++- .../go/tasks/plugins/k8s/spark/spark_test.go | 1 + flyteplugins/tests/end_to_end.go | 1 + .../pkg/apis/flyteworkflow/v1alpha1/iface.go | 1 + .../v1alpha1/mocks/ExecutableNode.go | 32 ++++++ .../pkg/apis/flyteworkflow/v1alpha1/nodes.go | 6 ++ .../pkg/compiler/transformers/k8s/node.go | 6 ++ .../compiler/transformers/k8s/node_test.go | 18 ++++ 30 files changed, 449 insertions(+), 82 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 73dbd3b8dcf..1adf1fa70c6 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -8080,6 +8080,10 @@ "extended_resources": { "$ref": "#/definitions/coreExtendedResources", "description": "Overrides for all non-standard resources, not captured by\nv1.ResourceRequirements, to allocate to a task." + }, + "container_image": { + "type": "string", + "description": "Override for the image used by task pods." } }, "description": "Optional task node overrides that will be applied at task execution time." diff --git a/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts index 644f792e633..414e6eb3192 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/workflow_pb.ts @@ -1121,6 +1121,13 @@ export class TaskNodeOverrides extends Message { */ extendedResources?: ExtendedResources; + /** + * Override for the image used by task pods. + * + * @generated from field: string container_image = 3; + */ + containerImage = ""; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -1131,6 +1138,7 @@ export class TaskNodeOverrides extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "resources", kind: "message", T: Resources }, { no: 2, name: "extended_resources", kind: "message", T: ExtendedResources }, + { no: 3, name: "container_image", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): TaskNodeOverrides { diff --git a/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go b/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go index f9318f539f9..8b6cc6ab1dc 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/workflow.pb.go @@ -1498,6 +1498,8 @@ type TaskNodeOverrides struct { // Overrides for all non-standard resources, not captured by // v1.ResourceRequirements, to allocate to a task. ExtendedResources *ExtendedResources `protobuf:"bytes,2,opt,name=extended_resources,json=extendedResources,proto3" json:"extended_resources,omitempty"` + // Override for the image used by task pods. + ContainerImage string `protobuf:"bytes,3,opt,name=container_image,json=containerImage,proto3" json:"container_image,omitempty"` } func (x *TaskNodeOverrides) Reset() { @@ -1546,6 +1548,13 @@ func (x *TaskNodeOverrides) GetExtendedResources() *ExtendedResources { return nil } +func (x *TaskNodeOverrides) GetContainerImage() string { + if x != nil { + return x.ContainerImage + } + return "" +} + // A structure that uniquely identifies a launch plan in the system. type LaunchPlanTemplate struct { state protoimpl.MessageState @@ -1839,7 +1848,7 @@ var file_flyteidl_core_workflow_proto_rawDesc = []byte{ 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, + 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, @@ -1849,30 +1858,33 @@ var file_flyteidl_core_workflow_proto_rawDesc = []byte{ 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, - 0x6c, 0x61, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, - 0x61, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x66, 0x69, 0x78, 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, 0x52, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, - 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, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 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, + 0x72, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xba, 0x01, + 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 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, + 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x0c, + 0x66, 0x69, 0x78, 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, 0x52, 0x0b, 0x66, + 0x69, 0x78, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 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, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 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 ( 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 73dbd3b8dcf..1adf1fa70c6 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -8080,6 +8080,10 @@ "extended_resources": { "$ref": "#/definitions/coreExtendedResources", "description": "Overrides for all non-standard resources, not captured by\nv1.ResourceRequirements, to allocate to a task." + }, + "container_image": { + "type": "string", + "description": "Override for the image used by task pods." } }, "description": "Optional task node overrides that will be applied at task execution time." diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 87de89064b3..d8a2711961d 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -4935,6 +4935,9 @@ export namespace flyteidl { /** TaskNodeOverrides extendedResources */ extendedResources?: (flyteidl.core.IExtendedResources|null); + + /** TaskNodeOverrides containerImage */ + containerImage?: (string|null); } /** Represents a TaskNodeOverrides. */ @@ -4952,6 +4955,9 @@ export namespace flyteidl { /** TaskNodeOverrides extendedResources. */ public extendedResources?: (flyteidl.core.IExtendedResources|null); + /** TaskNodeOverrides containerImage. */ + public containerImage: string; + /** * Creates a new TaskNodeOverrides instance using the specified properties. * @param [properties] Properties to set diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index c7fac48ad5f..791f0c9eb6b 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -11969,6 +11969,7 @@ * @interface ITaskNodeOverrides * @property {flyteidl.core.IResources|null} [resources] TaskNodeOverrides resources * @property {flyteidl.core.IExtendedResources|null} [extendedResources] TaskNodeOverrides extendedResources + * @property {string|null} [containerImage] TaskNodeOverrides containerImage */ /** @@ -12002,6 +12003,14 @@ */ TaskNodeOverrides.prototype.extendedResources = null; + /** + * TaskNodeOverrides containerImage. + * @member {string} containerImage + * @memberof flyteidl.core.TaskNodeOverrides + * @instance + */ + TaskNodeOverrides.prototype.containerImage = ""; + /** * Creates a new TaskNodeOverrides instance using the specified properties. * @function create @@ -12030,6 +12039,8 @@ $root.flyteidl.core.Resources.encode(message.resources, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.extendedResources != null && message.hasOwnProperty("extendedResources")) $root.flyteidl.core.ExtendedResources.encode(message.extendedResources, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.containerImage != null && message.hasOwnProperty("containerImage")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.containerImage); return writer; }; @@ -12057,6 +12068,9 @@ case 2: message.extendedResources = $root.flyteidl.core.ExtendedResources.decode(reader, reader.uint32()); break; + case 3: + message.containerImage = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -12086,6 +12100,9 @@ if (error) return "extendedResources." + error; } + if (message.containerImage != null && message.hasOwnProperty("containerImage")) + if (!$util.isString(message.containerImage)) + return "containerImage: string expected"; return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py index ab629c2b9fb..4c070243207 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.py @@ -22,7 +22,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\"{\n\x07IfBlock\x12>\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpressionR\tcondition\x12\x30\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x08thenNode\"\xd4\x01\n\x0bIfElseBlock\x12*\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlockR\x04\x63\x61se\x12,\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlockR\x05other\x12\x32\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00R\x08\x65lseNode\x12,\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rrorB\t\n\x07\x64\x65\x66\x61ult\"A\n\nBranchNode\x12\x33\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlockR\x06ifElse\"\x97\x01\n\x08TaskNode\x12>\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0breferenceId\x12>\n\toverrides\x18\x02 \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverridesB\x0b\n\treference\"\xa6\x01\n\x0cWorkflowNode\x12\x42\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\rlaunchplanRef\x12\x45\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0esubWorkflowRefB\x0b\n\treference\"/\n\x10\x41pproveCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\"\x90\x01\n\x0fSignalCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x30\n\x14output_variable_name\x18\x03 \x01(\tR\x12outputVariableName\"G\n\x0eSleepCondition\x12\x35\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\"\xc5\x01\n\x08GateNode\x12;\n\x07\x61pprove\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.ApproveConditionH\x00R\x07\x61pprove\x12\x38\n\x06signal\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SignalConditionH\x00R\x06signal\x12\x35\n\x05sleep\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.SleepConditionH\x00R\x05sleepB\x0b\n\tcondition\"\xbf\x01\n\tArrayNode\x12\'\n\x04node\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x04node\x12 \n\x0bparallelism\x18\x02 \x01(\rR\x0bparallelism\x12%\n\rmin_successes\x18\x03 \x01(\rH\x00R\x0cminSuccesses\x12,\n\x11min_success_ratio\x18\x04 \x01(\x02H\x00R\x0fminSuccessRatioB\x12\n\x10success_criteria\"\x8c\x03\n\x0cNodeMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x33\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x07timeout\x12\x36\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategyR\x07retries\x12&\n\rinterruptible\x18\x06 \x01(\x08H\x00R\rinterruptible\x12\x1e\n\tcacheable\x18\x07 \x01(\x08H\x01R\tcacheable\x12%\n\rcache_version\x18\x08 \x01(\tH\x02R\x0c\x63\x61\x63heVersion\x12/\n\x12\x63\x61\x63he_serializable\x18\t \x01(\x08H\x03R\x11\x63\x61\x63heSerializableB\x15\n\x13interruptible_valueB\x11\n\x0f\x63\x61\x63heable_valueB\x15\n\x13\x63\x61\x63he_version_valueB\x1a\n\x18\x63\x61\x63he_serializable_value\"/\n\x05\x41lias\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x14\n\x05\x61lias\x18\x02 \x01(\tR\x05\x61lias\"\x9f\x04\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadataR\x08metadata\x12.\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x06inputs\x12*\n\x11upstream_node_ids\x18\x04 \x03(\tR\x0fupstreamNodeIds\x12;\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.AliasR\routputAliases\x12\x36\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00R\x08taskNode\x12\x42\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00R\x0cworkflowNode\x12<\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00R\nbranchNode\x12\x36\n\tgate_node\x18\t \x01(\x0b\x32\x17.flyteidl.core.GateNodeH\x00R\x08gateNode\x12\x39\n\narray_node\x18\n \x01(\x0b\x32\x18.flyteidl.core.ArrayNodeH\x00R\tarrayNodeB\x08\n\x06target\"\xfc\x02\n\x10WorkflowMetadata\x12M\n\x12quality_of_service\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12N\n\non_failure\x18\x02 \x01(\x0e\x32/.flyteidl.core.WorkflowMetadata.OnFailurePolicyR\tonFailure\x12=\n\x04tags\x18\x03 \x03(\x0b\x32).flyteidl.core.WorkflowMetadata.TagsEntryR\x04tags\x1a\x37\n\tTagsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"Q\n\x0fOnFailurePolicy\x12\x14\n\x10\x46\x41IL_IMMEDIATELY\x10\x00\x12(\n$FAIL_AFTER_EXECUTABLE_NODES_COMPLETE\x10\x01\"@\n\x18WorkflowMetadataDefaults\x12$\n\rinterruptible\x18\x01 \x01(\x08R\rinterruptible\"\xa2\x03\n\x10WorkflowTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\x08metadata\x18\x02 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowMetadataR\x08metadata\x12;\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12)\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.NodeR\x05nodes\x12\x30\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x07outputs\x12\x36\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x0b\x66\x61ilureNode\x12T\n\x11metadata_defaults\x18\x07 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaultsR\x10metadataDefaults\"\x9c\x01\n\x11TaskNodeOverrides\x12\x36\n\tresources\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\x12O\n\x12\x65xtended_resources\x18\x02 \x01(\x0b\x32 .flyteidl.core.ExtendedResourcesR\x11\x65xtendedResources\"\xba\x01\n\x12LaunchPlanTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\tinterface\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12<\n\x0c\x66ixed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ixedInputsB\xb3\x01\n\x11\x63om.flyteidl.coreB\rWorkflowProtoP\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/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\"{\n\x07IfBlock\x12>\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpressionR\tcondition\x12\x30\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x08thenNode\"\xd4\x01\n\x0bIfElseBlock\x12*\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlockR\x04\x63\x61se\x12,\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlockR\x05other\x12\x32\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00R\x08\x65lseNode\x12,\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rrorB\t\n\x07\x64\x65\x66\x61ult\"A\n\nBranchNode\x12\x33\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlockR\x06ifElse\"\x97\x01\n\x08TaskNode\x12>\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0breferenceId\x12>\n\toverrides\x18\x02 \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverridesB\x0b\n\treference\"\xa6\x01\n\x0cWorkflowNode\x12\x42\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\rlaunchplanRef\x12\x45\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00R\x0esubWorkflowRefB\x0b\n\treference\"/\n\x10\x41pproveCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\"\x90\x01\n\x0fSignalCondition\x12\x1b\n\tsignal_id\x18\x01 \x01(\tR\x08signalId\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x30\n\x14output_variable_name\x18\x03 \x01(\tR\x12outputVariableName\"G\n\x0eSleepCondition\x12\x35\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\"\xc5\x01\n\x08GateNode\x12;\n\x07\x61pprove\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.ApproveConditionH\x00R\x07\x61pprove\x12\x38\n\x06signal\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SignalConditionH\x00R\x06signal\x12\x35\n\x05sleep\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.SleepConditionH\x00R\x05sleepB\x0b\n\tcondition\"\xbf\x01\n\tArrayNode\x12\'\n\x04node\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x04node\x12 \n\x0bparallelism\x18\x02 \x01(\rR\x0bparallelism\x12%\n\rmin_successes\x18\x03 \x01(\rH\x00R\x0cminSuccesses\x12,\n\x11min_success_ratio\x18\x04 \x01(\x02H\x00R\x0fminSuccessRatioB\x12\n\x10success_criteria\"\x8c\x03\n\x0cNodeMetadata\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x33\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x07timeout\x12\x36\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategyR\x07retries\x12&\n\rinterruptible\x18\x06 \x01(\x08H\x00R\rinterruptible\x12\x1e\n\tcacheable\x18\x07 \x01(\x08H\x01R\tcacheable\x12%\n\rcache_version\x18\x08 \x01(\tH\x02R\x0c\x63\x61\x63heVersion\x12/\n\x12\x63\x61\x63he_serializable\x18\t \x01(\x08H\x03R\x11\x63\x61\x63heSerializableB\x15\n\x13interruptible_valueB\x11\n\x0f\x63\x61\x63heable_valueB\x15\n\x13\x63\x61\x63he_version_valueB\x1a\n\x18\x63\x61\x63he_serializable_value\"/\n\x05\x41lias\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x14\n\x05\x61lias\x18\x02 \x01(\tR\x05\x61lias\"\x9f\x04\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadataR\x08metadata\x12.\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x06inputs\x12*\n\x11upstream_node_ids\x18\x04 \x03(\tR\x0fupstreamNodeIds\x12;\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.AliasR\routputAliases\x12\x36\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00R\x08taskNode\x12\x42\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00R\x0cworkflowNode\x12<\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00R\nbranchNode\x12\x36\n\tgate_node\x18\t \x01(\x0b\x32\x17.flyteidl.core.GateNodeH\x00R\x08gateNode\x12\x39\n\narray_node\x18\n \x01(\x0b\x32\x18.flyteidl.core.ArrayNodeH\x00R\tarrayNodeB\x08\n\x06target\"\xfc\x02\n\x10WorkflowMetadata\x12M\n\x12quality_of_service\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12N\n\non_failure\x18\x02 \x01(\x0e\x32/.flyteidl.core.WorkflowMetadata.OnFailurePolicyR\tonFailure\x12=\n\x04tags\x18\x03 \x03(\x0b\x32).flyteidl.core.WorkflowMetadata.TagsEntryR\x04tags\x1a\x37\n\tTagsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"Q\n\x0fOnFailurePolicy\x12\x14\n\x10\x46\x41IL_IMMEDIATELY\x10\x00\x12(\n$FAIL_AFTER_EXECUTABLE_NODES_COMPLETE\x10\x01\"@\n\x18WorkflowMetadataDefaults\x12$\n\rinterruptible\x18\x01 \x01(\x08R\rinterruptible\"\xa2\x03\n\x10WorkflowTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\x08metadata\x18\x02 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowMetadataR\x08metadata\x12;\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12)\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.NodeR\x05nodes\x12\x30\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.BindingR\x07outputs\x12\x36\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.NodeR\x0b\x66\x61ilureNode\x12T\n\x11metadata_defaults\x18\x07 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaultsR\x10metadataDefaults\"\xc5\x01\n\x11TaskNodeOverrides\x12\x36\n\tresources\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\x12O\n\x12\x65xtended_resources\x18\x02 \x01(\x0b\x32 .flyteidl.core.ExtendedResourcesR\x11\x65xtendedResources\x12\'\n\x0f\x63ontainer_image\x18\x03 \x01(\tR\x0e\x63ontainerImage\"\xba\x01\n\x12LaunchPlanTemplate\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12;\n\tinterface\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterfaceR\tinterface\x12<\n\x0c\x66ixed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ixedInputsB\xb3\x01\n\x11\x63om.flyteidl.coreB\rWorkflowProtoP\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) @@ -70,7 +70,7 @@ _globals['_WORKFLOWTEMPLATE']._serialized_start=3155 _globals['_WORKFLOWTEMPLATE']._serialized_end=3573 _globals['_TASKNODEOVERRIDES']._serialized_start=3576 - _globals['_TASKNODEOVERRIDES']._serialized_end=3732 - _globals['_LAUNCHPLANTEMPLATE']._serialized_start=3735 - _globals['_LAUNCHPLANTEMPLATE']._serialized_end=3921 + _globals['_TASKNODEOVERRIDES']._serialized_end=3773 + _globals['_LAUNCHPLANTEMPLATE']._serialized_start=3776 + _globals['_LAUNCHPLANTEMPLATE']._serialized_end=3962 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi index efee1e9ec27..11efca23921 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/workflow_pb2.pyi @@ -199,12 +199,14 @@ class WorkflowTemplate(_message.Message): def __init__(self, id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., metadata: _Optional[_Union[WorkflowMetadata, _Mapping]] = ..., interface: _Optional[_Union[_interface_pb2.TypedInterface, _Mapping]] = ..., nodes: _Optional[_Iterable[_Union[Node, _Mapping]]] = ..., outputs: _Optional[_Iterable[_Union[_literals_pb2.Binding, _Mapping]]] = ..., failure_node: _Optional[_Union[Node, _Mapping]] = ..., metadata_defaults: _Optional[_Union[WorkflowMetadataDefaults, _Mapping]] = ...) -> None: ... class TaskNodeOverrides(_message.Message): - __slots__ = ["resources", "extended_resources"] + __slots__ = ["resources", "extended_resources", "container_image"] RESOURCES_FIELD_NUMBER: _ClassVar[int] EXTENDED_RESOURCES_FIELD_NUMBER: _ClassVar[int] + CONTAINER_IMAGE_FIELD_NUMBER: _ClassVar[int] resources: _tasks_pb2.Resources extended_resources: _tasks_pb2.ExtendedResources - def __init__(self, resources: _Optional[_Union[_tasks_pb2.Resources, _Mapping]] = ..., extended_resources: _Optional[_Union[_tasks_pb2.ExtendedResources, _Mapping]] = ...) -> None: ... + container_image: str + def __init__(self, resources: _Optional[_Union[_tasks_pb2.Resources, _Mapping]] = ..., extended_resources: _Optional[_Union[_tasks_pb2.ExtendedResources, _Mapping]] = ..., container_image: _Optional[str] = ...) -> None: ... class LaunchPlanTemplate(_message.Message): __slots__ = ["id", "interface", "fixed_inputs"] diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index b2cc8088f54..bbb3c110675 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -2634,6 +2634,9 @@ pub struct TaskNodeOverrides { /// v1.ResourceRequirements, to allocate to a task. #[prost(message, optional, tag="2")] pub extended_resources: ::core::option::Option, + /// Override for the image used by task pods. + #[prost(string, tag="3")] + pub container_image: ::prost::alloc::string::String, } /// A structure that uniquely identifies a launch plan in the system. #[allow(clippy::derive_partial_eq_without_eq)] diff --git a/flyteidl/protos/flyteidl/core/workflow.proto b/flyteidl/protos/flyteidl/core/workflow.proto index 8433fc9e31f..dcbe9367f95 100644 --- a/flyteidl/protos/flyteidl/core/workflow.proto +++ b/flyteidl/protos/flyteidl/core/workflow.proto @@ -297,6 +297,9 @@ message TaskNodeOverrides { // Overrides for all non-standard resources, not captured by // v1.ResourceRequirements, to allocate to a task. ExtendedResources extended_resources = 2; + + // Override for the image used by task pods. + string container_image = 3; } // A structure that uniquely identifies a launch plan in the system. diff --git a/flyteplugins/go/tasks/pluginmachinery/core/exec_metadata.go b/flyteplugins/go/tasks/pluginmachinery/core/exec_metadata.go index 9ac650baaa7..83d7dbcf123 100644 --- a/flyteplugins/go/tasks/pluginmachinery/core/exec_metadata.go +++ b/flyteplugins/go/tasks/pluginmachinery/core/exec_metadata.go @@ -12,6 +12,7 @@ import ( type TaskOverrides interface { GetResources() *v1.ResourceRequirements GetExtendedResources() *core.ExtendedResources + GetContainerImage() string GetConfig() *v1.ConfigMap } diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_overrides.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_overrides.go index d00973c1145..cc3c528007c 100644 --- a/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_overrides.go +++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/task_overrides.go @@ -82,6 +82,41 @@ func (_m *TaskOverrides) GetExtendedResources() *flyteidlcore.ExtendedResources return r0 } +type TaskOverrides_GetContainerImage struct { + *mock.Call +} + +func (_m TaskOverrides_GetContainerImage) Return(_a0 string) *TaskOverrides_GetContainerImage { + return &TaskOverrides_GetContainerImage{Call: _m.Call.Return(_a0)} +} + +func (_m *TaskOverrides) OnGetContainerImage() *TaskOverrides_GetContainerImage { + c_call := _m.On("GetContainerImage") + return &TaskOverrides_GetContainerImage{Call: c_call} +} + +func (_m *TaskOverrides) OnGetContainerImageMatch(matchers ...interface{}) *TaskOverrides_GetContainerImage { + c_call := _m.On("GetContainerImage", matchers...) + return &TaskOverrides_GetContainerImage{Call: c_call} +} + +// GetContainerImage provides a mock function with given fields: +func (_m *TaskOverrides) GetContainerImage() string { + ret := _m.Called() + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(string) + } + } + + return r0 +} + + type TaskOverrides_GetResources struct { *mock.Call } diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/plugin_exec_context.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/plugin_exec_context.go index d09bcdb3636..ff9ae2ba9ff 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/plugin_exec_context.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/plugin_exec_context.go @@ -27,6 +27,10 @@ func (to *pluginTaskOverrides) GetExtendedResources() *core.ExtendedResources { return to.TaskOverrides.GetExtendedResources() } +func (to *pluginTaskOverrides) GetContainerImage() string { + return to.TaskOverrides.GetContainerImage() +} + type pluginTaskExecutionMetadata struct { pluginsCore.TaskExecutionMetadata interruptible *bool diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go index 69111dc030d..7f010f6b7ca 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go @@ -317,7 +317,7 @@ func BuildRawPod(ctx context.Context, tCtx pluginsCore.TaskExecutionContext) (*v } // ApplyFlytePodConfiguration updates the PodSpec and ObjectMeta with various Flyte configuration. This includes -// applying default k8s configuration, resource requests, injecting copilot containers, and merging with the +// applying default k8s configuration, applying overrides (resources etc.), injecting copilot containers, and merging with the // configuration PodTemplate (if exists). func ApplyFlytePodConfiguration(ctx context.Context, tCtx pluginsCore.TaskExecutionContext, podSpec *v1.PodSpec, objectMeta *metav1.ObjectMeta, primaryContainerName string) (*v1.PodSpec, *metav1.ObjectMeta, error) { taskTemplate, err := tCtx.TaskReader().Read(ctx) @@ -400,9 +400,23 @@ func ApplyFlytePodConfiguration(ctx context.Context, tCtx pluginsCore.TaskExecut ApplyGPUNodeSelectors(podSpec, extendedResources.GetGpuAccelerator()) } + // Override container image if necessary + if len(tCtx.TaskExecutionMetadata().GetOverrides().GetContainerImage()) > 0 { + ApplyContainerImageOverride(podSpec, tCtx.TaskExecutionMetadata().GetOverrides().GetContainerImage(), primaryContainerName) + } + return podSpec, objectMeta, nil } +func ApplyContainerImageOverride(podSpec *v1.PodSpec, containerImage string, primaryContainerName string) { + for i, c := range podSpec.Containers { + if c.Name == primaryContainerName { + podSpec.Containers[i].Image = containerImage + return + } + } +} + // ToK8sPodSpec builds a PodSpec and ObjectMeta based on the definition passed by the TaskExecutionContext. This // involves parsing the raw PodSpec definition and applying all Flyte configuration options. func ToK8sPodSpec(ctx context.Context, tCtx pluginsCore.TaskExecutionContext) (*v1.PodSpec, *metav1.ObjectMeta, string, error) { diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go index b12813b3870..08b6c5b9d07 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go @@ -26,7 +26,7 @@ import ( "github.com/flyteorg/flyte/flytestdlib/storage" ) -func dummyTaskExecutionMetadata(resources *v1.ResourceRequirements, extendedResources *core.ExtendedResources) pluginsCore.TaskExecutionMetadata { +func dummyTaskExecutionMetadata(resources *v1.ResourceRequirements, extendedResources *core.ExtendedResources, containerImage string) pluginsCore.TaskExecutionMetadata { taskExecutionMetadata := &pluginsCoreMock.TaskExecutionMetadata{} taskExecutionMetadata.On("GetNamespace").Return("test-namespace") taskExecutionMetadata.On("GetAnnotations").Return(map[string]string{"annotation-1": "val1"}) @@ -52,6 +52,7 @@ func dummyTaskExecutionMetadata(resources *v1.ResourceRequirements, extendedReso to := &pluginsCoreMock.TaskOverrides{} to.On("GetResources").Return(resources) to.On("GetExtendedResources").Return(extendedResources) + to.On("GetContainerImage").Return(containerImage) taskExecutionMetadata.On("GetOverrides").Return(to) taskExecutionMetadata.On("IsInterruptible").Return(true) taskExecutionMetadata.OnGetPlatformResources().Return(&v1.ResourceRequirements{}) @@ -79,7 +80,7 @@ func dummyInputReader() io.InputReader { return inputReader } -func dummyExecContext(taskTemplate *core.TaskTemplate, r *v1.ResourceRequirements, rm *core.ExtendedResources) pluginsCore.TaskExecutionContext { +func dummyExecContext(taskTemplate *core.TaskTemplate, r *v1.ResourceRequirements, rm *core.ExtendedResources, containerImage string) pluginsCore.TaskExecutionContext { ow := &pluginsIOMock.OutputWriter{} ow.OnGetOutputPrefixPath().Return("") ow.OnGetRawOutputPrefix().Return("") @@ -87,7 +88,7 @@ func dummyExecContext(taskTemplate *core.TaskTemplate, r *v1.ResourceRequirement ow.OnGetPreviousCheckpointsPrefix().Return("/prev") tCtx := &pluginsCoreMock.TaskExecutionContext{} - tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(r, rm)) + tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(r, rm, containerImage)) tCtx.OnInputReader().Return(dummyInputReader()) tCtx.OnOutputWriter().Return(ow) @@ -700,7 +701,7 @@ func updatePod(t *testing.T) { v1.ResourceCPU: resource.MustParse("1024m"), v1.ResourceEphemeralStorage: resource.MustParse("100M"), }, - }, nil) + }, nil, "") pod := &v1.Pod{ Spec: v1.PodSpec{ @@ -753,7 +754,7 @@ func updatePod(t *testing.T) { } func TestUpdatePodWithDefaultAffinityAndInterruptibleNodeSelectorRequirement(t *testing.T) { - taskExecutionMetadata := dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil) + taskExecutionMetadata := dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil, "") assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{ DefaultAffinity: &v1.Affinity{ NodeAffinity: &v1.NodeAffinity{ @@ -817,7 +818,7 @@ func toK8sPodInterruptible(t *testing.T) { v1.ResourceCPU: resource.MustParse("1024m"), v1.ResourceEphemeralStorage: resource.MustParse("100M"), }, - }, nil) + }, nil, "") p, _, _, err := ToK8sPodSpec(ctx, x) assert.NoError(t, err) @@ -884,7 +885,7 @@ func TestToK8sPod(t *testing.T) { v1.ResourceCPU: resource.MustParse("1024m"), v1.ResourceEphemeralStorage: resource.MustParse("100M"), }, - }, nil) + }, nil, "") p, _, _, err := ToK8sPodSpec(ctx, x) assert.NoError(t, err) @@ -901,7 +902,7 @@ func TestToK8sPod(t *testing.T) { v1.ResourceCPU: resource.MustParse("1024m"), v1.ResourceEphemeralStorage: resource.MustParse("100M"), }, - }, nil) + }, nil, "") p, _, _, err := ToK8sPodSpec(ctx, x) assert.NoError(t, err) @@ -919,7 +920,7 @@ func TestToK8sPod(t *testing.T) { v1.ResourceCPU: resource.MustParse("1024m"), v1.ResourceEphemeralStorage: resource.MustParse("100M"), }, - }, nil) + }, nil, "") assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{ DefaultNodeSelector: map[string]string{ @@ -946,7 +947,7 @@ func TestToK8sPod(t *testing.T) { }, })) - x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil) + x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil, "") p, _, _, err := ToK8sPodSpec(ctx, x) assert.NoError(t, err) assert.NotNil(t, p.SecurityContext) @@ -958,7 +959,7 @@ func TestToK8sPod(t *testing.T) { assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{ EnableHostNetworkingPod: &enabled, })) - x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil) + x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil, "") p, _, _, err := ToK8sPodSpec(ctx, x) assert.NoError(t, err) assert.True(t, p.HostNetwork) @@ -969,7 +970,7 @@ func TestToK8sPod(t *testing.T) { assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{ EnableHostNetworkingPod: &enabled, })) - x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil) + x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil, "") p, _, _, err := ToK8sPodSpec(ctx, x) assert.NoError(t, err) assert.False(t, p.HostNetwork) @@ -977,7 +978,7 @@ func TestToK8sPod(t *testing.T) { t.Run("skipSettingHostNetwork", func(t *testing.T) { assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{})) - x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil) + x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil, "") p, _, _, err := ToK8sPodSpec(ctx, x) assert.NoError(t, err) assert.False(t, p.HostNetwork) @@ -1011,7 +1012,7 @@ func TestToK8sPod(t *testing.T) { }, })) - x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil) + x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil, "") p, _, _, err := ToK8sPodSpec(ctx, x) assert.NoError(t, err) assert.NotNil(t, p.DNSConfig) @@ -1032,7 +1033,7 @@ func TestToK8sPod(t *testing.T) { "foo": "bar", }, })) - x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil) + x := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{}, nil, "") p, _, _, err := ToK8sPodSpec(ctx, x) assert.NoError(t, err) for _, c := range p.Containers { @@ -1047,6 +1048,18 @@ func TestToK8sPod(t *testing.T) { }) } +func TestToK8sPodContainerImage(t *testing.T) { + t.Run("Override container image", func(t *testing.T) { + taskContext := dummyExecContext(dummyTaskTemplate(), &v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: resource.MustParse("1024m"), + }}, nil, "foo:latest") + p, _, _, err := ToK8sPodSpec(context.TODO(), taskContext) + assert.NoError(t, err) + assert.Equal(t, "foo:latest", p.Containers[0].Image) + }) +} + func TestToK8sPodExtendedResources(t *testing.T) { assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{ GpuDeviceNodeLabel: "gpu-node-label", @@ -1152,7 +1165,7 @@ func TestToK8sPodExtendedResources(t *testing.T) { t.Run(f.name, func(t *testing.T) { taskTemplate := dummyTaskTemplate() taskTemplate.ExtendedResources = f.extendedResourcesBase - taskContext := dummyExecContext(taskTemplate, f.resources, f.extendedResourcesOverride) + taskContext := dummyExecContext(taskTemplate, f.resources, f.extendedResourcesOverride, "") p, _, _, err := ToK8sPodSpec(context.TODO(), taskContext) assert.NoError(t, err) @@ -1790,7 +1803,7 @@ func TestGetPodTemplate(t *testing.T) { taskReader.On("Read", mock.Anything).Return(task, nil) tCtx := &pluginsCoreMock.TaskExecutionContext{} - tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil)) + tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil, "")) tCtx.OnTaskReader().Return(taskReader) // initialize PodTemplateStore @@ -1816,7 +1829,7 @@ func TestGetPodTemplate(t *testing.T) { taskReader.On("Read", mock.Anything).Return(task, nil) tCtx := &pluginsCoreMock.TaskExecutionContext{} - tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil)) + tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil, "")) tCtx.OnTaskReader().Return(taskReader) // initialize PodTemplateStore @@ -1843,7 +1856,7 @@ func TestGetPodTemplate(t *testing.T) { taskReader.On("Read", mock.Anything).Return(task, nil) tCtx := &pluginsCoreMock.TaskExecutionContext{} - tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil)) + tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil, "")) tCtx.OnTaskReader().Return(taskReader) // initialize PodTemplateStore @@ -1871,7 +1884,7 @@ func TestGetPodTemplate(t *testing.T) { taskReader.On("Read", mock.Anything).Return(task, nil) tCtx := &pluginsCoreMock.TaskExecutionContext{} - tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil)) + tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil, "")) tCtx.OnTaskReader().Return(taskReader) // initialize PodTemplateStore @@ -1913,7 +1926,7 @@ func TestMergeWithBasePodTemplate(t *testing.T) { taskReader.On("Read", mock.Anything).Return(task, nil) tCtx := &pluginsCoreMock.TaskExecutionContext{} - tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil)) + tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil, "")) tCtx.OnTaskReader().Return(taskReader) resultPodSpec, resultObjectMeta, err := MergeWithBasePodTemplate(context.TODO(), tCtx, &podSpec, &objectMeta, "foo") @@ -1967,7 +1980,7 @@ func TestMergeWithBasePodTemplate(t *testing.T) { taskReader.On("Read", mock.Anything).Return(task, nil) tCtx := &pluginsCoreMock.TaskExecutionContext{} - tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil)) + tCtx.OnTaskExecutionMetadata().Return(dummyTaskExecutionMetadata(&v1.ResourceRequirements{}, nil, "")) tCtx.OnTaskReader().Return(taskReader) resultPodSpec, resultObjectMeta, err := MergeWithBasePodTemplate(context.TODO(), tCtx, &podSpec, &objectMeta, "foo") diff --git a/flyteplugins/go/tasks/plugins/array/k8s/management_test.go b/flyteplugins/go/tasks/plugins/array/k8s/management_test.go index 2bd1d5eefeb..0eaed654672 100644 --- a/flyteplugins/go/tasks/plugins/array/k8s/management_test.go +++ b/flyteplugins/go/tasks/plugins/array/k8s/management_test.go @@ -94,6 +94,7 @@ func getMockTaskExecutionContext(ctx context.Context, parallelism int) *mocks.Ta }, }) overrides.OnGetExtendedResources().Return(nil) + overrides.OnGetContainerImage().Return("") tMeta := &mocks.TaskExecutionMetadata{} tMeta.OnGetTaskExecutionID().Return(tID) diff --git a/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go b/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go index e7d43a2256d..86ca034e7b7 100644 --- a/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go @@ -194,6 +194,7 @@ func dummyDaskTaskContext(taskTemplate *core.TaskTemplate, resources *v1.Resourc overrides := &mocks.TaskOverrides{} overrides.OnGetResources().Return(resources) overrides.OnGetExtendedResources().Return(extendedResources) + overrides.OnGetContainerImage().Return("") taskExecutionMetadata.OnGetOverrides().Return(overrides) taskCtx.On("TaskExecutionMetadata").Return(taskExecutionMetadata) return taskCtx 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 29fe47a446a..3c823510aca 100644 --- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go @@ -153,6 +153,7 @@ func dummyMPITaskContext(taskTemplate *core.TaskTemplate, resources *corev1.Reso overrides := &mocks.TaskOverrides{} overrides.OnGetResources().Return(resources) overrides.OnGetExtendedResources().Return(extendedResources) + overrides.OnGetContainerImage().Return("") taskExecutionMetadata := &mocks.TaskExecutionMetadata{} taskExecutionMetadata.OnGetTaskExecutionID().Return(tID) 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 0700644578a..aea096e4ba8 100644 --- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go @@ -123,7 +123,7 @@ func dummyPytorchTaskTemplate(id string, args ...interface{}) *core.TaskTemplate } } -func dummyPytorchTaskContext(taskTemplate *core.TaskTemplate, resources *corev1.ResourceRequirements, extendedResources *core.ExtendedResources) pluginsCore.TaskExecutionContext { +func dummyPytorchTaskContext(taskTemplate *core.TaskTemplate, resources *corev1.ResourceRequirements, extendedResources *core.ExtendedResources, containerImage string) pluginsCore.TaskExecutionContext { taskCtx := &mocks.TaskExecutionContext{} inputReader := &pluginIOMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return("/input/prefix") @@ -159,6 +159,7 @@ func dummyPytorchTaskContext(taskTemplate *core.TaskTemplate, resources *corev1. overrides := &mocks.TaskOverrides{} overrides.OnGetResources().Return(resources) overrides.OnGetExtendedResources().Return(extendedResources) + overrides.OnGetContainerImage().Return(containerImage) taskExecutionMetadata := &mocks.TaskExecutionMetadata{} taskExecutionMetadata.OnGetTaskExecutionID().Return(tID) @@ -279,7 +280,7 @@ func dummyPytorchJobResource(pytorchResourceHandler pytorchOperatorResourceHandl ptObj := dummyPytorchCustomObj(workers) taskTemplate := dummyPytorchTaskTemplate("job1", ptObj) - resource, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + resource, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) if err != nil { panic(err) } @@ -307,7 +308,7 @@ func TestBuildResourcePytorchElastic(t *testing.T) { ptObj := dummyElasticPytorchCustomObj(2, plugins.ElasticConfig{MinReplicas: 1, MaxReplicas: 2, NprocPerNode: 4, RdzvBackend: "c10d"}) taskTemplate := dummyPytorchTaskTemplate("job2", ptObj) - resource, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + resource, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.NoError(t, err) assert.NotNil(t, resource) @@ -350,7 +351,7 @@ func TestBuildResourcePytorch(t *testing.T) { ptObj := dummyPytorchCustomObj(100) taskTemplate := dummyPytorchTaskTemplate("job3", ptObj) - res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.NoError(t, err) assert.NotNil(t, res) @@ -386,6 +387,74 @@ func TestBuildResourcePytorch(t *testing.T) { } } +func TestBuildResourcePytorchContainerImage(t *testing.T) { + assert.NoError(t, flytek8sConfig.SetK8sPluginConfig(&flytek8sConfig.K8sPluginConfig{})) + + fixtures := []struct { + name string + resources *corev1.ResourceRequirements + containerImageOverride string + }{ + { + "without overrides", + &corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + flytek8s.ResourceNvidiaGPU: resource.MustParse("1"), + }, + }, + "", + }, + { + "with overrides", + &corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + flytek8s.ResourceNvidiaGPU: resource.MustParse("1"), + }, + }, + "container-image-override", + }, + } + + testConfigs := []struct { + name string + plugin *plugins.DistributedPyTorchTrainingTask + }{ + { + "pytorch", + dummyPytorchCustomObj(100), + }, + { + "elastic pytorch", + dummyElasticPytorchCustomObj(2, plugins.ElasticConfig{MinReplicas: 1, MaxReplicas: 2, NprocPerNode: 4, RdzvBackend: "c10d"}), + }, + } + + for _, tCfg := range testConfigs { + for _, f := range fixtures { + t.Run(tCfg.name+" "+f.name, func(t *testing.T) { + taskTemplate := dummyPytorchTaskTemplate("job", tCfg.plugin) + taskContext := dummyPytorchTaskContext(taskTemplate, f.resources, nil, f.containerImageOverride) + pytorchResourceHandler := pytorchOperatorResourceHandler{} + r, err := pytorchResourceHandler.BuildResource(context.TODO(), taskContext) + assert.NoError(t, err) + assert.NotNil(t, r) + pytorchJob, ok := r.(*kubeflowv1.PyTorchJob) + assert.True(t, ok) + + for _, replicaSpec := range pytorchJob.Spec.PyTorchReplicaSpecs { + var expectedContainerImage string + if len(f.containerImageOverride) > 0 { + expectedContainerImage = f.containerImageOverride + } else { + expectedContainerImage = testImage + } + assert.Equal(t, expectedContainerImage, replicaSpec.Template.Spec.Containers[0].Image) + } + }) + } + } +} + func TestBuildResourcePytorchExtendedResources(t *testing.T) { assert.NoError(t, flytek8sConfig.SetK8sPluginConfig(&flytek8sConfig.K8sPluginConfig{ GpuDeviceNodeLabel: "gpu-node-label", @@ -506,7 +575,7 @@ func TestBuildResourcePytorchExtendedResources(t *testing.T) { t.Run(tCfg.name+" "+f.name, func(t *testing.T) { taskTemplate := dummyPytorchTaskTemplate("job", tCfg.plugin) taskTemplate.ExtendedResources = f.extendedResourcesBase - taskContext := dummyPytorchTaskContext(taskTemplate, f.resources, f.extendedResourcesOverride) + taskContext := dummyPytorchTaskContext(taskTemplate, f.resources, f.extendedResourcesOverride, "") pytorchResourceHandler := pytorchOperatorResourceHandler{} r, err := pytorchResourceHandler.BuildResource(context.TODO(), taskContext) assert.NoError(t, err) @@ -539,7 +608,7 @@ func TestGetTaskPhase(t *testing.T) { return dummyPytorchJobResource(pytorchResourceHandler, 2, conditionType) } - taskCtx := dummyPytorchTaskContext(dummyPytorchTaskTemplate("", dummyPytorchCustomObj(2)), resourceRequirements, nil) + taskCtx := dummyPytorchTaskContext(dummyPytorchTaskTemplate("", dummyPytorchCustomObj(2)), resourceRequirements, nil, "") taskPhase, err := pytorchResourceHandler.GetTaskPhase(ctx, taskCtx, dummyPytorchJobResourceCreator(commonOp.JobCreated)) assert.NoError(t, err) assert.Equal(t, pluginsCore.PhaseQueued, taskPhase.Phase()) @@ -582,7 +651,7 @@ func TestGetLogs(t *testing.T) { pytorchResourceHandler := pytorchOperatorResourceHandler{} pytorchJob := dummyPytorchJobResource(pytorchResourceHandler, workers, commonOp.JobRunning) - taskCtx := dummyPytorchTaskContext(dummyPytorchTaskTemplate("", dummyPytorchCustomObj(workers)), resourceRequirements, nil) + taskCtx := dummyPytorchTaskContext(dummyPytorchTaskTemplate("", dummyPytorchCustomObj(workers)), resourceRequirements, nil, "") jobLogs, err := common.GetLogs(taskCtx, common.PytorchTaskType, pytorchJob.ObjectMeta, hasMaster, workers, 0, 0, 0) assert.NoError(t, err) assert.Equal(t, 3, len(jobLogs)) @@ -602,7 +671,7 @@ func TestGetLogsElastic(t *testing.T) { pytorchResourceHandler := pytorchOperatorResourceHandler{} pytorchJob := dummyPytorchJobResource(pytorchResourceHandler, workers, commonOp.JobRunning) - taskCtx := dummyPytorchTaskContext(dummyPytorchTaskTemplate("", dummyPytorchCustomObj(workers)), resourceRequirements, nil) + taskCtx := dummyPytorchTaskContext(dummyPytorchTaskTemplate("", dummyPytorchCustomObj(workers)), resourceRequirements, nil, "") jobLogs, err := common.GetLogs(taskCtx, common.PytorchTaskType, pytorchJob.ObjectMeta, hasMaster, workers, 0, 0, 0) assert.NoError(t, err) assert.Equal(t, 2, len(jobLogs)) @@ -633,7 +702,7 @@ func TestReplicaCounts(t *testing.T) { ptObj := dummyPytorchCustomObj(test.workerReplicaCount) taskTemplate := dummyPytorchTaskTemplate("the job", ptObj) - res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) if test.expectError { assert.Error(t, err) assert.Nil(t, res) @@ -715,7 +784,7 @@ func TestBuildResourcePytorchV1(t *testing.T) { taskTemplate := dummyPytorchTaskTemplate("job4", taskConfig) taskTemplate.TaskTypeVersion = 1 - res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.NoError(t, err) assert.NotNil(t, res) @@ -759,7 +828,7 @@ func TestBuildResourcePytorchV1WithRunPolicy(t *testing.T) { taskTemplate := dummyPytorchTaskTemplate("job5", taskConfig) taskTemplate.TaskTypeVersion = 1 - res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.NoError(t, err) assert.NotNil(t, res) @@ -819,7 +888,7 @@ func TestBuildResourcePytorchV1WithOnlyWorkerSpec(t *testing.T) { taskTemplate := dummyPytorchTaskTemplate("job5", taskConfig) taskTemplate.TaskTypeVersion = 1 - res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.NoError(t, err) assert.NotNil(t, res) @@ -890,7 +959,7 @@ func TestBuildResourcePytorchV1ResourceTolerations(t *testing.T) { taskTemplate := dummyPytorchTaskTemplate("job4", taskConfig) taskTemplate.TaskTypeVersion = 1 - res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + res, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.NoError(t, err) assert.NotNil(t, res) @@ -912,7 +981,7 @@ func TestBuildResourcePytorchV1WithElastic(t *testing.T) { taskTemplate.TaskTypeVersion = 1 pytorchResourceHandler := pytorchOperatorResourceHandler{} - resource, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + resource, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.NoError(t, err) assert.NotNil(t, resource) @@ -948,7 +1017,7 @@ func TestBuildResourcePytorchV1WithZeroWorker(t *testing.T) { pytorchResourceHandler := pytorchOperatorResourceHandler{} taskTemplate := dummyPytorchTaskTemplate("job5", taskConfig) taskTemplate.TaskTypeVersion = 1 - _, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + _, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.Error(t, err) } @@ -965,7 +1034,7 @@ func TestGetReplicaCount(t *testing.T) { pytorchResourceHandler := pytorchOperatorResourceHandler{} tfObj := dummyPytorchCustomObj(1) taskTemplate := dummyPytorchTaskTemplate("the job", tfObj) - resource, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil)) + resource, err := pytorchResourceHandler.BuildResource(context.TODO(), dummyPytorchTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.NoError(t, err) assert.NotNil(t, resource) PytorchJob, ok := resource.(*kubeflowv1.PyTorchJob) 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 2402bd4c5ad..80e95871d15 100644 --- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go @@ -154,6 +154,7 @@ func dummyTensorFlowTaskContext(taskTemplate *core.TaskTemplate, resources *core overrides := &mocks.TaskOverrides{} overrides.OnGetResources().Return(resources) overrides.OnGetExtendedResources().Return(extendedResources) + overrides.OnGetContainerImage().Return("") taskExecutionMetadata := &mocks.TaskExecutionMetadata{} taskExecutionMetadata.OnGetTaskExecutionID().Return(tID) diff --git a/flyteplugins/go/tasks/plugins/k8s/pod/container_test.go b/flyteplugins/go/tasks/plugins/k8s/pod/container_test.go index e69f7645499..9c098bd708e 100644 --- a/flyteplugins/go/tasks/plugins/k8s/pod/container_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/pod/container_test.go @@ -79,7 +79,7 @@ func dummyContainerTaskTemplateWithPodSpec(command []string, args []string) *cor return taskTemplate } -func dummyContainerTaskMetadata(resources *v1.ResourceRequirements, extendedResources *core.ExtendedResources, returnsServiceAccount bool) pluginsCore.TaskExecutionMetadata { +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"}) @@ -118,6 +118,7 @@ func dummyContainerTaskMetadata(resources *v1.ResourceRequirements, extendedReso to := &pluginsCoreMock.TaskOverrides{} to.On("GetResources").Return(resources) to.On("GetExtendedResources").Return(extendedResources) + to.OnGetContainerImage().Return(containerImage) taskMetadata.On("GetOverrides").Return(to) taskMetadata.On("IsInterruptible").Return(true) taskMetadata.On("GetEnvironmentVariables").Return(nil) @@ -176,19 +177,19 @@ func TestContainerTaskExecutor_BuildResource(t *testing.T) { { name: "BuildResource", taskTemplate: dummyContainerTaskTemplate(command, args), - taskMetadata: dummyContainerTaskMetadata(containerResourceRequirements, nil, true), + taskMetadata: dummyContainerTaskMetadata(containerResourceRequirements, nil, true, ""), expectServiceAccount: serviceAccount, }, { name: "BuildResource_PodTemplate", taskTemplate: dummyContainerTaskTemplateWithPodSpec(command, args), - taskMetadata: dummyContainerTaskMetadata(containerResourceRequirements, nil, true), + taskMetadata: dummyContainerTaskMetadata(containerResourceRequirements, nil, true, ""), expectServiceAccount: podTemplateServiceAccount, }, { name: "BuildResource_SecurityContext", taskTemplate: dummyContainerTaskTemplate(command, args), - taskMetadata: dummyContainerTaskMetadata(containerResourceRequirements, nil, false), + taskMetadata: dummyContainerTaskMetadata(containerResourceRequirements, nil, false, ""), expectServiceAccount: securityContextServiceAccount, }, } @@ -321,7 +322,7 @@ func TestContainerTaskExecutor_BuildResource_ExtendedResources(t *testing.T) { t.Run(f.name, func(t *testing.T) { taskTemplate := dummyContainerTaskTemplate([]string{"command"}, []string{"{{.Input}}"}) taskTemplate.ExtendedResources = f.extendedResourcesBase - taskMetadata := dummyContainerTaskMetadata(f.resources, f.extendedResourcesOverride, true) + taskMetadata := dummyContainerTaskMetadata(f.resources, f.extendedResourcesOverride, true, "") taskContext := dummyContainerTaskContext(taskTemplate, taskMetadata) r, err := DefaultPodPlugin.BuildResource(context.TODO(), taskContext) assert.Nil(t, err) @@ -343,11 +344,54 @@ func TestContainerTaskExecutor_BuildResource_ExtendedResources(t *testing.T) { } } +func TestContainerTaskExecutor_BuildResource_ContainerImage(t *testing.T) { + assert.NoError(t, flytek8sConfig.SetK8sPluginConfig(&flytek8sConfig.K8sPluginConfig{})) + + fixtures := []struct { + name string + resources *v1.ResourceRequirements + containerImageOverride string + }{ + { + "without overrides", + &v1.ResourceRequirements{ + Limits: v1.ResourceList{ + flytek8s.ResourceNvidiaGPU: resource.MustParse("1"), + }, + }, + "", + }, + { + "with overrides", + &v1.ResourceRequirements{ + Limits: v1.ResourceList{ + flytek8s.ResourceNvidiaGPU: resource.MustParse("1"), + }, + }, + "test-image", + }, + } + + for _, f := range fixtures { + t.Run(f.name, func(t *testing.T) { + taskTemplate := dummyContainerTaskTemplate([]string{"command"}, []string{"{{.Input}}"}) + taskMetadata := dummyContainerTaskMetadata(f.resources, nil, true, f.containerImageOverride) + taskContext := dummyContainerTaskContext(taskTemplate, taskMetadata) + r, err := DefaultPodPlugin.BuildResource(context.TODO(), taskContext) + assert.Nil(t, err) + assert.NotNil(t, r) + _, ok := r.(*v1.Pod) + assert.True(t, ok) + assert.Equal(t, f.containerImageOverride, r.(*v1.Pod).Spec.Containers[0].Image) + }) + } +} + func TestContainerTaskExecutor_GetTaskStatus(t *testing.T) { command := []string{"command"} args := []string{"{{.Input}}"} taskTemplate := dummyContainerTaskTemplate(command, args) - taskMetadata := dummyContainerTaskMetadata(containerResourceRequirements, nil, true) + taskMetadata := dummyContainerTaskMetadata(containerResourceRequirements, nil, true, "") taskCtx := dummyContainerTaskContext(taskTemplate, taskMetadata) j := &v1.Pod{ @@ -437,7 +481,7 @@ func TestContainerTaskExecutor_GetTaskStatus_InvalidImageName(t *testing.T) { command := []string{"command"} args := []string{"{{.Input}}"} taskTemplate := dummyContainerTaskTemplate(command, args) - taskMetadata := dummyContainerTaskMetadata(containerResourceRequirements, nil, true) + taskMetadata := dummyContainerTaskMetadata(containerResourceRequirements, nil, true, "") taskCtx := dummyContainerTaskContext(taskTemplate, taskMetadata) ctx := context.TODO() diff --git a/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go b/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go index a9848f32763..06166d15fb5 100644 --- a/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go @@ -90,6 +90,7 @@ func dummySidecarTaskMetadata(resources *v1.ResourceRequirements, extendedResour to := &pluginsCoreMock.TaskOverrides{} to.On("GetResources").Return(resources) to.On("GetExtendedResources").Return(extendedResources) + to.On("GetContainerImage").Return("") taskMetadata.On("GetOverrides").Return(to) taskMetadata.On("GetEnvironmentVariables").Return(nil) diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go index 02ed83db142..69f65c19ef7 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go @@ -106,7 +106,7 @@ func dummyRayTaskTemplate(id string, rayJob *plugins.RayJob) *core.TaskTemplate } } -func dummyRayTaskContext(taskTemplate *core.TaskTemplate, resources *corev1.ResourceRequirements, extendedResources *core.ExtendedResources) pluginsCore.TaskExecutionContext { +func dummyRayTaskContext(taskTemplate *core.TaskTemplate, resources *corev1.ResourceRequirements, extendedResources *core.ExtendedResources, containerImage string) pluginsCore.TaskExecutionContext { taskCtx := &mocks.TaskExecutionContext{} inputReader := &pluginIOMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return("/input/prefix") @@ -141,6 +141,7 @@ func dummyRayTaskContext(taskTemplate *core.TaskTemplate, resources *corev1.Reso overrides := &mocks.TaskOverrides{} overrides.OnGetResources().Return(resources) overrides.OnGetExtendedResources().Return(extendedResources) + overrides.OnGetContainerImage().Return(containerImage) taskExecutionMetadata := &mocks.TaskExecutionMetadata{} taskExecutionMetadata.OnGetTaskExecutionID().Return(tID) @@ -175,7 +176,7 @@ func TestBuildResourceRay(t *testing.T) { err := config.SetK8sPluginConfig(&config.K8sPluginConfig{DefaultTolerations: toleration}) assert.Nil(t, err) - RayResource, err := rayJobResourceHandler.BuildResource(context.TODO(), dummyRayTaskContext(taskTemplate, resourceRequirements, nil)) + RayResource, err := rayJobResourceHandler.BuildResource(context.TODO(), dummyRayTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.Nil(t, err) assert.NotNil(t, RayResource) @@ -210,6 +211,63 @@ func TestBuildResourceRay(t *testing.T) { assert.Equal(t, ray.Spec.RayClusterSpec.WorkerGroupSpecs[0].Template.Spec.Tolerations, toleration) } +func TestBuildResourceRayContainerImage(t *testing.T) { + assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{})) + + fixtures := []struct { + name string + resources *corev1.ResourceRequirements + containerImageOverride string + }{ + { + "without overrides", + &corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + flytek8s.ResourceNvidiaGPU: resource.MustParse("1"), + }, + }, + "", + }, + { + "with overrides", + &corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + flytek8s.ResourceNvidiaGPU: resource.MustParse("1"), + }, + }, + "container-image-override", + }, + } + + for _, f := range fixtures { + t.Run(f.name, func(t *testing.T) { + taskTemplate := dummyRayTaskTemplate("id", dummyRayCustomObj()) + taskContext := dummyRayTaskContext(taskTemplate, f.resources, nil, f.containerImageOverride) + rayJobResourceHandler := rayJobResourceHandler{} + r, err := rayJobResourceHandler.BuildResource(context.TODO(), taskContext) + assert.Nil(t, err) + assert.NotNil(t, r) + rayJob, ok := r.(*rayv1alpha1.RayJob) + assert.True(t, ok) + + var expectedContainerImage string + if len(f.containerImageOverride) > 0 { + expectedContainerImage = f.containerImageOverride + } else { + expectedContainerImage = testImage + } + + // Head node + headNodeSpec := rayJob.Spec.RayClusterSpec.HeadGroupSpec.Template.Spec + assert.Equal(t, expectedContainerImage, headNodeSpec.Containers[0].Image) + + // Worker node + workerNodeSpec := rayJob.Spec.RayClusterSpec.WorkerGroupSpecs[0].Template.Spec + assert.Equal(t, expectedContainerImage, workerNodeSpec.Containers[0].Image) + }) + } +} + func TestBuildResourceRayExtendedResources(t *testing.T) { assert.NoError(t, config.SetK8sPluginConfig(&config.K8sPluginConfig{ GpuDeviceNodeLabel: "gpu-node-label", @@ -315,7 +373,7 @@ func TestBuildResourceRayExtendedResources(t *testing.T) { t.Run(p.name, func(t *testing.T) { taskTemplate := dummyRayTaskTemplate("ray-id", dummyRayCustomObj()) taskTemplate.ExtendedResources = p.extendedResourcesBase - taskContext := dummyRayTaskContext(taskTemplate, p.resources, p.extendedResourcesOverride) + taskContext := dummyRayTaskContext(taskTemplate, p.resources, p.extendedResourcesOverride, "") rayJobResourceHandler := rayJobResourceHandler{} r, err := rayJobResourceHandler.BuildResource(context.TODO(), taskContext) assert.Nil(t, err) @@ -374,7 +432,7 @@ func TestDefaultStartParameters(t *testing.T) { err := config.SetK8sPluginConfig(&config.K8sPluginConfig{DefaultTolerations: toleration}) assert.Nil(t, err) - RayResource, err := rayJobResourceHandler.BuildResource(context.TODO(), dummyRayTaskContext(taskTemplate, resourceRequirements, nil)) + RayResource, err := rayJobResourceHandler.BuildResource(context.TODO(), dummyRayTaskContext(taskTemplate, resourceRequirements, nil, "")) assert.Nil(t, err) assert.NotNil(t, RayResource) @@ -582,7 +640,7 @@ func TestInjectLogsSidecar(t *testing.T) { assert.NoError(t, SetConfig(&Config{ LogsSidecar: p.logsSidecarCfg, })) - taskContext := dummyRayTaskContext(&p.taskTemplate, resourceRequirements, nil) + taskContext := dummyRayTaskContext(&p.taskTemplate, resourceRequirements, nil, "") rayJobResourceHandler := rayJobResourceHandler{} r, err := rayJobResourceHandler.BuildResource(context.TODO(), taskContext) assert.Nil(t, err) diff --git a/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go b/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go index 264f9514e97..561901226a2 100644 --- a/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go @@ -385,6 +385,7 @@ func dummySparkTaskContext(taskTemplate *core.TaskTemplate, interruptible bool) overrides.On("GetResources").Return(&corev1.ResourceRequirements{}) // No support for GPUs, and consequently, ExtendedResources on Spark plugin. overrides.On("GetExtendedResources").Return(nil) + overrides.OnGetContainerImage().Return("") taskExecutionMetadata := &mocks.TaskExecutionMetadata{} taskExecutionMetadata.On("GetTaskExecutionID").Return(tID) diff --git a/flyteplugins/tests/end_to_end.go b/flyteplugins/tests/end_to_end.go index 037ae877d96..1a55b52c0c3 100644 --- a/flyteplugins/tests/end_to_end.go +++ b/flyteplugins/tests/end_to_end.go @@ -147,6 +147,7 @@ func RunPluginEndToEndTest(t *testing.T, executor pluginCore.Plugin, template *i Limits: map[v1.ResourceName]resource.Quantity{}, }) overrides.OnGetExtendedResources().Return(&idlCore.ExtendedResources{}) + overrides.OnGetContainerImage().Return("") tMeta := &coreMocks.TaskExecutionMetadata{} tMeta.OnGetTaskExecutionID().Return(tID) diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface.go index 6590aaa04a9..664ebb6767f 100644 --- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface.go +++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface.go @@ -442,6 +442,7 @@ type ExecutableNode interface { GetActiveDeadline() *time.Duration IsInterruptible() *bool GetName() string + GetContainerImage() string } // ExecutableWorkflowStatus is an interface for the Workflow p. This is the mutable portion for a Workflow diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNode.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNode.go index ae1663bba1f..e6a03b7deb3 100644 --- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNode.go +++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/mocks/ExecutableNode.go @@ -154,6 +154,38 @@ func (_m *ExecutableNode) GetConfig() *v1.ConfigMap { return r0 } +type ExecutableNode_GetContainerImage struct { + *mock.Call +} + +func (_m ExecutableNode_GetContainerImage) Return(_a0 string) *ExecutableNode_GetContainerImage { + return &ExecutableNode_GetContainerImage{Call: _m.Call.Return(_a0)} +} + +func (_m *ExecutableNode) OnGetContainerImage() *ExecutableNode_GetContainerImage { + c_call := _m.On("GetContainerImage") + return &ExecutableNode_GetContainerImage{Call: c_call} +} + +func (_m *ExecutableNode) OnGetContainerImageMatch(matchers ...interface{}) *ExecutableNode_GetContainerImage { + c_call := _m.On("GetContainerImage", matchers...) + return &ExecutableNode_GetContainerImage{Call: c_call} +} + +// GetContainerImage provides a mock function with given fields: +func (_m *ExecutableNode) GetContainerImage() 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 ExecutableNode_GetExecutionDeadline struct { *mock.Call } diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes.go index 8a22cae9748..65543570312 100644 --- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes.go +++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes.go @@ -175,6 +175,8 @@ type NodeSpec struct { // The value set to True means task is OK with getting interrupted // +optional Interruptible *bool `json:"interruptible,omitempty"` + + ContainerImage string `json:"containerImage,omitempty"` } func (in *NodeSpec) GetName() string { @@ -273,3 +275,7 @@ func (in *NodeSpec) IsEndNode() bool { func (in *NodeSpec) GetInputBindings() []*Binding { return in.InputBindings } + +func (in *NodeSpec) GetContainerImage() string { + return in.ContainerImage +} diff --git a/flytepropeller/pkg/compiler/transformers/k8s/node.go b/flytepropeller/pkg/compiler/transformers/k8s/node.go index 7120f3ad907..7b5df9b3b59 100644 --- a/flytepropeller/pkg/compiler/transformers/k8s/node.go +++ b/flytepropeller/pkg/compiler/transformers/k8s/node.go @@ -30,6 +30,7 @@ func buildNodeSpec(n *core.Node, tasks []*core.CompiledTask, errs errors.Compile var task *core.TaskTemplate var resources *core.Resources var extendedResources *v1alpha1.ExtendedResources + var containerImage string if n.GetTaskNode() != nil { taskID := n.GetTaskNode().GetReferenceId().String() // TODO: Use task index for quick lookup @@ -55,6 +56,10 @@ func buildNodeSpec(n *core.Node, tasks []*core.CompiledTask, errs errors.Compile ExtendedResources: overrides.GetExtendedResources(), } } + + if len(overrides.GetContainerImage()) > 0 { + containerImage = overrides.GetContainerImage() + } } } @@ -96,6 +101,7 @@ func buildNodeSpec(n *core.Node, tasks []*core.CompiledTask, errs errors.Compile InputBindings: toBindingValueArray(n.GetInputs()), ActiveDeadline: activeDeadline, Interruptible: interruptible, + ContainerImage: containerImage, } switch v := n.GetTarget().(type) { diff --git a/flytepropeller/pkg/compiler/transformers/k8s/node_test.go b/flytepropeller/pkg/compiler/transformers/k8s/node_test.go index f2d6c79494f..ff1f263b6ea 100644 --- a/flytepropeller/pkg/compiler/transformers/k8s/node_test.go +++ b/flytepropeller/pkg/compiler/transformers/k8s/node_test.go @@ -140,6 +140,24 @@ func TestBuildNodeSpec(t *testing.T) { assert.Equal(t, expectedGpuDevice, spec.GetExtendedResources().GetGpuAccelerator().GetDevice()) }) + t.Run("node with container image override", func(t *testing.T) { + expectedContainerImage := "test-image:latest" + n.Node.Target = &core.Node_TaskNode{ + TaskNode: &core.TaskNode{ + Reference: &core.TaskNode_ReferenceId{ + ReferenceId: &core.Identifier{Name: "ref_2"}, + }, + Overrides: &core.TaskNodeOverrides{ + ContainerImage: expectedContainerImage, + }, + }, + } + + spec := mustBuild(t, n, 1, errs.NewScope()) + assert.NotNil(t, spec.GetContainerImage()) + assert.Equal(t, expectedContainerImage, spec.GetContainerImage()) + }) + t.Run("LaunchPlanRef", func(t *testing.T) { n.Node.Target = &core.Node_WorkflowNode{ WorkflowNode: &core.WorkflowNode{ From e6beddd0afed7858fac366996f23c99c7dc54468 Mon Sep 17 00:00:00 2001 From: Chi-Sheng Liu Date: Wed, 21 Feb 2024 13:43:37 +0800 Subject: [PATCH 032/107] feat(config): Increase default memory and CPU resource (#4907) Signed-off-by: Chi-Sheng Liu --- flyte-single-binary-local.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/flyte-single-binary-local.yaml b/flyte-single-binary-local.yaml index c3694247955..bd8964da35b 100644 --- a/flyte-single-binary-local.yaml +++ b/flyte-single-binary-local.yaml @@ -85,3 +85,11 @@ storage: access_key_id: minio secret_key: miniostorage container: my-s3-bucket + +task_resources: + defaults: + cpu: 500m + memory: 500Mi + limits: + cpu: 800m + memory: 800Mi From 22b0005b4d889fce7ac9f201e227f8654f3bbeac Mon Sep 17 00:00:00 2001 From: Neil <150836163+neilisaur@users.noreply.github.com> Date: Tue, 20 Feb 2024 22:48:25 -0700 Subject: [PATCH 033/107] Allow recursive namespace templating (#4884) Signed-off-by: Neil Stout --- .../pluginmachinery/core/template/template.go | 4 +++ .../core/template/template_test.go | 35 +++++++++++++++++++ .../flytek8s/container_helper_test.go | 2 ++ .../plugins/array/awsbatch/launcher_test.go | 1 + .../tasks/plugins/webapi/athena/utils_test.go | 1 + 5 files changed, 43 insertions(+) diff --git a/flyteplugins/go/tasks/pluginmachinery/core/template/template.go b/flyteplugins/go/tasks/pluginmachinery/core/template/template.go index 385abf09f4a..82b306ffbe8 100644 --- a/flyteplugins/go/tasks/pluginmachinery/core/template/template.go +++ b/flyteplugins/go/tasks/pluginmachinery/core/template/template.go @@ -47,6 +47,7 @@ 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*}}`) type ErrorCollection struct { Errors []error @@ -127,6 +128,9 @@ func render(ctx context.Context, inputTemplate string, params Parameters, perRet val = taskTemplateRegex.ReplaceAllString(val, p.String()) } + // Replace namespace last, in case it was embedded in other templates + val = namespaceRegex.ReplaceAllString(val, params.TaskExecMetadata.GetNamespace()) + inputs, err := params.Inputs.Get(ctx) if err != nil { return val, errors.Wrapf(err, "unable to read inputs") diff --git a/flyteplugins/go/tasks/pluginmachinery/core/template/template_test.go b/flyteplugins/go/tasks/pluginmachinery/core/template/template_test.go index ba2f5f6ae9d..956ec33cfdf 100644 --- a/flyteplugins/go/tasks/pluginmachinery/core/template/template_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/core/template/template_test.go @@ -77,6 +77,7 @@ func TestReplaceTemplateCommandArgs(t *testing.T) { taskExecutionID.On("GetGeneratedName").Return("per_retry_unique_key") taskMetadata := &pluginsCoreMocks.TaskExecutionMetadata{} taskMetadata.On("GetTaskExecutionID").Return(taskExecutionID) + taskMetadata.On("GetNamespace").Return("test-namespace") t.Run("empty cmd", func(t *testing.T) { actual, err := Render(context.TODO(), []string{}, Parameters{}) @@ -572,6 +573,38 @@ func TestReplaceTemplateCommandArgs(t *testing.T) { "--checkpoint=s3://new-checkpoint/prefix", }, actual) }) + + t.Run("namespace embedded replacement", func(t *testing.T) { + params := Parameters{ + TaskExecMetadata: taskMetadata, + Inputs: in, + OutputPath: dummyOutputPaths{ + outputPath: out.outputPath, + rawOutputDataPrefix: "s3://raw-data/prefix/{{ .Namespace }}", + prevCheckpointPath: "s3://prev-checkpoint/prefix/{{ .Namespace}}", + checkpointPath: "s3://new-checkpoint/prefix/{{.namespace}}", + }, + } + actual, err := Render(context.TODO(), []string{ + "hello", + "world", + "{{ .Input }}", + "{{ .OutputPrefix }}", + "--prev={{ .prevcheckpointprefix }}", + "--checkpoint={{ .checkpointoutputprefix }}", + "--raw-data-output={{ .rawoutputdataprefix }}", + }, params) + assert.NoError(t, err) + assert.Equal(t, []string{ + "hello", + "world", + "input/blah", + "output/blah", + "--prev=s3://prev-checkpoint/prefix/test-namespace", + "--checkpoint=s3://new-checkpoint/prefix/test-namespace", + "--raw-data-output=s3://raw-data/prefix/test-namespace", + }, actual) + }) } func TestReplaceTemplateCommandArgsSpecialChars(t *testing.T) { @@ -588,6 +621,7 @@ func TestReplaceTemplateCommandArgsSpecialChars(t *testing.T) { taskExecutionID.On("GetGeneratedName").Return("per-retry-unique-key") taskMetadata := &pluginsCoreMocks.TaskExecutionMetadata{} taskMetadata.On("GetTaskExecutionID").Return(taskExecutionID) + taskMetadata.On("GetNamespace").Return("my-namespace") params.TaskExecMetadata = taskMetadata actual, err := Render(context.TODO(), []string{ @@ -611,6 +645,7 @@ func TestReplaceTemplateCommandArgsSpecialChars(t *testing.T) { taskExecutionID.On("GetGeneratedName").Return("33 per retry-unique-key") taskMetadata := &pluginsCoreMocks.TaskExecutionMetadata{} taskMetadata.On("GetTaskExecutionID").Return(taskExecutionID) + taskMetadata.On("GetNamespace").Return("my-namespace") params.TaskExecMetadata = taskMetadata testString := "doesn't start with a number" diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go index f07db9417de..d48b99ab39a 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go @@ -385,6 +385,7 @@ func TestToK8sContainer(t *testing.T) { mockTaskExecMetadata.OnGetEnvironmentVariables().Return(map[string]string{ "foo": "bar", }) + mockTaskExecMetadata.OnGetNamespace().Return("my-namespace") tCtx := &mocks.TaskExecutionContext{} tCtx.OnTaskExecutionMetadata().Return(&mockTaskExecMetadata) @@ -457,6 +458,7 @@ func getTemplateParametersForTest(resourceRequirements, platformResources *v1.Re mockTaskExecMetadata.OnGetOverrides().Return(&mockOverrides) mockTaskExecMetadata.OnGetPlatformResources().Return(platformResources) mockTaskExecMetadata.OnGetEnvironmentVariables().Return(nil) + mockTaskExecMetadata.OnGetNamespace().Return("my-namespace") mockInputReader := mocks2.InputReader{} mockInputPath := storage.DataReference("s3://input/path") diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/launcher_test.go b/flyteplugins/go/tasks/plugins/array/awsbatch/launcher_test.go index a1493f741b3..7a2d88cabb6 100644 --- a/flyteplugins/go/tasks/plugins/array/awsbatch/launcher_test.go +++ b/flyteplugins/go/tasks/plugins/array/awsbatch/launcher_test.go @@ -68,6 +68,7 @@ func TestLaunchSubTasks(t *testing.T) { tMeta.OnGetTaskExecutionID().Return(tID) tMeta.OnGetOverrides().Return(overrides) tMeta.OnGetPlatformResources().Return(&v1.ResourceRequirements{}) + tMeta.OnGetNamespace().Return("my-namespace") ow := &mocks3.OutputWriter{} ow.OnGetOutputPrefixPath().Return("/prefix/") diff --git a/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go b/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go index da490838fe4..eabbfaf1fa1 100644 --- a/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go @@ -177,6 +177,7 @@ func Test_ExtractQueryInfo(t *testing.T) { tID := &mocks2.TaskExecutionID{} tMeta.OnGetTaskExecutionID().Return(tID) + tMeta.OnGetNamespace().Return("my-namespace") tID.OnGetGeneratedName().Return("generated-name") From bb285d69c17c8d459eb5417a008d2f3058d4bc22 Mon Sep 17 00:00:00 2001 From: Yee Hing Tong Date: Wed, 21 Feb 2024 12:41:33 -0800 Subject: [PATCH 034/107] Remove eph storage (#4929) * remove ephemeral storage from flyte core helm chart values Signed-off-by: Yee Hing Tong * make helm Signed-off-by: Yee Hing Tong --------- Signed-off-by: Yee Hing Tong --- charts/flyte-core/README.md | 4 ++-- charts/flyte-core/values.yaml | 2 -- deployment/eks/flyte_aws_scheduler_helm_generated.yaml | 4 +--- deployment/eks/flyte_helm_controlplane_generated.yaml | 6 ++---- deployment/eks/flyte_helm_generated.yaml | 6 ++---- deployment/gcp/flyte_helm_controlplane_generated.yaml | 6 ++---- deployment/gcp/flyte_helm_generated.yaml | 6 ++---- deployment/sandbox/flyte_helm_generated.yaml | 6 ++---- 8 files changed, 13 insertions(+), 27 deletions(-) diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index e287e67633e..460151fcbb2 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -115,8 +115,8 @@ helm install gateway bitnami/contour -n flyte | configmap.schedulerConfig.scheduler.profilerPort | int | `10254` | | | configmap.task_logs | object | `{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":false}}}` | Section that configures how the Task logs are displayed on the UI. This has to be changed based on your actual logging provider. Refer to [structure](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/logs#LogConfig) to understand how to configure various logging engines | | configmap.task_logs.plugins.logs.cloudwatch-enabled | bool | `false` | One option is to enable cloudwatch logging for EKS, update the region and log group accordingly | -| configmap.task_resource_defaults | object | `{"task_resources":{"defaults":{"cpu":"100m","ephemeralStorage":"500Mi","memory":"500Mi"},"limits":{"cpu":2,"ephemeralStorage":"20Mi","gpu":1,"memory":"1Gi"}}}` | Task default resources configuration Refer to the full [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#TaskResourceConfiguration). | -| configmap.task_resource_defaults.task_resources | object | `{"defaults":{"cpu":"100m","ephemeralStorage":"500Mi","memory":"500Mi"},"limits":{"cpu":2,"ephemeralStorage":"20Mi","gpu":1,"memory":"1Gi"}}` | Task default resources parameters | +| configmap.task_resource_defaults | object | `{"task_resources":{"defaults":{"cpu":"100m","memory":"500Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi"}}}` | Task default resources configuration Refer to the full [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#TaskResourceConfiguration). | +| configmap.task_resource_defaults.task_resources | object | `{"defaults":{"cpu":"100m","memory":"500Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi"}}` | Task default resources parameters | | daskoperator | object | `{"enabled":false}` | Optional: Dask Plugin using the Dask Operator | | daskoperator.enabled | bool | `false` | - enable or disable the dask operator deployment installation | | databricks | object | `{"enabled":false,"plugin_config":{"plugins":{"databricks":{"databricksInstance":"dbc-a53b7a3c-614c","entrypointFile":"dbfs:///FileStore/tables/entrypoint.py"}}}}` | Optional: Databricks Plugin allows us to run the spark job on the Databricks platform. | diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index 4f6d9d12bc7..109710edef7 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -692,11 +692,9 @@ configmap: defaults: cpu: 100m memory: 500Mi - ephemeralStorage: 500Mi limits: cpu: 2 memory: 1Gi - ephemeralStorage: 20Mi gpu: 1 # -- Admin Client configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/subworkflow/launchplan#AdminConfig) diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index 18c60208b86..324828a9663 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -192,12 +192,10 @@ data: task_resources: defaults: cpu: 1000m - ephemeralStorage: 500Mi memory: 1000Mi storage: 1000Mi limits: cpu: 2 - ephemeralStorage: 20Mi gpu: 1 memory: 1Gi storage: 2000Mi @@ -849,7 +847,7 @@ spec: template: metadata: annotations: - configChecksum: "85f2694a4138443026b87878dbbc5f1e9f52aa54eb87ef4c64117d1d91e1a7f" + configChecksum: "2b5c85969f2bd85bb51a084f9fd72c20c3aca94be99e53cb4c4e9f78e77ebc5" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml index 520e7f2a038..166446ce796 100644 --- a/deployment/eks/flyte_helm_controlplane_generated.yaml +++ b/deployment/eks/flyte_helm_controlplane_generated.yaml @@ -173,12 +173,10 @@ data: task_resources: defaults: cpu: 1000m - ephemeralStorage: 500Mi memory: 1000Mi storage: 1000Mi limits: cpu: 2 - ephemeralStorage: 20Mi gpu: 1 memory: 1Gi storage: 2000Mi @@ -555,7 +553,7 @@ spec: template: metadata: annotations: - configChecksum: "61fa8a4eebe7e96a3e25b0b2c4baaf7d6af84924167f57e569632fdd282b442" + configChecksum: "053b20ebc40227f6ed8ddc61f5997ee7997c604158f773779f20ec61af11a2f" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte @@ -975,7 +973,7 @@ spec: template: metadata: annotations: - configChecksum: "61fa8a4eebe7e96a3e25b0b2c4baaf7d6af84924167f57e569632fdd282b442" + configChecksum: "053b20ebc40227f6ed8ddc61f5997ee7997c604158f773779f20ec61af11a2f" labels: app.kubernetes.io/name: flytescheduler app.kubernetes.io/instance: flyte diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index ab009db4cb6..94743f22aa9 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -204,12 +204,10 @@ data: task_resources: defaults: cpu: 1000m - ephemeralStorage: 500Mi memory: 1000Mi storage: 1000Mi limits: cpu: 2 - ephemeralStorage: 20Mi gpu: 1 memory: 1Gi storage: 2000Mi @@ -880,7 +878,7 @@ spec: template: metadata: annotations: - configChecksum: "61fa8a4eebe7e96a3e25b0b2c4baaf7d6af84924167f57e569632fdd282b442" + configChecksum: "053b20ebc40227f6ed8ddc61f5997ee7997c604158f773779f20ec61af11a2f" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte @@ -1300,7 +1298,7 @@ spec: template: metadata: annotations: - configChecksum: "61fa8a4eebe7e96a3e25b0b2c4baaf7d6af84924167f57e569632fdd282b442" + configChecksum: "053b20ebc40227f6ed8ddc61f5997ee7997c604158f773779f20ec61af11a2f" labels: app.kubernetes.io/name: flytescheduler app.kubernetes.io/instance: flyte diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml index 3ede3cd5bea..38dfe201ddb 100644 --- a/deployment/gcp/flyte_helm_controlplane_generated.yaml +++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml @@ -178,12 +178,10 @@ data: task_resources: defaults: cpu: 500m - ephemeralStorage: 500Mi memory: 500Mi storage: 500Mi limits: cpu: 2 - ephemeralStorage: 20Mi gpu: 1 memory: 1Gi storage: 2000Mi @@ -570,7 +568,7 @@ spec: template: metadata: annotations: - configChecksum: "c7d43aa7ff4bf67124616d00a83d3c45926ea5ca36bdebdfac1cbcd0e465270" + configChecksum: "2e169a911a8234dd42d06ca0887279093f4ed36033d0543749ce126b26b50f3" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte @@ -990,7 +988,7 @@ spec: template: metadata: annotations: - configChecksum: "c7d43aa7ff4bf67124616d00a83d3c45926ea5ca36bdebdfac1cbcd0e465270" + configChecksum: "2e169a911a8234dd42d06ca0887279093f4ed36033d0543749ce126b26b50f3" labels: app.kubernetes.io/name: flytescheduler app.kubernetes.io/instance: flyte diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index a3ead16e951..659babf8389 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -209,12 +209,10 @@ data: task_resources: defaults: cpu: 500m - ephemeralStorage: 500Mi memory: 500Mi storage: 500Mi limits: cpu: 2 - ephemeralStorage: 20Mi gpu: 1 memory: 1Gi storage: 2000Mi @@ -903,7 +901,7 @@ spec: template: metadata: annotations: - configChecksum: "c7d43aa7ff4bf67124616d00a83d3c45926ea5ca36bdebdfac1cbcd0e465270" + configChecksum: "2e169a911a8234dd42d06ca0887279093f4ed36033d0543749ce126b26b50f3" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte @@ -1323,7 +1321,7 @@ spec: template: metadata: annotations: - configChecksum: "c7d43aa7ff4bf67124616d00a83d3c45926ea5ca36bdebdfac1cbcd0e465270" + configChecksum: "2e169a911a8234dd42d06ca0887279093f4ed36033d0543749ce126b26b50f3" labels: app.kubernetes.io/name: flytescheduler app.kubernetes.io/instance: flyte diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index c1145fb7247..7417c9bdf27 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -334,12 +334,10 @@ data: task_resources: defaults: cpu: 100m - ephemeralStorage: 500Mi memory: 200Mi storage: 5Mi limits: cpu: 2 - ephemeralStorage: 20Mi gpu: 1 memory: 1Gi storage: 20Mi @@ -6686,7 +6684,7 @@ spec: template: metadata: annotations: - configChecksum: "82d6ffa2a2dd83eb11c491a95af43fdede659d6b5b400b6edcd88291a28c4f4" + configChecksum: "45f0232531c0d1494809cf83387a95b2fc802019ea095de7a24ccd4f8de86ec" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte @@ -7077,7 +7075,7 @@ spec: template: metadata: annotations: - configChecksum: "82d6ffa2a2dd83eb11c491a95af43fdede659d6b5b400b6edcd88291a28c4f4" + configChecksum: "45f0232531c0d1494809cf83387a95b2fc802019ea095de7a24ccd4f8de86ec" labels: app.kubernetes.io/name: flytescheduler app.kubernetes.io/instance: flyte From e4d19260c667da585198b4826999ee00fbe67e82 Mon Sep 17 00:00:00 2001 From: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> Date: Thu, 22 Feb 2024 16:07:48 +0100 Subject: [PATCH 035/107] Copy user guide to flyte repo (#4887) * Move user guide to flyte repo Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * fix links etc Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * fix urls to match titles Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * fix toctree Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * fix toctree Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * fix more links Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * fix links Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> * fix link Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> --------- Signed-off-by: Peeter Piegaze <1153481+ppiegaze@users.noreply.github.com> --- CHANGELOG/CHANGELOG-v0.17.0.md | 2 +- CHANGELOG/CHANGELOG-v0.5.0.md | 2 +- CHANGELOG/CHANGELOG-v1.1.0.md | 2 +- CHANGELOG/CHANGELOG-v1.10.0.md | 2 +- CHANGELOG/CHANGELOG-v1.2.0.md | 2 +- CHANGELOG/CHANGELOG-v1.5.0.md | 4 +- CHANGELOG/CHANGELOG-v1.9.0.md | 10 +- README.md | 26 +- docs/community/contribute.rst | 6 +- docs/concepts/tasks.rst | 30 +- docs/conf.py | 26 +- .../configuration/customizable_resources.rst | 2 +- .../configuration/notifications.rst | 2 +- docs/deployment/plugins/aws/batch.rst | 16 +- docs/index.md | 4 +- .../chaining_flyte_entities.md | 112 ++++ .../advanced_composition/conditionals.md | 323 ++++++++++++ .../advanced_composition/decorating_tasks.md | 152 ++++++ .../decorating_workflows.md | 180 +++++++ .../advanced_composition/dynamic_workflows.md | 292 +++++++++++ .../advanced_composition/eager_workflows.md | 495 ++++++++++++++++++ docs/user_guide/advanced_composition/index.md | 24 + .../intratask_checkpoints.md | 137 +++++ .../advanced_composition/map_tasks.md | 278 ++++++++++ .../advanced_composition/subworkflows.md | 182 +++++++ .../waiting_for_external_inputs.md | 314 +++++++++++ .../basics/documenting_workflows.md | 157 ++++++ docs/user_guide/basics/hello_world.md | 75 +++ .../user_guide/basics/imperative_workflows.md | 119 +++++ docs/user_guide/basics/index.md | 25 + docs/user_guide/basics/launch_plans.md | 116 ++++ docs/user_guide/basics/named_outputs.md | 116 ++++ docs/user_guide/basics/shell_tasks.md | 145 +++++ docs/user_guide/basics/tasks.md | 108 ++++ docs/user_guide/basics/workflows.md | 151 ++++++ .../customizing_dependencies/imagespec.md | 162 ++++++ .../customizing_dependencies/index.md | 17 + .../multiple_images_in_a_workflow.md | 110 ++++ .../per-language/haskell/Dockerfile | 7 + .../haskell/calculate-ellipse-area.hs | 19 + .../per-language/julia/Dockerfile | 5 + .../julia/calculate-ellipse-area.jl | 31 ++ .../per-language/python/Dockerfile | 5 + .../python/calculate-ellipse-area.py | 29 + .../per-language/r/Dockerfile | 5 + .../per-language/r/calculate-ellipse-area.R | 13 + .../per-language/r/install-readr.R | 1 + .../per-language/shell/Dockerfile | 6 + .../shell/calculate-ellipse-area.sh | 5 + .../raw_containers.md | 227 ++++++++ .../data_types_and_io/accessing_attributes.md | 176 +++++++ .../user_guide/data_types_and_io/dataclass.md | 172 ++++++ .../user_guide/data_types_and_io/enum_type.md | 100 ++++ .../data_types_and_io/flytedirectory.md | 199 +++++++ .../user_guide/data_types_and_io/flytefile.md | 168 ++++++ docs/user_guide/data_types_and_io/index.md | 152 ++++++ .../data_types_and_io/pickle_type.md | 131 +++++ .../data_types_and_io/pytorch_type.md | 219 ++++++++ .../data_types_and_io/structureddataset.md | 365 +++++++++++++ .../development_lifecycle/agents.md | 234 +++++++++ .../cache_serializing.md | 74 +++ .../development_lifecycle/caching.md | 240 +++++++++ .../creating_a_new_project.md | 28 + .../debugging_executions.md | 46 ++ .../user_guide/development_lifecycle/decks.md | 316 +++++++++++ .../user_guide/development_lifecycle/index.md | 22 + .../inspecting_executions.md | 83 +++ .../development_lifecycle/private_images.md | 72 +++ .../running_launch_plans.md | 84 +++ .../development_lifecycle/running_tasks.md | 98 ++++ .../running_workflows.md | 59 +++ docs/user_guide/environment_setup.md | 245 +++++++++ docs/user_guide/extending/backend_plugins.md | 91 ++++ .../extending/container_interface.md | 81 +++ docs/user_guide/extending/custom_types.md | 195 +++++++ docs/user_guide/extending/index.md | 218 ++++++++ .../prebuilt_container_task_plugins.md | 105 ++++ .../extending/user_container_task_plugins.md | 164 ++++++ docs/user_guide/index.md | 72 +++ .../configuring_access_to_gpus.md | 53 ++ .../configuring_logging_links_in_the_ui.md | 138 +++++ .../customizing_task_resources.md | 181 +++++++ docs/user_guide/productionizing/index.md | 24 + .../productionizing/notifications.md | 225 ++++++++ .../productionizing/reference_launch_plans.md | 88 ++++ .../productionizing/reference_tasks.md | 89 ++++ docs/user_guide/productionizing/schedules.md | 227 ++++++++ docs/user_guide/productionizing/secrets.md | 447 ++++++++++++++++ .../productionizing/spot_instances.md | 92 ++++ .../workflow_labels_and_annotations.md | 75 +++ docs/user_guide/testing/index.md | 16 + docs/user_guide/testing/mocking_tasks.md | 101 ++++ .../1893-caching-of-offloaded-objects.md | 2 +- .../2633-eviction-of-cached-task-outputs.md | 2 +- 94 files changed, 10188 insertions(+), 60 deletions(-) create mode 100644 docs/user_guide/advanced_composition/chaining_flyte_entities.md create mode 100644 docs/user_guide/advanced_composition/conditionals.md create mode 100644 docs/user_guide/advanced_composition/decorating_tasks.md create mode 100644 docs/user_guide/advanced_composition/decorating_workflows.md create mode 100644 docs/user_guide/advanced_composition/dynamic_workflows.md create mode 100644 docs/user_guide/advanced_composition/eager_workflows.md create mode 100644 docs/user_guide/advanced_composition/index.md create mode 100644 docs/user_guide/advanced_composition/intratask_checkpoints.md create mode 100644 docs/user_guide/advanced_composition/map_tasks.md create mode 100644 docs/user_guide/advanced_composition/subworkflows.md create mode 100644 docs/user_guide/advanced_composition/waiting_for_external_inputs.md create mode 100644 docs/user_guide/basics/documenting_workflows.md create mode 100644 docs/user_guide/basics/hello_world.md create mode 100644 docs/user_guide/basics/imperative_workflows.md create mode 100644 docs/user_guide/basics/index.md create mode 100644 docs/user_guide/basics/launch_plans.md create mode 100644 docs/user_guide/basics/named_outputs.md create mode 100644 docs/user_guide/basics/shell_tasks.md create mode 100644 docs/user_guide/basics/tasks.md create mode 100644 docs/user_guide/basics/workflows.md create mode 100644 docs/user_guide/customizing_dependencies/imagespec.md create mode 100644 docs/user_guide/customizing_dependencies/index.md create mode 100644 docs/user_guide/customizing_dependencies/multiple_images_in_a_workflow.md create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/haskell/Dockerfile create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/haskell/calculate-ellipse-area.hs create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/julia/Dockerfile create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/julia/calculate-ellipse-area.jl create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/python/Dockerfile create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/python/calculate-ellipse-area.py create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/Dockerfile create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/calculate-ellipse-area.R create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/install-readr.R create mode 100644 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/shell/Dockerfile create mode 100755 docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/shell/calculate-ellipse-area.sh create mode 100644 docs/user_guide/customizing_dependencies/raw_containers.md create mode 100644 docs/user_guide/data_types_and_io/accessing_attributes.md create mode 100644 docs/user_guide/data_types_and_io/dataclass.md create mode 100644 docs/user_guide/data_types_and_io/enum_type.md create mode 100644 docs/user_guide/data_types_and_io/flytedirectory.md create mode 100644 docs/user_guide/data_types_and_io/flytefile.md create mode 100644 docs/user_guide/data_types_and_io/index.md create mode 100644 docs/user_guide/data_types_and_io/pickle_type.md create mode 100644 docs/user_guide/data_types_and_io/pytorch_type.md create mode 100644 docs/user_guide/data_types_and_io/structureddataset.md create mode 100644 docs/user_guide/development_lifecycle/agents.md create mode 100644 docs/user_guide/development_lifecycle/cache_serializing.md create mode 100644 docs/user_guide/development_lifecycle/caching.md create mode 100644 docs/user_guide/development_lifecycle/creating_a_new_project.md create mode 100644 docs/user_guide/development_lifecycle/debugging_executions.md create mode 100644 docs/user_guide/development_lifecycle/decks.md create mode 100644 docs/user_guide/development_lifecycle/index.md create mode 100644 docs/user_guide/development_lifecycle/inspecting_executions.md create mode 100644 docs/user_guide/development_lifecycle/private_images.md create mode 100644 docs/user_guide/development_lifecycle/running_launch_plans.md create mode 100644 docs/user_guide/development_lifecycle/running_tasks.md create mode 100644 docs/user_guide/development_lifecycle/running_workflows.md create mode 100644 docs/user_guide/environment_setup.md create mode 100644 docs/user_guide/extending/backend_plugins.md create mode 100644 docs/user_guide/extending/container_interface.md create mode 100644 docs/user_guide/extending/custom_types.md create mode 100644 docs/user_guide/extending/index.md create mode 100644 docs/user_guide/extending/prebuilt_container_task_plugins.md create mode 100644 docs/user_guide/extending/user_container_task_plugins.md create mode 100644 docs/user_guide/index.md create mode 100644 docs/user_guide/productionizing/configuring_access_to_gpus.md create mode 100644 docs/user_guide/productionizing/configuring_logging_links_in_the_ui.md create mode 100644 docs/user_guide/productionizing/customizing_task_resources.md create mode 100644 docs/user_guide/productionizing/index.md create mode 100644 docs/user_guide/productionizing/notifications.md create mode 100644 docs/user_guide/productionizing/reference_launch_plans.md create mode 100644 docs/user_guide/productionizing/reference_tasks.md create mode 100644 docs/user_guide/productionizing/schedules.md create mode 100644 docs/user_guide/productionizing/secrets.md create mode 100644 docs/user_guide/productionizing/spot_instances.md create mode 100644 docs/user_guide/productionizing/workflow_labels_and_annotations.md create mode 100644 docs/user_guide/testing/index.md create mode 100644 docs/user_guide/testing/mocking_tasks.md diff --git a/CHANGELOG/CHANGELOG-v0.17.0.md b/CHANGELOG/CHANGELOG-v0.17.0.md index 2304834992e..68c83e8479b 100644 --- a/CHANGELOG/CHANGELOG-v0.17.0.md +++ b/CHANGELOG/CHANGELOG-v0.17.0.md @@ -10,7 +10,7 @@ 1. Great Expectations Integration ([docs](https://docs.flyte.org/en/latest/flytesnacks/examples/greatexpectations_plugin/index.html)). 1. Access to durable blob stores (AWS/GCS/etc) are now pluggable. 1. Local task execution has been updated to also trigger the type engine. -1. Tasks that have `cache=True` should now be cached when running locally as well ([docs](https://docs.flyte.org/en/latest/flytesnacks/examples/development_lifecycle/task_cache.html#how-does-local-caching-work)). +1. Tasks that have `cache=True` should now be cached when running locally as well ([docs](https://docs.flyte.org/en/latest/user_guide/development_lifecycle/caching.html#how-does-local-caching-work)). Please see the [flytekit release](https://github.com/flyteorg/flytekit/releases/tag/v0.22.0) for the full list and more details. diff --git a/CHANGELOG/CHANGELOG-v0.5.0.md b/CHANGELOG/CHANGELOG-v0.5.0.md index 20382f7050b..87a4831f7f0 100644 --- a/CHANGELOG/CHANGELOG-v0.5.0.md +++ b/CHANGELOG/CHANGELOG-v0.5.0.md @@ -6,7 +6,7 @@ - Enable CI system to run on forks. ## Core Platform -- [Single Task Execution](https://docs.flyte.org/en/latest/flytesnacks/examples/development_lifecycle/remote_task.html) to enable registering and launching tasks outside the scope of a workflow to enable faster iteration and a more intuitive development workflow. +- [Single Task Execution](https://docs.flyte.org/en/latest/user_guide/development_lifecycle/running_tasks.html) to enable registering and launching tasks outside the scope of a workflow to enable faster iteration and a more intuitive development workflow. - [Run to completion](https://docs.flyte.org/en/latest/protos/docs/core/core.html#ref-flyteidl-core-workflowmetadata-onfailurepolicy) to enable workflows to continue executing even if one or more branches fail. - Fixed retries for dynamically yielded nodes. - PreAlpha Support for Raw container with FlyteCoPilot. (docs coming soon). [Sample Notebooks](https://github.com/lyft/flytekit/blob/master/sample-notebooks/raw-container-shell.ipynb). This makes it possible to run workflows with arbitrary containers diff --git a/CHANGELOG/CHANGELOG-v1.1.0.md b/CHANGELOG/CHANGELOG-v1.1.0.md index ebcee3739aa..92362709656 100644 --- a/CHANGELOG/CHANGELOG-v1.1.0.md +++ b/CHANGELOG/CHANGELOG-v1.1.0.md @@ -4,7 +4,7 @@ ### User Improvements Support for [Optional types](https://github.com/flyteorg/flyte/issues/2426). With the inclusion of Union types in flytekit, we can now support optional types. -[Flyte Deck](https://github.com/flyteorg/flyte/issues/2175) is now available. Please take a look at the [documentation](https://docs.flyte.org/en/latest/flytesnacks/examples/development_lifecycle/decks.html) and also the [OSS presentation](https://www.youtube.com/watch?v=KqyBYIaAZ7c) that was done a few weeks back. +[Flyte Deck](https://github.com/flyteorg/flyte/issues/2175) is now available. Please take a look at the [documentation](https://docs.flyte.org/en/latest/user_guide/development_lifecycle/decks.html) and also the [OSS presentation](https://www.youtube.com/watch?v=KqyBYIaAZ7c) that was done a few weeks back. ### Backend Improvements diff --git a/CHANGELOG/CHANGELOG-v1.10.0.md b/CHANGELOG/CHANGELOG-v1.10.0.md index 48d298ccf73..7791a6fd203 100644 --- a/CHANGELOG/CHANGELOG-v1.10.0.md +++ b/CHANGELOG/CHANGELOG-v1.10.0.md @@ -8,7 +8,7 @@ Programmatically consuming inputs and outputs using flyteremote became a lot eas ![Usage snippet](./images/v1.10.0-flyteconsole-programmatic-access.png) -You'll now be able to use offloaded types in [eager workflows](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/eager_workflows.html). +You'll now be able to use offloaded types in [eager workflows](https://docs.flyte.org/en/latest/user_guide/advanced_composition/eager_workflows.html). More ergonomic improvements to [pyflyte](https://docs.flyte.org/en/latest/api/flytekit/pyflyte.html), including the inclusion of a progress bar, the ability to activate launchplans, and the ability to interact with gate nodes in local executions. diff --git a/CHANGELOG/CHANGELOG-v1.2.0.md b/CHANGELOG/CHANGELOG-v1.2.0.md index 00a3d8c735f..d83bfa4f289 100644 --- a/CHANGELOG/CHANGELOG-v1.2.0.md +++ b/CHANGELOG/CHANGELOG-v1.2.0.md @@ -18,7 +18,7 @@ - dbt plugin (https://github.com/flyteorg/flyte/issues/2202) - cache overriding behavior is now open to all types (https://github.com/flyteorg/flyte/issues/2912) - Bug: Fallback to pickling in the case of unknown types used Unions (https://github.com/flyteorg/flyte/issues/2823) -- [pyflyte run](https://docs.flyte.org/en/latest/api/flytekit/design/clis.html#pyflyte-run) now supports [imperative workflows](https://docs.flyte.org/en/latest/flytesnacks/examples/basics/imperative_workflow.html) +- [pyflyte run](https://docs.flyte.org/en/latest/api/flytekit/design/clis.html#pyflyte-run) now supports [imperative workflows](https://docs.flyte.org/en/latest/user_guide/basics/imperative_workflows.html) - Newlines are now stripped from client secrets (https://github.com/flyteorg/flytekit/pull/1163) - Ensure repeatability in the generation of cache keys in the case of dictionaries (https://github.com/flyteorg/flytekit/pull/1126) - Support for multiple images in the yaml config file (https://github.com/flyteorg/flytekit/pull/1106) diff --git a/CHANGELOG/CHANGELOG-v1.5.0.md b/CHANGELOG/CHANGELOG-v1.5.0.md index a711e388351..1cd809c8677 100644 --- a/CHANGELOG/CHANGELOG-v1.5.0.md +++ b/CHANGELOG/CHANGELOG-v1.5.0.md @@ -63,7 +63,7 @@ def wf(a: int) -> str: Notice how calls to `t1_fixed_b` do not need to specify the `b` parameter. -This also works for [Map Tasks](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/map_task.html) in a limited capacity. For example: +This also works for [Map Tasks](https://docs.flyte.org/en/latest/user_guide/advanced_composition/map_tasks.html) in a limited capacity. For example: ``` from flytekit import task, workflow, partial, map_task @@ -107,5 +107,5 @@ Map tasks do not support partial tasks with lists as inputs. ## Flyteconsole -Multiple bug fixes around [waiting for external inputs](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/waiting_for_external_inputs.html#waiting-for-external-inputs). +Multiple bug fixes around [waiting for external inputs](https://docs.flyte.org/en/latest/user_guide/advanced_composition/waiting_for_external_inputs.html). Better support for dataclasses in the launch form. diff --git a/CHANGELOG/CHANGELOG-v1.9.0.md b/CHANGELOG/CHANGELOG-v1.9.0.md index 90371e5c117..dd7a8f93a36 100644 --- a/CHANGELOG/CHANGELOG-v1.9.0.md +++ b/CHANGELOG/CHANGELOG-v1.9.0.md @@ -1,11 +1,11 @@ # Flyte v1.9.0 Release -In this release we're announcing two experimental features, namely (1) ArrayNode map tasks, and (2) Execution Tags. +In this release we're announcing two experimental features, namely (1) ArrayNode map tasks, and (2) Execution Tags. ### ArrayNode map tasks -ArrayNodes are described more fully in [RFC 3346](https://github.com/flyteorg/flyte/blob/master/rfc/system/3346-array-node.md), but the summary is that ArrayNode map tasks are a drop-in replacement for [regular map tasks](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/map_task.html), the only difference being the submodule used to import the `map_task` function. +ArrayNodes are described more fully in [RFC 3346](https://github.com/flyteorg/flyte/blob/master/rfc/system/3346-array-node.md), but the summary is that ArrayNode map tasks are a drop-in replacement for [regular map tasks](https://docs.flyte.org/en/latest/user-guide/advanced_composition/map_tasks.html), the only difference being the submodule used to import the `map_task` function. More explicitly, let's say you have this code: ```python @@ -15,7 +15,7 @@ from flytekit import map_task, task, workflow @task def t(a: int) -> int: ... - + @workflow def wf(xs: List[int]) -> List[int]: return map_task(t)(a=xs) @@ -31,7 +31,7 @@ from flytekit.experimental import map_task @task def t(a: int) -> int: ... - + @workflow def wf(xs: List[int]) -> List[int]: return map_task(t)(a=xs) @@ -119,7 +119,7 @@ As mentioned before, this feature is shipped in an experimental capacity, the id * chore: remove release git step by @FrankFlitton in https://github.com/flyteorg/flyteconsole/pull/811 * fix: union value handling in launch form by @ursucarina in https://github.com/flyteorg/flyteconsole/pull/812 -## New Contributors +## New Contributors * @Nan2018 made their first contribution in https://github.com/flyteorg/flytekit/pull/1751 * @oliverhu made their first contribution in https://github.com/flyteorg/flytekit/pull/1727 * @DavidMertz made their first contribution in https://github.com/flyteorg/flytekit/pull/1761 diff --git a/README.md b/README.md index 43c9e72a82e..6049f262ef8 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@

- :building_construction: :rocket: :chart_with_upwards_trend: + :building_construction: :rocket: :chart_with_upwards_trend:

@@ -24,7 +24,7 @@ OpenSSF Best Practices label Flyte Helm Chart label - + Flyte Slack label @@ -36,7 +36,7 @@ Flyte is an open-source orchestrator that facilitates building production-grade Build

-Write code in Python or any other language and leverage a robust type engine. +Write code in Python or any other language and leverage a robust type engine.

Getting started with Flyte @@ -48,7 +48,7 @@ Write code in Python or any other language and leverage a robust type engine. Either locally or on a remote cluster, execute your models with ease.

Getting started with Flyte - +

Get Started @@ -107,24 +107,24 @@ Go to the [Deployment guide](https://docs.flyte.org/en/latest/deployment/deploym 🌐 **Any language**: Write code in any language using raw containers, or choose [Python](https://github.com/flyteorg/flytekit), [Java](https://github.com/flyteorg/flytekit-java), [Scala](https://github.com/flyteorg/flytekit-java) or [JavaScript](https://github.com/NotMatthewGriffin/pterodactyl) SDKs to develop your Flyte workflows.
🔒 **Immutability**: Immutable executions help ensure reproducibility by preventing any changes to the state of an execution.
🧬 **Data lineage**: Track the movement and transformation of data throughout the lifecycle of your data and ML workflows.
-📊 **Map tasks**: Achieve parallel code execution with minimal configuration using [map tasks](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/map_task.html).
+📊 **Map tasks**: Achieve parallel code execution with minimal configuration using [map tasks](https://docs.flyte.org/en/latest/user_guide/advanced_composition/map_tasks.html).
🌎 **Multi-tenancy**: Multiple users can share the same platform while maintaining their own distinct data and configurations.
-🌟 **Dynamic workflows**: [Build flexible and adaptable workflows](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/dynamic_workflow.html) that can change and evolve as needed, making it easier to respond to changing requirements.
-⏯️ [Wait](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/waiting_for_external_inputs.html) for **external inputs** before proceeding with the execution.
-🌳 **Branching**: [Selectively execute branches](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/conditional.html) of your workflow based on static or dynamic data produced by other tasks or input data.
+🌟 **Dynamic workflows**: [Build flexible and adaptable workflows](https://docs.flyte.org/en/latest/user_guide/advanced_composition/dynamic_workflows.html) that can change and evolve as needed, making it easier to respond to changing requirements.
+⏯️ [Wait](https://docs.flyte.org/en/latest/user_guide/advanced_composition/waiting_for_external_inputs.html) for **external inputs** before proceeding with the execution.
+🌳 **Branching**: [Selectively execute branches](https://docs.flyte.org/en/latest/user_guide/advanced_composition/conditionals.html) of your workflow based on static or dynamic data produced by other tasks or input data.
📈 **Data visualization**: Visualize data, monitor models and view training history through plots.
-📂 **FlyteFile & FlyteDirectory**: Transfer [files](https://docs.flyte.org/en/latest/flytesnacks/examples/data_types_and_io/file.html#file) and [directories](https://docs.flyte.org/en/latest/flytesnacks/examples/data_types_and_io/folder.html) between local and cloud storage.
-🗃️ **Structured dataset**: Convert dataframes between types and enforce column-level type checking using the abstract 2D representation provided by [Structured Dataset](https://docs.flyte.org/en/latest/flytesnacks/examples/data_types_and_io/structured_dataset.html).
+📂 **FlyteFile & FlyteDirectory**: Transfer [files](https://docs.flyte.org/en/latest/user_guide/data_types_and_io/flytefile.html) and [directories](https://docs.flyte.org/en/latest/user_guide/data_types_and_io/flytedirectory.html) between local and cloud storage.
+🗃️ **Structured dataset**: Convert dataframes between types and enforce column-level type checking using the abstract 2D representation provided by [Structured Dataset](https://docs.flyte.org/en/latest/user_guide/data_types_and_io/structureddataset.html).
🛡️ **Recover from failures**: Recover only the failed tasks.
🔁 **Rerun a single task**: Rerun workflows at the most granular level without modifying the previous state of a data/ML workflow.
🔍 **Cache outputs**: Cache task outputs by passing `cache=True` to the task decorator.
-🚩 **Intra-task checkpointing**: [Checkpoint progress](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/checkpoint.html) within a task execution.
+🚩 **Intra-task checkpointing**: [Checkpoint progress](https://docs.flyte.org/en/latest/user_guide/advanced_composition/intratask_checkpoints.html) within a task execution.
⏰ **Timeout**: Define a timeout period, after which the task is marked as failure.
🏭 **Dev to prod**: As simple as changing your [domain](https://docs.flyte.org/en/latest/concepts/domains.html) from development or staging to production.
💸 **Spot or preemptible instances**: Schedule your workflows on spot instances by setting `interruptible` to `True` in the task decorator.
☁️ **Cloud-native deployment**: Deploy Flyte on AWS, GCP, Azure and other cloud services.
-📅 **Scheduling**: [Schedule](https://docs.flyte.org/en/latest/flytesnacks/examples/productionizing/lp_schedules.html) your data and ML workflows to run at a specific time.
-📢 **Notifications**: Stay informed about changes to your workflow's state by configuring [notifications](https://docs.flyte.org/en/latest/flytesnacks/examples/productionizing/lp_notifications.html) through Slack, PagerDuty or email.
+📅 **Scheduling**: [Schedule](https://docs.flyte.org/en/latest/user_guide/productionizing/schedules.html) your data and ML workflows to run at a specific time.
+📢 **Notifications**: Stay informed about changes to your workflow's state by configuring [notifications](https://docs.flyte.org/en/latest/user_guide/productionizing/notifications.html) through Slack, PagerDuty or email.
⌛️ **Timeline view**: Evaluate the duration of each of your Flyte tasks and identify potential bottlenecks.
💨 **GPU acceleration**: Enable and control your tasks’ GPU demands by requesting resources in the task decorator.
🐳 **Dependency isolation via containers**: Maintain separate sets of dependencies for your tasks so no dependency conflicts arise.
diff --git a/docs/community/contribute.rst b/docs/community/contribute.rst index 12cbf38b014..e866be5a2c9 100644 --- a/docs/community/contribute.rst +++ b/docs/community/contribute.rst @@ -282,7 +282,7 @@ The resulting ``html`` files will be in ``docs/_build/html``. You can view them * - **Purpose**: Examples, Tips, and Tricks to use Flytekit SDKs * - **Language**: Python (In the future, Java examples will be added) * - **Guidelines**: Refer to the `Flytesnacks Contribution Guide `__ - + ``flytectl`` ************ @@ -291,7 +291,7 @@ The resulting ``html`` files will be in ``docs/_build/html``. You can view them * - `Repo `__ * - **Purpose**: A standalone Flyte CLI * - **Language**: Go - * - **Guidelines**: Refer to the `FlyteCTL Contribution Guide `__ + * - **Guidelines**: Refer to the `FlyteCTL Contribution Guide `__ 🔮 Development Environment Setup Guide @@ -677,7 +677,7 @@ You can access it via http://localhost:30080/console. Core Flyte components, such as admin, propeller, and datacatalog, as well as user runtime containers rely on an object store (in this case, minio) to hold files. -During development, you might need to examine files such as `input.pb/output.pb `__, or `deck.html `__ stored in minio. +During development, you might need to examine files such as `input.pb/output.pb `__, or `deck.html `__ stored in minio. Access the minio console at: http://localhost:30080/minio/login. The default credentials are: diff --git a/docs/concepts/tasks.rst b/docs/concepts/tasks.rst index f3ae87709e7..94807d36328 100644 --- a/docs/concepts/tasks.rst +++ b/docs/concepts/tasks.rst @@ -30,7 +30,7 @@ When deciding if a unit of execution constitutes a Flyte task, consider these qu - Is there a well-defined graceful/successful exit criteria for the task? A task is expected to exit after completion of input processing. - Is it repeatable? Under certain circumstances, a task might be retried, rerun, etc. with the same inputs. It is expected - to produce the same output every single time. For example, avoid using random number generators with current clock as seed. Use a system-provided clock as the seed instead. + to produce the same output every single time. For example, avoid using random number generators with current clock as seed. Use a system-provided clock as the seed instead. - Is it a pure function, i.e., does it have side effects that are unknown to the system (calls a web-service)? It is recommended to avoid side-effects in tasks. When side-effects are evident, ensure that the operations are idempotent. Dynamic Tasks @@ -38,7 +38,7 @@ Dynamic Tasks "Dynamic tasks" is a misnomer. Flyte is one-of-a-kind workflow engine that ships with the concept of truly `Dynamic Workflows `__! -Users can generate workflows in reaction to user inputs or computed values at runtime. +Users can generate workflows in reaction to user inputs or computed values at runtime. These executions are evaluated to generate a static graph before execution. Extending Task @@ -47,9 +47,9 @@ Extending Task Plugins ^^^^^^^ -Flyte exposes an extensible model to express tasks in an execution-independent language. -It contains first-class task plugins (for example: `Papermill `__, -`Great Expectations `__, and :ref:`more `.) +Flyte exposes an extensible model to express tasks in an execution-independent language. +It contains first-class task plugins (for example: `Papermill `__, +`Great Expectations `__, and :ref:`more `.) that execute the Flyte tasks. Almost any action can be implemented and introduced into Flyte as a "Plugin", which includes: @@ -58,7 +58,7 @@ Almost any action can be implemented and introduced into Flyte as a "Plugin", wh - Tasks that call web services. Flyte ships with certain defaults, for example, running a simple Python function does not need any hosted service. Flyte knows how to -execute these kinds of tasks on Kubernetes. It turns out these are the vast majority of tasks in machine learning, and Flyte is adept at +execute these kinds of tasks on Kubernetes. It turns out these are the vast majority of tasks in machine learning, and Flyte is adept at handling an enormous scale on Kubernetes. This is achieved by implementing a unique scheduler on Kubernetes. Types @@ -74,14 +74,14 @@ Inherent Features Fault tolerance ^^^^^^^^^^^^^^^ -In any distributed system, failure is inevitable. Allowing users to design a fault-tolerant system (e.g. workflow) is an inherent goal of Flyte. +In any distributed system, failure is inevitable. Allowing users to design a fault-tolerant system (e.g. workflow) is an inherent goal of Flyte. At a high level, tasks offer two parameters to achieve fault tolerance: **Retries** - -Tasks can define a retry strategy to let the system know how to handle failures (For example: retry 3 times on any kind of error). -There are two kinds of retries: +Tasks can define a retry strategy to let the system know how to handle failures (For example: retry 3 times on any kind of error). + +There are two kinds of retries: 1. System retry: It is a system-defined, recoverable failure that is used when system failures occur. The number of retries is validated against the number of system retries. @@ -91,7 +91,7 @@ System retry can be of two types: - **Downstream System Retry**: When a downstream system (or service) fails, or remote service is not contactable, the failure is retried against the number of retries set `here `__. This performs end-to-end system retry against the node whenever the task fails with a system error. This is useful when the downstream service throws a 500 error, abrupt network failure, etc. -- **Transient Failure Retry**: This retry mechanism offers resiliency against transient failures, which are opaque to the user. It is tracked across the entire duration of execution. It helps Flyte entities and the additional services connected to Flyte like S3, to continue operating despite a system failure. Indeed, all transient failures are handled gracefully by Flyte! Moreover, in case of a transient failure retry, Flyte does not necessarily retry the entire task. “Retrying an entire task” means that the entire pod associated with the Flyte task would be rerun with a clean slate; instead, it just retries the atomic operation. For example, Flyte tries to persist the state until it can, exhausts the max retries, and backs off. +- **Transient Failure Retry**: This retry mechanism offers resiliency against transient failures, which are opaque to the user. It is tracked across the entire duration of execution. It helps Flyte entities and the additional services connected to Flyte like S3, to continue operating despite a system failure. Indeed, all transient failures are handled gracefully by Flyte! Moreover, in case of a transient failure retry, Flyte does not necessarily retry the entire task. “Retrying an entire task” means that the entire pod associated with the Flyte task would be rerun with a clean slate; instead, it just retries the atomic operation. For example, Flyte tries to persist the state until it can, exhausts the max retries, and backs off. To set a transient failure retry: @@ -102,17 +102,17 @@ System retry can be of two types: 2. User retry: If a task fails to execute, it is retried for a specific number of times, and this number is set by the user in `TaskMetadata `__. The number of retries must be less than or equal to 10. .. note:: - + Recoverable vs. Non-Recoverable failures: Recoverable failures will be retried and counted against the task's retry count. Non-recoverable failures will just fail, i.e., the task isn’t retried irrespective of user/system retry configurations. All user exceptions are considered non-recoverable unless the exception is a subclass of FlyteRecoverableException. .. note:: - `RFC 3902 `_ implements an alternative, simplified retry behaviour with which both system and user retries are counted towards a single retry budget defined in the task decorator (thus, without a second retry budget defined in the platform configuration). The last retries are always performed on non-spot instances to guarantee completion. To activate this behaviour, set ``configmap.core.propeller.node-config.ignore-retry-cause`` to ``true`` in the helm values. + `RFC 3902 `_ implements an alternative, simplified retry behavior with which both system and user retries are counted towards a single retry budget defined in the task decorator (thus, without a second retry budget defined in the platform configuration). The last retries are always performed on non-spot instances to guarantee completion. To activate this behaviour, set ``configmap.core.propeller.node-config.ignore-retry-cause`` to ``true`` in the helm values. **Timeouts** - + To ensure that the system is always making progress, tasks must be guaranteed to end gracefully/successfully. The system defines a default timeout period for the tasks. It is possible for task authors to define a timeout period, after which the task is marked as ``failure``. Note that a timed-out task will be retried if it has a retry strategy defined. The timeout can be handled in the `TaskMetadata `__. @@ -120,4 +120,4 @@ Caching/Memoization ^^^^^^^^^^^^^^^^^^^ Flyte supports memoization of task outputs to ensure that identical invocations of a task are not executed repeatedly, thereby saving compute resources and execution time. For example, if you wish to run the same piece of code multiple times, you can reuse the output instead of re-computing it. -For more information on memoization, refer to the :std:doc:`Caching Example `. +For more information on memoization, refer to the :std:doc:`/user_guide/development_lifecycle/caching`. diff --git a/docs/conf.py b/docs/conf.py index d9e38e58062..63a1ec94839 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -313,6 +313,7 @@ # These patterns are used to replace values in source files that are imported # from other repos. REPLACE_PATTERNS = { + r"": r"", r"": r"", INTERSPHINX_REFS_PATTERN: INTERSPHINX_REFS_REPLACE, @@ -328,16 +329,16 @@ PROTO_REF_PATTERN: PROTO_REF_REPLACE, r"/protos/docs/service/index": r"/protos/docs/service/service", r"": r"", - r"": r"" } +# r"": r"", + import_projects_config = { "clone_dir": "_projects", "flytekit_api_dir": "_src/flytekit/", "source_regex_mapping": REPLACE_PATTERNS, "list_table_toc": [ - "flytesnacks/userguide", - "flytesnacks/tutorials", + "flytesnacks/tutorials", "flytesnacks/integrations", ], "dev_build": bool(int(os.environ.get("MONODOCS_DEV_BUILD", 1))), @@ -369,6 +370,25 @@ "flytesnacks/_build", "flytesnacks/_tags", "flytesnacks/getting_started", + "flytesnacks/userguide.md", + "flytesnacks/environment_setup.md", + "flytesnacks/index.md", + "examples/advanced_composition", + "examples/basics", + "examples/customizing_dependencies", + "examples/data_types_and_io", + "examples/development_lifecycle", + "examples/extending", + "examples/productionizing", + "examples/testing", + "flytesnacks/examples/advanced_composition", + "flytesnacks/examples/basics", + "flytesnacks/examples/customizing_dependencies", + "flytesnacks/examples/data_types_and_io", + "flytesnacks/examples/development_lifecycle", + "flytesnacks/examples/extending", + "flytesnacks/examples/productionizing", + "flytesnacks/examples/testing", ] ], "local": flytesnacks_local_path is not None, diff --git a/docs/deployment/configuration/customizable_resources.rst b/docs/deployment/configuration/customizable_resources.rst index 2b785d31f67..6fb1318ac65 100644 --- a/docs/deployment/configuration/customizable_resources.rst +++ b/docs/deployment/configuration/customizable_resources.rst @@ -187,7 +187,7 @@ etc. in the `Workflow execution config `__: configures the pod identity and auth credentials for task pods at execution time - `raw_output_data_config`: where offloaded user data is stored -- `interruptible`: whether to use [spot instances](https://docs.flyte.org/en/latest/flytesnacks/examples/productionizing/spot_instances.html#using-spot-preemptible-instances) +- `interruptible`: whether to use [spot instances](https://docs.flyte.org/en/user_guide/productionizing/spot_instances.html) - `overwrite_cache`: Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. - `envs`: Custom environment variables to apply for task pods brought up during execution diff --git a/docs/deployment/configuration/notifications.rst b/docs/deployment/configuration/notifications.rst index 386e19a4064..2e4a77ac532 100644 --- a/docs/deployment/configuration/notifications.rst +++ b/docs/deployment/configuration/notifications.rst @@ -39,7 +39,7 @@ For example ) -See detailed usage examples in the :std:doc:`User Guide ` +See detailed usage examples in the :std:doc:`/user_guide/productionizing/notifications` Notifications can be combined with schedules to automatically alert you when a scheduled job succeeds or fails. diff --git a/docs/deployment/plugins/aws/batch.rst b/docs/deployment/plugins/aws/batch.rst index f640b7907ab..a3cad36d0e7 100644 --- a/docs/deployment/plugins/aws/batch.rst +++ b/docs/deployment/plugins/aws/batch.rst @@ -8,7 +8,7 @@ and single tasks running on AWS Batch. .. note:: - For single [non-map] task use, please take note of + For single [non-map] task use, please take note of the additional code when updating the flytepropeller config. AWS Batch simplifies the process for developers, scientists and engineers to run @@ -21,7 +21,7 @@ optimizing AWS Batch job queues for load distribution and priority coordination. Set up AWS Batch ---------------- -Follow the guide `Running batch jobs +Follow the guide `Running batch jobs at scale for less `__. By the end of this step, your AWS Account should have a configured compute environment @@ -30,7 +30,7 @@ and one or more AWS Batch Job Queues. Modify users' AWS IAM role trust policy document ------------------------------------------------ -Follow the guide `AWS Batch Execution +Follow the guide `AWS Batch Execution IAM role `__. When running workflows in Flyte, users can specify a Kubernetes service account and/or an IAM Role to run as. @@ -40,11 +40,11 @@ to allow elastic container service (ECS) to assume the role. Modify system's AWS IAM role policies ------------------------------------- -Follow the guide `Granting a user permissions to pass a +Follow the guide `Granting a user permissions to pass a role to an AWS service `__. The best practice for granting permissions to Flyte components is by utilizing OIDC, -as described in the +as described in the `OIDC documentation `__. This approach entails assigning an IAM Role to each service account being used. To proceed, identify the IAM Role associated with the flytepropeller's Kubernetes service account, @@ -145,10 +145,10 @@ These configurations reside within FlytePropeller's configMap. Modify the config .. note:: - To register the `map task - `__ on Flyte, + To register the `map task + `__ on Flyte, use the command ``pyflyte register ``. - Launch the execution through the FlyteConsole by selecting the appropriate ``IAM Role`` and entering the full + Launch the execution through the FlyteConsole by selecting the appropriate ``IAM Role`` and entering the full ``AWS Arn`` of an IAM Role configured according to the above guide. Once the task starts executing, you'll find a link for the AWS Array Job in the log links section of the Flyte Console. diff --git a/docs/index.md b/docs/index.md index 3a8d38e6ba8..cb49256803f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -79,7 +79,7 @@ contribute its architecture and design. You can also access the * - {doc}`🔤 Introduction to Flyte ` - Get your first workflow running, learn about the Flyte development lifecycle and core use cases. -* - {doc}`📖 User Guide ` +* - {doc}`📖 User Guide ` - A comprehensive view of Flyte's functionality for data and ML practitioners. * - {doc}`📚 Tutorials ` - End-to-end examples of Flyte for data/feature engineering, machine learning, @@ -147,7 +147,7 @@ Core use cases :name: examples-guides :hidden: -User Guide +User Guide Tutorials Integrations ``` diff --git a/docs/user_guide/advanced_composition/chaining_flyte_entities.md b/docs/user_guide/advanced_composition/chaining_flyte_entities.md new file mode 100644 index 00000000000..f51b45a2d01 --- /dev/null +++ b/docs/user_guide/advanced_composition/chaining_flyte_entities.md @@ -0,0 +1,112 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(chain_flyte_entities)= + +# Chaining Flyte entities + +```{eval-rst} +.. tags:: Basic +``` + +Flytekit offers a mechanism for chaining Flyte entities using the `>>` operator. +This is particularly valuable when chaining tasks and subworkflows without the need for data flow between the entities. + +## Tasks + +Let's establish a sequence where `t1()` occurs after `t0()`, and `t2()` follows `t1()`. + +```{code-cell} +from flytekit import task, workflow + + +@task +def t2(): + print("Running t2") + return + + +@task +def t1(): + print("Running t1") + return + + +@task +def t0(): + print("Running t0") + return + + +@workflow +def chain_tasks_wf(): + t2_promise = t2() + t1_promise = t1() + t0_promise = t0() + + t0_promise >> t1_promise + t1_promise >> t2_promise +``` + ++++ {"lines_to_next_cell": 0} + +(chain_subworkflow)= +## Subworkflows + +Just like tasks, you can chain {ref}`subworkflows `. + +```{code-cell} +:lines_to_next_cell: 2 + +@workflow +def sub_workflow_1(): + t1() + + +@workflow +def sub_workflow_0(): + t0() + + +@workflow +def chain_workflows_wf(): + sub_wf1 = sub_workflow_1() + sub_wf0 = sub_workflow_0() + + sub_wf0 >> sub_wf1 +``` + +To run the provided workflows on the Flyte cluster, use the following commands: + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/chain_entities.py \ + chain_tasks_wf +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/chain_entities.py \ + chain_workflows_wf +``` + +:::{note} +Chaining tasks and subworkflows is not supported in local environments. +Follow the progress of this issue [here](https://github.com/flyteorg/flyte/issues/4080). +::: diff --git a/docs/user_guide/advanced_composition/conditionals.md b/docs/user_guide/advanced_composition/conditionals.md new file mode 100644 index 00000000000..88c447a05c1 --- /dev/null +++ b/docs/user_guide/advanced_composition/conditionals.md @@ -0,0 +1,323 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(conditional)= + +# Conditionals + +```{eval-rst} +.. tags:: Intermediate +``` + +Flytekit elevates conditions to a first-class construct named `conditional`, providing a powerful mechanism for selectively +executing branches in a workflow. Conditions leverage static or dynamic data generated by tasks or +received as workflow inputs. While conditions are highly performant in their evaluation, +it's important to note that they are restricted to specific binary and logical operators +and are applicable only to primitive values. + +To begin, import the necessary libraries. + +```{code-cell} +import random + +from flytekit import conditional, task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +## Simple branch + +In this example, we introduce two tasks, `calculate_circle_circumference` and +`calculate_circle_area`. The workflow dynamically chooses between these tasks based on whether the input +falls within the fraction range (0-1) or not. + +```{code-cell} +@task +def calculate_circle_circumference(radius: float) -> float: + return 2 * 3.14 * radius # Task to calculate the circumference of a circle + + +@task +def calculate_circle_area(radius: float) -> float: + return 3.14 * radius * radius # Task to calculate the area of a circle + + +@workflow +def shape_properties(radius: float) -> float: + return ( + conditional("shape_properties") + .if_((radius >= 0.1) & (radius < 1.0)) + .then(calculate_circle_circumference(radius=radius)) + .else_() + .then(calculate_circle_area(radius=radius)) + ) + + +if __name__ == "__main__": + radius_small = 0.5 + print(f"Circumference of circle (radius={radius_small}): {shape_properties(radius=radius_small)}") + + radius_large = 3.0 + print(f"Area of circle (radius={radius_large}): {shape_properties(radius=radius_large)}") +``` + ++++ {"lines_to_next_cell": 0} + +## Multiple branches + +We establish an `if` condition with multiple branches, which will result in a failure if none of the conditions is met. +It's important to note that any `conditional` statement in Flyte is expected to be complete, +meaning that all possible branches must be accounted for. + +```{code-cell} +@workflow +def shape_properties_with_multiple_branches(radius: float) -> float: + return ( + conditional("shape_properties_with_multiple_branches") + .if_((radius >= 0.1) & (radius < 1.0)) + .then(calculate_circle_circumference(radius=radius)) + .elif_((radius >= 1.0) & (radius <= 10.0)) + .then(calculate_circle_area(radius=radius)) + .else_() + .fail("The input must be within the range of 0 to 10.") + ) +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +Take note of the usage of bitwise operators (`&`). Due to Python's PEP-335, +the logical `and`, `or` and `not` operators cannot be overloaded. +Flytekit employs bitwise `&` and `|` as equivalents for logical `and` and `or` operators, +a convention also observed in other libraries. +::: + +## Consuming the output of a conditional +Here, we write a task that consumes the output returned by a `conditional`. + +```{code-cell} +@workflow +def shape_properties_accept_conditional_output(radius: float) -> float: + result = ( + conditional("shape_properties_accept_conditional_output") + .if_((radius >= 0.1) & (radius < 1.0)) + .then(calculate_circle_circumference(radius=radius)) + .elif_((radius >= 1.0) & (radius <= 10.0)) + .then(calculate_circle_area(radius=radius)) + .else_() + .fail("The input must exist between 0 and 10.") + ) + return calculate_circle_area(radius=result) + + +if __name__ == "__main__": + print(f"Circumference of circle x Area of circle (radius={radius_small}): {shape_properties(radius=5.0)}") +``` + ++++ {"lines_to_next_cell": 0} + +## Using the output of a previous task in a conditional + +You can check if a boolean returned from the previous task is `True`, +but unary operations are not supported directly. Instead, use the `is_true`, +`is_false` and `is_none` methods on the result. + +```{code-cell} +@task +def coin_toss(seed: int) -> bool: + """ + Mimic a condition to verify the successful execution of an operation + """ + r = random.Random(seed) + if r.random() < 0.5: + return True + return False + + +@task +def failed() -> int: + """ + Mimic a task that handles failure + """ + return -1 + + +@task +def success() -> int: + """ + Mimic a task that handles success + """ + return 0 + + +@workflow +def boolean_wf(seed: int = 5) -> int: + result = coin_toss(seed=seed) + return conditional("coin_toss").if_(result.is_true()).then(success()).else_().then(failed()) +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +*How do output values acquire these methods?* In a workflow, direct access to outputs is not permitted. +Inputs and outputs are automatically encapsulated in a special object known as {py:class}`flytekit.extend.Promise`. +::: + +## Using boolean workflow inputs in a conditional +You can directly pass a boolean to a workflow. + +```{code-cell} +@workflow +def boolean_input_wf(boolean_input: bool) -> int: + return conditional("boolean_input_conditional").if_(boolean_input.is_true()).then(success()).else_().then(failed()) +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +Observe that the passed boolean possesses a method called `is_true`. +This boolean resides within the workflow context and is encapsulated in a specialized Flytekit object. +This special object enables it to exhibit additional behavior. +::: + +You can run the workflows locally as follows: + +```{code-cell} +if __name__ == "__main__": + print("Running boolean_wf a few times...") + for index in range(0, 5): + print(f"The output generated by boolean_wf = {boolean_wf(seed=index)}") + print( + f"Boolean input: {True if index < 2 else False}; workflow output: {boolean_input_wf(boolean_input=True if index < 2 else False)}" + ) +``` + ++++ {"lines_to_next_cell": 0} + +## Nested conditionals + +You can nest conditional sections arbitrarily inside other conditional sections. +However, these nested sections can only be in the `then` part of a `conditional` block. + +```{code-cell} +@workflow +def nested_conditions(radius: float) -> float: + return ( + conditional("nested_conditions") + .if_((radius >= 0.1) & (radius < 1.0)) + .then( + conditional("inner_nested_conditions") + .if_(radius < 0.5) + .then(calculate_circle_circumference(radius=radius)) + .elif_((radius >= 0.5) & (radius < 0.9)) + .then(calculate_circle_area(radius=radius)) + .else_() + .fail("0.9 is an outlier.") + ) + .elif_((radius >= 1.0) & (radius <= 10.0)) + .then(calculate_circle_area(radius=radius)) + .else_() + .fail("The input must be within the range of 0 to 10.") + ) + + +if __name__ == "__main__": + print(f"nested_conditions(0.4): {nested_conditions(radius=0.4)}") +``` + ++++ {"lines_to_next_cell": 0} + +## Using the output of a task in a conditional + +Let's write a fun workflow that triggers the `calculate_circle_circumference` task in the event of a "heads" outcome, +and alternatively, runs the `calculate_circle_area` task in the event of a "tail" outcome. + +```{code-cell} +@workflow +def consume_task_output(radius: float, seed: int = 5) -> float: + is_heads = coin_toss(seed=seed) + return ( + conditional("double_or_square") + .if_(is_heads.is_true()) + .then(calculate_circle_circumference(radius=radius)) + .else_() + .then(calculate_circle_area(radius=radius)) + ) +``` + ++++ {"lines_to_next_cell": 0} + +You can run the workflow locally as follows: + +```{code-cell} +if __name__ == "__main__": + default_seed_output = consume_task_output(radius=0.4) + print( + f"Executing consume_task_output(0.4) with default seed=5. Expected output: calculate_circle_circumference => {default_seed_output}" + ) + + custom_seed_output = consume_task_output(radius=0.4, seed=7) + print(f"Executing consume_task_output(0.4, seed=7). Expected output: calculate_circle_area => {custom_seed_output}") +``` + +## Run the example on the Flyte cluster + +To run the provided workflows on the Flyte cluster, use the following commands: + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/conditional.py \ + shape_properties --radius 3.0 +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/conditional.py \ + shape_properties_with_multiple_branches --radius 11.0 +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/conditional.py \ + shape_properties_accept_conditional_output --radius 0.5 +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/conditional.py \ + boolean_wf +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/conditional.py \ + boolean_input_wf --boolean_input +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/conditional.py \ + nested_conditions --radius 0.7 +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/conditional.py \ + consume_task_output --radius 0.4 --seed 7 +``` diff --git a/docs/user_guide/advanced_composition/decorating_tasks.md b/docs/user_guide/advanced_composition/decorating_tasks.md new file mode 100644 index 00000000000..50135ee8abc --- /dev/null +++ b/docs/user_guide/advanced_composition/decorating_tasks.md @@ -0,0 +1,152 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(decorating_tasks)= + +# Decorating tasks + +```{eval-rst} +.. tags:: Intermediate +``` + +You can easily change how tasks behave by using decorators to wrap your task functions. + +In order to make sure that your decorated function contains all the type annotation and docstring +information that Flyte needs, you will need to use the built-in {py:func}`~functools.wraps` decorator. + +To begin, import the required dependencies. + +```{code-cell} +import logging +from functools import partial, wraps + +from flytekit import task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +Create a logger to monitor the execution's progress. + +```{code-cell} +logger = logging.getLogger(__file__) +``` + ++++ {"lines_to_next_cell": 0} + +## Using a single decorator + +We define a decorator that logs the input and output details for a decorated task. + +```{code-cell} +def log_io(fn): + @wraps(fn) + def wrapper(*args, **kwargs): + logger.info(f"task {fn.__name__} called with args: {args}, kwargs: {kwargs}") + out = fn(*args, **kwargs) + logger.info(f"task {fn.__name__} output: {out}") + return out + + return wrapper +``` + ++++ {"lines_to_next_cell": 0} + +We create a task named `t1` that is decorated with `log_io`. + +:::{note} +The order of invoking the decorators is important. `@task` should always be the outer-most decorator. +::: + +```{code-cell} +@task +@log_io +def t1(x: int) -> int: + return x + 1 +``` + ++++ {"lines_to_next_cell": 0} + +(stacking_decorators)= + +## Stacking multiple decorators + +You can also stack multiple decorators on top of each other as long as `@task` is the outer-most decorator. + +We define a decorator that verifies if the output from the decorated function is a positive number before it's returned. +If this assumption is violated, it raises a `ValueError` exception. + +```{code-cell} +def validate_output(fn=None, *, floor=0): + @wraps(fn) + def wrapper(*args, **kwargs): + out = fn(*args, **kwargs) + if out <= floor: + raise ValueError(f"output of task {fn.__name__} must be a positive number, found {out}") + return out + + if fn is None: + return partial(validate_output, floor=floor) + + return wrapper +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +The output of the `validate_output` task uses {py:func}`~functools.partial` to implement parameterized decorators. +::: + +We define a function that uses both the logging and validator decorators. + +```{code-cell} +@task +@log_io +@validate_output(floor=10) +def t2(x: int) -> int: + return x + 10 +``` + ++++ {"lines_to_next_cell": 0} + +Finally, we compose a workflow that calls `t1` and `t2`. + +```{code-cell} +@workflow +def decorating_task_wf(x: int) -> int: + return t2(x=t1(x=x)) + + +if __name__ == "__main__": + print(f"Running decorating_task_wf(x=10) {decorating_task_wf(x=10)}") +``` + +## Run the example on the Flyte cluster + +To run the provided workflow on the Flyte cluster, use the following command: + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/decorating_tasks.py \ + decorating_task_wf --x 10 +``` + +In this example, you learned how to modify the behavior of tasks via function decorators using the built-in +{py:func}`~functools.wraps` decorator pattern. To learn more about how to extend Flyte at a deeper level, for +example creating custom types, custom tasks or backend plugins, +see {ref}`Extending Flyte `. diff --git a/docs/user_guide/advanced_composition/decorating_workflows.md b/docs/user_guide/advanced_composition/decorating_workflows.md new file mode 100644 index 00000000000..3a369cc4336 --- /dev/null +++ b/docs/user_guide/advanced_composition/decorating_workflows.md @@ -0,0 +1,180 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(decorating_workflows)= + +# Decorating workflows + +```{eval-rst} +.. tags:: Intermediate +``` + +The behavior of workflows can be modified in a light-weight fashion by using the built-in {py:func}`~functools.wraps` +decorator pattern, similar to using decorators to +{ref}`customize task behavior `. However, unlike in the case of +tasks, we need to do a little extra work to make sure that the DAG underlying the workflow executes tasks in the +correct order. + +## Setup-teardown pattern + +The main use case of decorating `@workflow`-decorated functions is to establish a setup-teardown pattern to execute task +before and after your main workflow logic. This is useful when integrating with other external services +like [wandb](https://wandb.ai/site) or [clearml](https://clear.ml/), which enable you to track metrics of model +training runs. + +To begin, import the necessary libraries. + +```{code-cell} +from functools import partial, wraps +from unittest.mock import MagicMock + +import flytekit +from flytekit import FlyteContextManager, task, workflow +from flytekit.core.node_creation import create_node +``` + ++++ {"lines_to_next_cell": 0} + +Let's define the tasks we need for setup and teardown. In this example, we use the +{py:class}`unittest.mock.MagicMock` class to create a fake external service that we want to initialize at the +beginning of our workflow and finish at the end. + +```{code-cell} +external_service = MagicMock() + + +@task +def setup(): + print("initializing external service") + external_service.initialize(id=flytekit.current_context().execution_id) + + +@task +def teardown(): + print("finish external service") + external_service.complete(id=flytekit.current_context().execution_id) +``` + ++++ {"lines_to_next_cell": 0} + +As you can see, you can even use Flytekit's current context to access the `execution_id` of the current workflow +if you need to link Flyte with the external service so that you reference the same unique identifier in both the +external service and Flyte. + +## Workflow decorator + +We create a decorator that we want to use to wrap our workflow function. + +```{code-cell} +def setup_teardown(fn=None, *, before, after): + @wraps(fn) + def wrapper(*args, **kwargs): + # get the current flyte context to obtain access to the compilation state of the workflow DAG. + ctx = FlyteContextManager.current_context() + + # defines before node + before_node = create_node(before) + # ctx.compilation_state.nodes == [before_node] + + # under the hood, flytekit compiler defines and threads + # together nodes within the `my_workflow` function body + outputs = fn(*args, **kwargs) + # ctx.compilation_state.nodes == [before_node, *nodes_created_by_fn] + + # defines the after node + after_node = create_node(after) + # ctx.compilation_state.nodes == [before_node, *nodes_created_by_fn, after_node] + + # compile the workflow correctly by making sure `before_node` + # runs before the first workflow node and `after_node` + # runs after the last workflow node. + if ctx.compilation_state is not None: + # ctx.compilation_state.nodes is a list of nodes defined in the + # order of execution above + workflow_node0 = ctx.compilation_state.nodes[1] + workflow_node1 = ctx.compilation_state.nodes[-2] + before_node >> workflow_node0 + workflow_node1 >> after_node + return outputs + + if fn is None: + return partial(setup_teardown, before=before, after=after) + + return wrapper +``` + ++++ {"lines_to_next_cell": 0} + +There are a few key pieces to note in the `setup_teardown` decorator above: + +1. It takes a `before` and `after` argument, both of which need to be `@task`-decorated functions. These + tasks will run before and after the main workflow function body. +2. The [create_node](https://github.com/flyteorg/flytekit/blob/9e156bb0cf3d1441c7d1727729e8f9b4bbc3f168/flytekit/core/node_creation.py#L18) function + to create nodes associated with the `before` and `after` tasks. +3. When `fn` is called, under the hood Flytekit creates all the nodes associated with the workflow function body +4. The code within the `if ctx.compilation_state is not None:` conditional is executed at compile time, which + is where we extract the first and last nodes associated with the workflow function body at index `1` and `-2`. +5. The `>>` right shift operator ensures that `before_node` executes before the + first node and `after_node` executes after the last node of the main workflow function body. + +## Defining the DAG + +We define two tasks that will constitute the workflow. + +```{code-cell} +@task +def t1(x: float) -> float: + return x - 1 + + +@task +def t2(x: float) -> float: + return x**2 +``` + ++++ {"lines_to_next_cell": 0} + +And then create our decorated workflow: + +```{code-cell} +:lines_to_next_cell: 2 + +@workflow +@setup_teardown(before=setup, after=teardown) +def decorating_workflow(x: float) -> float: + return t2(x=t1(x=x)) + + +if __name__ == "__main__": + print(decorating_workflow(x=10.0)) +``` + +## Run the example on the Flyte cluster + +To run the provided workflow on the Flyte cluster, use the following command: + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/decorating_workflows.py \ + decorating_workflow --x 10.0 +``` + +To define workflows imperatively, refer to {ref}`this example `, +and to learn more about how to extend Flyte at a deeper level, for example creating custom types, custom tasks or +backend plugins, see {ref}`Extending Flyte `. diff --git a/docs/user_guide/advanced_composition/dynamic_workflows.md b/docs/user_guide/advanced_composition/dynamic_workflows.md new file mode 100644 index 00000000000..99bc88a3725 --- /dev/null +++ b/docs/user_guide/advanced_composition/dynamic_workflows.md @@ -0,0 +1,292 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(dynamic_workflow)= + +# Dynamic workflows + +```{eval-rst} +.. tags:: Intermediate +``` + +A workflow whose directed acyclic graph (DAG) is computed at run-time is a {py:func}`~flytekit.dynamic` workflow. +The tasks in a dynamic workflow are executed at runtime using dynamic inputs. +This type of workflow shares similarities with the {py:func}`~flytekit.workflow`, as it employs a Python-esque DSL +to declare dependencies between the tasks or define new workflows. A key distinction lies in the dynamic workflow being assessed at runtime. +This means that the inputs are initially materialized and forwarded to dynamic workflow, resembling the behavior of a task. +However, the return value from a dynamic workflow is a {py:class}`~flytekit.extend.Promise` object, +which can be materialized by the subsequent tasks. + +Think of a dynamic workflow as a combination of a task and a workflow. +It is used to dynamically decide the parameters of a workflow at runtime. +It is both compiled and executed at run-time. You can define a dynamic workflow using the `@dynamic` decorator. + +Within the `@dynamic` context, each invocation of a {py:func}`~flytekit.task` or a derivative of +{py:class}`~flytekit.core.base_task.Task` class leads to deferred evaluation using a promise, +rather than the immediate materialization of the actual value. While nesting other `@dynamic` and +`@workflow` constructs within this task is possible, direct interaction with the outputs of a task/workflow is limited, +as they are lazily evaluated. If interaction with the outputs is desired, it is recommended to separate the +logic in a dynamic workflow and create a new task to read and resolve the outputs. + +Dynamic workflows become essential when you require: + +- Modifying the logic of the code at runtime +- Changing or deciding on feature extraction parameters on-the-go +- Building AutoML pipelines +- Tuning hyperparameters during execution + +This example utilizes dynamic workflow to count the common characters between any two strings. + +To begin, we import the required libraries. + +```{code-cell} +from flytekit import dynamic, task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +We define a task that returns the index of a character, where A-Z/a-z is equivalent to 0-25. + +```{code-cell} +@task +def return_index(character: str) -> int: + if character.islower(): + return ord(character) - ord("a") + else: + return ord(character) - ord("A") +``` + ++++ {"lines_to_next_cell": 0} + +We also create a task that prepares a list of 26 characters by populating the frequency of each character. + +```{code-cell} +@task +def update_list(freq_list: list[int], list_index: int) -> list[int]: + freq_list[list_index] += 1 + return freq_list +``` + ++++ {"lines_to_next_cell": 0} + +We define a task to calculate the number of common characters between the two strings. + +```{code-cell} +@task +def derive_count(freq1: list[int], freq2: list[int]) -> int: + count = 0 + for i in range(26): + count += min(freq1[i], freq2[i]) + return count +``` + ++++ {"lines_to_next_cell": 0} + +We define a dynamic workflow to accomplish the following: + +1. Initialize an empty 26-character list to be passed to the `update_list` task +2. Iterate through each character of the first string (`s1`) and populate the frequency list +3. Iterate through each character of the second string (`s2`) and populate the frequency list +4. Determine the number of common characters by comparing the two frequency lists + +The looping process is contingent on the number of characters in both strings, which is unknown until runtime. + +```{code-cell} +@dynamic +def count_characters(s1: str, s2: str) -> int: + # s1 and s2 should be accessible + + # Initialize empty lists with 26 slots each, corresponding to every alphabet (lower and upper case) + freq1 = [0] * 26 + freq2 = [0] * 26 + + # Loop through characters in s1 + for i in range(len(s1)): + # Calculate the index for the current character in the alphabet + index = return_index(character=s1[i]) + # Update the frequency list for s1 + freq1 = update_list(freq_list=freq1, list_index=index) + # index and freq1 are not accessible as they are promises + + # looping through the string s2 + for i in range(len(s2)): + # Calculate the index for the current character in the alphabet + index = return_index(character=s2[i]) + # Update the frequency list for s2 + freq2 = update_list(freq_list=freq2, list_index=index) + # index and freq2 are not accessible as they are promises + + # Count the common characters between s1 and s2 + return derive_count(freq1=freq1, freq2=freq2) +``` + ++++ {"lines_to_next_cell": 0} + +A dynamic workflow is modeled as a task in the backend, +but the body of the function is executed to produce a workflow at run-time. +In both dynamic and static workflows, the output of tasks are promise objects. + +Propeller executes the dynamic task within its Kubernetes pod, resulting in a compiled DAG, which is then accessible in the console. +It utilizes the information acquired during the dynamic task's execution to schedule and execute each node within the dynamic task. +Visualization of the dynamic workflow's graph in the UI becomes available only after the dynamic task has completed its execution. + +When a dynamic task is executed, it generates the entire workflow as its output, termed the *futures file*. +This nomenclature reflects the anticipation that the workflow is yet to be executed, and all subsequent outputs are considered futures. + +:::{note} +Local execution works when a `@dynamic` decorator is used because Flytekit treats it as a task that runs with native Python inputs. +::: + +Define a workflow that triggers the dynamic workflow. + +```{code-cell} +@workflow +def dynamic_wf(s1: str, s2: str) -> int: + return count_characters(s1=s1, s2=s2) +``` + ++++ {"lines_to_next_cell": 0} + +You can run the workflow locally as follows: + +```{code-cell} +:lines_to_next_cell: 2 + +if __name__ == "__main__": + print(dynamic_wf(s1="Pear", s2="Earth")) +``` + ++++ {"lines_to_next_cell": 0} + +## Why use dynamic workflows? + +### Flexibility + +Dynamic workflows streamline the process of building pipelines, offering the flexibility to design workflows +according to the unique requirements of your project. This level of adaptability is not achievable with static workflows. + +### Lower pressure on etcd + +The workflow Custom Resource Definition (CRD) and the states associated with static workflows are stored in etcd, +the Kubernetes database. This database maintains Flyte workflow CRDs as key-value pairs, tracking the status of each node's execution. + +However, there is a limitation with etcd — a hard limit on data size, encompassing the workflow and node status sizes. +Consequently, it's crucial to ensure that static workflows don't excessively consume memory. + +In contrast, dynamic workflows offload the workflow specification (including node/task definitions and connections) to the blobstore. +Still, the statuses of nodes are stored in the workflow CRD within etcd. + +Dynamic workflows help alleviate some of the pressure on etcd storage space, providing a solution to mitigate storage constraints. + +## Dynamic workflows vs. map tasks + +Dynamic tasks come with overhead for large fan-out tasks as they store metadata for the entire workflow. +In contrast, {ref}`map tasks ` prove efficient for such extensive fan-out scenarios since they refrain from storing metadata, +resulting in less noticeable overhead. + +(advanced_merge_sort)= +## Merge sort + +Merge sort is a perfect example to showcase how to seamlessly achieve recursion using dynamic workflows. +Flyte imposes limitations on the depth of recursion to prevent misuse and potential impacts on the overall stability of the system. + +```{code-cell} +:lines_to_next_cell: 2 + +from typing import Tuple + +from flytekit import conditional, dynamic, task, workflow + + +@task +def split(numbers: list[int]) -> Tuple[list[int], list[int], int, int]: + return ( + numbers[0 : int(len(numbers) / 2)], + numbers[int(len(numbers) / 2) :], + int(len(numbers) / 2), + int(len(numbers)) - int(len(numbers) / 2), + ) + + +@task +def merge(sorted_list1: list[int], sorted_list2: list[int]) -> list[int]: + result = [] + while len(sorted_list1) > 0 and len(sorted_list2) > 0: + # Compare the current element of the first array with the current element of the second array. + # If the element in the first array is smaller, append it to the result and increment the first array index. + # Otherwise, do the same with the second array. + if sorted_list1[0] < sorted_list2[0]: + result.append(sorted_list1.pop(0)) + else: + result.append(sorted_list2.pop(0)) + + # Extend the result with the remaining elements from both arrays + result.extend(sorted_list1) + result.extend(sorted_list2) + + return result + + +@task +def sort_locally(numbers: list[int]) -> list[int]: + return sorted(numbers) + + +@dynamic +def merge_sort_remotely(numbers: list[int], run_local_at_count: int) -> list[int]: + split1, split2, new_count1, new_count2 = split(numbers=numbers) + sorted1 = merge_sort(numbers=split1, numbers_count=new_count1, run_local_at_count=run_local_at_count) + sorted2 = merge_sort(numbers=split2, numbers_count=new_count2, run_local_at_count=run_local_at_count) + return merge(sorted_list1=sorted1, sorted_list2=sorted2) + + +@workflow +def merge_sort(numbers: list[int], numbers_count: int, run_local_at_count: int = 5) -> list[int]: + return ( + conditional("terminal_case") + .if_(numbers_count <= run_local_at_count) + .then(sort_locally(numbers=numbers)) + .else_() + .then(merge_sort_remotely(numbers=numbers, run_local_at_count=run_local_at_count)) + ) +``` + +By simply adding the `@dynamic` annotation, the `merge_sort_remotely` function transforms into a plan of execution, +generating a Flyte workflow with four distinct nodes. These nodes run remotely on potentially different hosts, +with Flyte ensuring proper data reference passing and maintaining execution order with maximum possible parallelism. + +`@dynamic` is essential in this context because the number of times `merge_sort` needs to be triggered is unknown at compile time. +The dynamic workflow calls a static workflow, which subsequently calls the dynamic workflow again, +creating a recursive and flexible execution structure. + +## Run the example on the Flyte cluster + +To run the provided workflows on the Flyte cluster, you can use the following commands: + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/dynamic_workflow.py \ + dynamic_wf --s1 "Pear" --s2 "Earth" +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/dynamic_workflow.py \ + merge_sort --numbers '[1813, 3105, 3260, 2634, 383, 7037, 3291, 2403, 315, 7164]' --numbers_count 10 +``` diff --git a/docs/user_guide/advanced_composition/eager_workflows.md b/docs/user_guide/advanced_composition/eager_workflows.md new file mode 100644 index 00000000000..c2cc1dc5428 --- /dev/null +++ b/docs/user_guide/advanced_composition/eager_workflows.md @@ -0,0 +1,495 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(eager_workflows)= + +# Eager workflows + +```{eval-rst} +.. tags:: Intermediate +``` + +```{important} +This feature is experimental and the API is subject to breaking changes. +If you encounter any issues please consider submitting a +[bug report](https://github.com/flyteorg/flyte/issues/new?assignees=&labels=bug%2Cuntriaged&projects=&template=bug_report.yaml&title=%5BBUG%5D+). +``` + +So far, the two types of workflows you've seen are static workflows, which +are defined with `@workflow`-decorated functions or imperative `Workflow` class, +and dynamic workflows, which are defined with the `@dynamic` decorator. + +{ref}`Static workflows ` are created at compile time when you call `pyflyte run`, +`pyflyte register`, or `pyflyte serialize`. This means that the workflow is static +and cannot change its shape at any point: all of the variables defined as an input +to the workflow or as an output of a task or subworkflow are promises. +{ref}`Dynamic workflows `, on the other hand, are compiled +at runtime so that they can materialize the inputs of the workflow as Python values +and use them to determine the shape of the execution graph. + +In this guide you'll learn how to use eager workflows, which allow you to +create extremely flexible workflows that give you run-time access to +intermediary task/subworkflow outputs. + +## Why eager workflows? + +Both static and dynamic workflows have a key limitation: while they provide +compile-time and run-time type safety, respectively, they both suffer from +inflexibility in expressing asynchronous execution graphs that many Python +programmers may be accustomed to by using, for example, the +[asyncio](https://docs.python.org/3/library/asyncio.html) library. + +Unlike static and dynamic workflows, eager workflows allow you to use all of +the python constructs that you're familiar with via the `asyncio` API. To +understand what this looks like, let's define a very basic eager workflow +using the `@eager` decorator. + +```{code-cell} +:lines_to_next_cell: 2 + +from flytekit import task, workflow +from flytekit.experimental import eager + + +@task +def add_one(x: int) -> int: + return x + 1 + + +@task +def double(x: int) -> int: + return x * 2 + + +@eager +async def simple_eager_workflow(x: int) -> int: + out = await add_one(x=x) + if out < 0: + return -1 + return await double(x=out) +``` + ++++ {"lines_to_next_cell": 2} + +As we can see in the code above, we're defining an `async` function called +`simple_eager_workflow` that takes an integer as input and returns an integer. +By decorating this function with `@eager`, we now have the ability to invoke +tasks, static subworkflows, and even other eager subworkflows in an _eager_ +fashion such that we can materialize their outputs and use them inside the +parent eager workflow itself. + +In the `simple_eager_workflow` function, we can see that we're `await`ing +the output of the `add_one` task and assigning it to the `out` variable. If +`out` is a negative integer, the workflow will return `-1`. Otherwise, it +will double the output of `add_one` and return it. + +Unlike in static and dynamic workflows, this variable is actually +the Python integer that is the result of `x + 1` and not a promise. + +## How it works + +When you decorate a function with `@eager`, any function invoked within it +that's decorated with `@task`, `@workflow`, or `@eager` becomes +an [awaitable](https://docs.python.org/3/library/asyncio-task.html#awaitables) +object within the lifetime of the parent eager workflow execution. Note that +this happens automatically and you don't need to use the `async` keyword when +defining a task or workflow that you want to invoke within an eager workflow. + +```{important} +With eager workflows, you basically have access to the Python `asyncio` +interface to define extremely flexible execution graphs! The trade-off is that +you lose the compile-time type safety that you get with regular static workflows +and to a lesser extent, dynamic workflows. + +We're leveraging Python's native `async` capabilities in order to: + +1. Materialize the output of flyte tasks and subworkflows so you can operate + on them without spinning up another pod and also determine the shape of the + workflow graph in an extremely flexible manner. +2. Provide an alternative way of achieving concurrency in Flyte. Flyte has + concurrency built into it, so all tasks/subworkflows will execute concurrently + assuming that they don't have any dependencies on each other. However, eager + workflows provide a python-native way of doing this, with the main downside + being that you lose the benefits of statically compiled workflows such as + compile-time analysis and first-class data lineage tracking. +``` + +Similar to {ref}`dynamic workflows `, eager workflows are +actually tasks. The main difference is that, while dynamic workflows compile +a static workflow at runtime using materialized inputs, eager workflows do +not compile any workflow at all. Instead, they use the {py:class}`~flytekit.remote.remote.FlyteRemote` +object together with Python's `asyncio` API to kick off tasks and subworkflow +executions eagerly whenever you `await` on a coroutine. This means that eager +workflows can materialize an output of a task or subworkflow and use it as a +Python object in the underlying runtime environment. We'll see how to configure +`@eager` functions to run on a remote Flyte cluster +{ref}`later in this guide `. + +## What can you do with eager workflows? + +In this section we'll cover a few of the use cases that you can accomplish +with eager workflows, some of which you can't accomplish with static or dynamic +workflows. + +### Operating on task and subworkflow outputs + +One of the biggest benefits of eager workflows is that you can now materialize +task and subworkflow outputs as Python values and do operations on them just +like you would in any other Python function. Let's look at another example: + +```{code-cell} +@eager +async def another_eager_workflow(x: int) -> int: + out = await add_one(x=x) + + # out is a Python integer + out = out - 1 + + return await double(x=out) +``` + ++++ {"lines_to_next_cell": 0} + +Since out is an actual Python integer and not a promise, we can do operations +on it at runtime, inside the eager workflow function body. This is not possible +with static or dynamic workflows. + +### Pythonic conditionals + +As you saw in the `simple_eager_workflow` workflow above, you can use regular +Python conditionals in your eager workflows. Let's look at a more complicated +example: + +```{code-cell} +:lines_to_next_cell: 2 + +@task +def gt_100(x: int) -> bool: + return x > 100 + + +@eager +async def eager_workflow_with_conditionals(x: int) -> int: + out = await add_one(x=x) + + if out < 0: + return -1 + elif await gt_100(x=out): + return 100 + else: + out = await double(x=out) + + assert out >= -1 + return out +``` + +In the above example, we're using the eager workflow's Python runtime +to check if `out` is negative, but we're also using the `gt_100` task in the +`elif` statement, which will be executed in a separate Flyte task. + +### Loops + +You can also gather the outputs of multiple tasks or subworkflows into a list: + +```{code-cell} +import asyncio + + +@eager +async def eager_workflow_with_for_loop(x: int) -> int: + outputs = [] + + for i in range(x): + outputs.append(add_one(x=i)) + + outputs = await asyncio.gather(*outputs) + return await double(x=sum(outputs)) +``` + ++++ {"lines_to_next_cell": 0} + +### Static subworkflows + +You can also invoke static workflows from within an eager workflow: + +```{code-cell} +:lines_to_next_cell: 2 + +@workflow +def subworkflow(x: int) -> int: + out = add_one(x=x) + return double(x=out) + + +@eager +async def eager_workflow_with_static_subworkflow(x: int) -> int: + out = await subworkflow(x=x) + assert out == (x + 1) * 2 + return out +``` + ++++ {"lines_to_next_cell": 0} + +### Eager subworkflows + +You can have nest eager subworkflows inside a parent eager workflow: + +```{code-cell} +:lines_to_next_cell: 2 + +@eager +async def eager_subworkflow(x: int) -> int: + return await add_one(x=x) + + +@eager +async def nested_eager_workflow(x: int) -> int: + out = await eager_subworkflow(x=x) + return await double(x=out) +``` + ++++ {"lines_to_next_cell": 0} + +### Catching exceptions + +You can also catch exceptions in eager workflows through `EagerException`: + +```{code-cell} +:lines_to_next_cell: 2 + +from flytekit.experimental import EagerException + + +@task +def raises_exc(x: int) -> int: + if x <= 0: + raise TypeError + return x + + +@eager +async def eager_workflow_with_exception(x: int) -> int: + try: + return await raises_exc(x=x) + except EagerException: + return -1 +``` + +Even though the `raises_exc` exception task raises a `TypeError`, the +`eager_workflow_with_exception` runtime will raise an `EagerException` and +you'll need to specify `EagerException` as the exception type in your `try... except` +block. + +```{note} +This is a current limitation in the `@eager` workflow implementation. +```` + +## Executing eager workflows + +As with most Flyte constructs, you can execute eager workflows both locally +and remotely. + +### Local execution + +You can execute eager workflows locally by simply calling them like a regular +`async` function: + +```{code-cell} +if __name__ == "__main__": + result = asyncio.run(simple_eager_workflow(x=5)) + print(f"Result: {result}") # "Result: 12" +``` + +This just uses the `asyncio.run` function to execute the eager workflow just +like any other Python async code. This is useful for local debugging as you're +developing your workflows and tasks. + +(eager_workflows_remote)= + +### Remote Flyte cluster execution + +Under the hood, `@eager` workflows use the {py:class}`~flytekit.remote.remote.FlyteRemote` +object to kick off task, static workflow, and eager workflow executions. + +In order to actually execute them on a Flyte cluster, you'll need to configure +eager workflows with a `FlyteRemote` object and secrets configuration that +allows you to authenticate into the cluster via a client secret key. + +```{code-block} python +from flytekit.remote import FlyteRemote +from flytekit.configuration import Config + +@eager( + remote=FlyteRemote( + config=Config.auto(config_file="config.yaml"), + default_project="flytesnacks", + default_domain="development", + ), + client_secret_group="", + client_secret_key="", +) +async def eager_workflow_remote(x: int) -> int: + ... +``` + ++++ + +Where `config.yaml` contains a +[flytectl](https://docs.flyte.org/projects/flytectl/en/latest/#configuration)-compatible +config file and `my_client_secret_group` and `my_client_secret_key` are the +{ref}`secret group and key ` that you've configured for your Flyte +cluster to authenticate via a client key. + ++++ + +### Sandbox Flyte cluster execution + +When using a sandbox cluster started with `flytectl demo start`, however, the +`client_secret_group` and `client_secret_key` are not required, since the +default sandbox configuration does not require key-based authentication. + +```{code-cell} +:lines_to_next_cell: 2 + +from flytekit.configuration import Config +from flytekit.remote import FlyteRemote + + +@eager( + remote=FlyteRemote( + config=Config.for_sandbox(), + default_project="flytesnacks", + default_domain="development", + ) +) +async def eager_workflow_sandbox(x: int) -> int: + out = await add_one(x=x) + if out < 0: + return -1 + return await double(x=out) +``` + +```{important} +When executing eager workflows on a remote Flyte cluster, it will execute the +latest version of tasks, static workflows, and eager workflows that are on +the `default_project` and `default_domain` as specified in the `FlyteRemote` +object. This means that you need to pre-register all Flyte entities that are +invoked inside of the eager workflow. +``` + +### Registering and running + +Assuming that your `flytekit` code is configured correctly, you will need to +register all of the task and subworkflows that are used with your eager +workflow with `pyflyte register`: + +```{prompt} bash +pyflyte --config register \ + --project \ + --domain \ + --image \ + path/to/eager_workflows.py +``` + +And then run it with `pyflyte run`: + +```{prompt} bash +pyflyte --config run \ + --project \ + --domain \ + --image \ + path/to/eager_workflows.py simple_eager_workflow --x 10 +``` + +```{note} +You need to register the tasks/workflows associated with your eager workflow +because eager workflows are actually flyte tasks under the hood, which means +that `pyflyte run` has no way of knowing what tasks and subworkflows are +invoked inside of it. +``` + +## Eager workflows on Flyte console + +Since eager workflows are an experimental feature, there is currently no +first-class representation of them on Flyte Console, the UI for Flyte. +When you register an eager workflow, you'll be able to see it in the task view: + +:::{figure} https://github.com/flyteorg/static-resources/blob/main/flytesnacks/user_guide/flyte_eager_workflow_ui_view.png?raw=true +:alt: Eager Workflow UI View +:class: with-shadow +::: + +When you execute an eager workflow, the tasks and subworkflows invoked within +it **won't show up** on the node, graph, or timeline view. As mentioned above, +this is because eager workflows are actually Flyte tasks under the hood and +Flyte has no way of knowing the shape of the execution graph before actually +executing them. + +:::{figure} https://github.com/flyteorg/static-resources/blob/main/flytesnacks/user_guide/flyte_eager_workflow_execution.png?raw=true +:alt: Eager Workflow Execution +:class: with-shadow +::: + +However, at the end of execution, you'll be able to use {ref}`Flyte Decks ` +to see a list of all the tasks and subworkflows that were executed within the +eager workflow: + +:::{figure} https://github.com/flyteorg/static-resources/blob/main/flytesnacks/user_guide/flyte_eager_workflow_deck.png?raw=true +:alt: Eager Workflow Deck +:class: with-shadow +::: + +## Limitations + +As this feature is still experimental, there are a few limitations that you +need to keep in mind: + +- You cannot invoke {ref}`dynamic workflows `, + {ref}`map tasks `, or {ref}`launch plans ` inside an + eager workflow. +- [Context managers](https://docs.python.org/3/library/contextlib.html) will + only work on locally executed functions within the eager workflow, i.e. using a + context manager to modify the behavior of a task or subworkflow will not work + because they are executed on a completely different pod. +- All exceptions raised by Flyte tasks or workflows will be caught and raised + as an {py:class}`~flytekit.experimental.EagerException` at runtime. +- All task/subworkflow outputs are materialized as Python values, which includes + offloaded types like `FlyteFile`, `FlyteDirectory`, `StructuredDataset`, and + `pandas.DataFrame` will be fully downloaded into the pod running the eager workflow. + This prevents you from incrementally downloading or streaming very large datasets + in eager workflows. +- Flyte entities that are invoked inside of an eager workflow must be registered + under the same project and domain as the eager workflow itself. The eager + workflow will execute the latest version of these entities. +- Flyte console currently does not have a first-class way of viewing eager + workflows, but it can be accessed via the task list view and the execution + graph is viewable via Flyte Decks. + +## Summary of workflows + +Eager workflows are a powerful new construct that trades-off compile-time type +safety for flexibility in the shape of the execution graph. The table below +will help you to reason about the different workflow constructs in Flyte in terms +of promises and materialized values: + +| Construct | Description | Flyte Promises | Pro | Con | +|--------|--------|--------|----|----| +| `@workflow` | Compiled at compile-time | All inputs and intermediary outputs are promises | Type errors caught at compile-time | Constrained by Flyte DSL | +| `@dynamic` | Compiled at run-time | Inputs are materialized, but outputs of all Flyte entities are Promises | More flexible than `@workflow`, e.g. can do Python operations on inputs | Can't use a lot of Python constructs (e.g. try/except) | +| `@eager` | Never compiled | Everything is materialized! | Can effectively use all Python constructs via `asyncio` syntax | No compile-time benefits, this is the wild west 🏜 | diff --git a/docs/user_guide/advanced_composition/index.md b/docs/user_guide/advanced_composition/index.md new file mode 100644 index 00000000000..26eb8df33cf --- /dev/null +++ b/docs/user_guide/advanced_composition/index.md @@ -0,0 +1,24 @@ +(advanced_composition)= + +# Advanced composition + +This section of the user guide introduces the advanced features of the Flytekit Python SDK. +These examples cover more complex aspects of Flyte, including conditions, subworkflows, +dynamic workflows, map tasks, gate nodes and more. + +```{toctree} +:maxdepth: -1 +:name: advanced_composition_toc +:hidden: + +conditionals +chaining_flyte_entities +subworkflows +dynamic_workflows +map_tasks +eager_workflows +decorating_tasks +decorating_workflows +intratask_checkpoints +waiting_for_external_inputs +``` diff --git a/docs/user_guide/advanced_composition/intratask_checkpoints.md b/docs/user_guide/advanced_composition/intratask_checkpoints.md new file mode 100644 index 00000000000..703279abcb5 --- /dev/null +++ b/docs/user_guide/advanced_composition/intratask_checkpoints.md @@ -0,0 +1,137 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +# Intratask checkpoints + +```{eval-rst} +.. tags:: MachineLearning, Intermediate +``` + +A checkpoint in Flyte serves to recover a task from a previous failure by preserving the task's state before the failure +and resuming from the latest recorded state. + +## Why intratask checkpoints? + +The inherent design of Flyte, being a workflow engine, allows users to break down operations, programs or ideas +into smaller tasks within workflows. In the event of a task failure, the workflow doesn't need to rerun the +previously completed tasks. Instead, it can retry the specific task that encountered an issue. +Once the problematic task succeeds, it won't be rerun. Consequently, the natural boundaries between tasks act as implicit checkpoints. + +However, there are scenarios where breaking a task into smaller tasks is either challenging or undesirable due to the associated overhead. +This is especially true when running a substantial computation in a tight loop. +In such cases, users may consider splitting each loop iteration into individual tasks using dynamic workflows. +Yet, the overhead of spawning new tasks, recording intermediate results, and reconstructing the state can incur additional expenses. + +### Use case: Model training + +An exemplary scenario illustrating the utility of intra-task checkpointing is during model training. +In situations where executing multiple epochs or iterations with the same dataset might be time-consuming, +setting task boundaries can incur a high bootstrap time and be costly. + +Flyte addresses this challenge by providing a mechanism to checkpoint progress within a task execution, +saving it as a file or set of files. In the event of a failure, the checkpoint file can be re-read to +resume most of the state without rerunning the entire task. +This feature opens up possibilities to leverage alternate, more cost-effective compute systems, +such as [AWS spot instances](https://aws.amazon.com/ec2/spot/), +[GCP pre-emptible instances](https://cloud.google.com/compute/docs/instances/preemptible) and others. + +These instances offer great performance at significantly lower price points compared to their on-demand or reserved counterparts. +This becomes feasible when tasks are constructed in a fault-tolerant manner. +For tasks running within a short duration, e.g., less than 10 minutes, the likelihood of failure is negligible, +and task-boundary-based recovery provides substantial fault tolerance for successful completion. + +However, as the task execution time increases, the cost of re-running it also increases, +reducing the chances of successful completion. This is precisely where Flyte's intra-task checkpointing proves to be highly beneficial. + +Here's an example illustrating how to develop tasks that leverage intra-task checkpointing. +It's important to note that Flyte currently offers the low-level API for checkpointing. +Future integrations aim to incorporate higher-level checkpointing APIs from popular training frameworks +like Keras, PyTorch, Scikit-learn, and big-data frameworks such as Spark and Flink, enhancing their fault-tolerance capabilities. + +To begin, import the necessary libraries and set the number of task retries to `3`. + +```{code-cell} +from flytekit import current_context, task, workflow +from flytekit.exceptions.user import FlyteRecoverableException + +RETRIES = 3 +``` + ++++ {"lines_to_next_cell": 0} + +We define a task to iterate precisely `n_iterations`, checkpoint its state, and recover from simulated failures. + +```{code-cell} +@task(retries=RETRIES) +def use_checkpoint(n_iterations: int) -> int: + cp = current_context().checkpoint + prev = cp.read() + + start = 0 + if prev: + start = int(prev.decode()) + + # Create a failure interval to simulate failures across 'n' iterations and then succeed after configured retries + failure_interval = n_iterations // RETRIES + index = 0 + for index in range(start, n_iterations): + # Simulate a deterministic failure for demonstration. Showcasing how it eventually completes within the given retries + if index > start and index % failure_interval == 0: + raise FlyteRecoverableException(f"Failed at iteration {index}, failure_interval {failure_interval}.") + # Save progress state. It is also entirely possible to save state every few intervals + cp.write(f"{index + 1}".encode()) + return index +``` + ++++ {"lines_to_next_cell": 0} + +The checkpoint system offers additional APIs, documented in the code accessible at +[checkpointer code](https://github.com/flyteorg/flytekit/blob/master/flytekit/core/checkpointer.py). + +Create a workflow that invokes the task. +The task will automatically undergo retries in the event of a {ref}`FlyteRecoverableException `. + +```{code-cell} +@workflow +def checkpointing_example(n_iterations: int) -> int: + return use_checkpoint(n_iterations=n_iterations) +``` + ++++ {"lines_to_next_cell": 0} + +The local checkpoint is not utilized here because retries are not supported. + +```{code-cell} +if __name__ == "__main__": + try: + checkpointing_example(n_iterations=10) + except RuntimeError as e: # noqa : F841 + # Since no retries are performed, an exception is expected when run locally + pass +``` + +## Run the example on the Flyte cluster + +To run the provided workflow on the Flyte cluster, use the following command: + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/checkpoint.py \ + checkpointing_example --n_iterations 10 +``` diff --git a/docs/user_guide/advanced_composition/map_tasks.md b/docs/user_guide/advanced_composition/map_tasks.md new file mode 100644 index 00000000000..6449b6d1247 --- /dev/null +++ b/docs/user_guide/advanced_composition/map_tasks.md @@ -0,0 +1,278 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(map_task)= + +# Map tasks + +```{eval-rst} +.. tags:: Intermediate +``` + +Using a map task in Flyte allows for the execution of a pod task or a regular task across a series of inputs within a single workflow node. +This capability eliminates the need to create individual nodes for each instance, leading to substantial performance improvements. + +Map tasks find utility in diverse scenarios, such as: + +1. Executing the same code logic on multiple inputs +2. Concurrent processing of multiple data batches +3. Hyperparameter optimization + +The following examples demonstrate how to use map tasks with both single and multiple inputs. + +To begin, import the required libraries. + +```{code-cell} +from flytekit import map_task, task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +Here's a simple workflow that uses {py:func}`map_task `. + +```{code-cell} +threshold = 11 + + +@task +def detect_anomalies(data_point: int) -> bool: + return data_point > threshold + + +@workflow +def map_workflow(data: list[int] = [10, 12, 11, 10, 13, 12, 100, 11, 12, 10]) -> list[bool]: + # Use the map task to apply the anomaly detection function to each data point + return map_task(detect_anomalies)(data_point=data) + + +if __name__ == "__main__": + print(f"Anomalies Detected: {map_workflow()}") +``` + ++++ {"lines_to_next_cell": 0} + +To customize resource allocations, such as memory usage for individual map tasks, +you can leverage `with_overrides`. Here's an example using the `detect_anomalies` map task within a workflow: + +```python +from flytekit import Resources + + +@workflow +def map_workflow_with_resource_overrides(data: list[int] = [10, 12, 11, 10, 13, 12, 100, 11, 12, 10]) -> list[bool]: + return map_task(detect_anomalies)(data_point=data).with_overrides(requests=Resources(mem="2Gi")) +``` + +You can use {py:class}`~flytekit.TaskMetadata` to set attributes such as `cache`, `cache_version`, `interruptible`, `retries` and `timeout`. +```python +from flytekit import TaskMetadata + + +@workflow +def map_workflow_with_metadata(data: list[int] = [10, 12, 11, 10, 13, 12, 100, 11, 12, 10]) -> list[bool]: + return map_task(detect_anomalies, metadata=TaskMetadata(cache=True, cache_version="0.1", retries=1))( + data_point=data + ) +``` + +You can also configure `concurrency` and `min_success_ratio` for a map task: +- `concurrency` limits the number of mapped tasks that can run in parallel to the specified batch size. +If the input size exceeds the concurrency value, multiple batches will run serially until all inputs are processed. +If left unspecified, it implies unbounded concurrency. +- `min_success_ratio` determines the minimum fraction of total jobs that must complete successfully before terminating +the map task and marking it as successful. + +```python +@workflow +def map_workflow_with_additional_params(data: list[int] = [10, 12, 11, 10, 13, 12, 100, 11, 12, 10]) -> list[bool]: + return map_task(detect_anomalies, concurrency=1, min_success_ratio=0.75)(data_point=data) +``` + +A map task internally uses a compression algorithm (bitsets) to handle every Flyte workflow node’s metadata, +which would have otherwise been in the order of 100s of bytes. + +When defining a map task, avoid calling other tasks in it. Flyte +can't accurately register tasks that call other tasks. While Flyte +will correctly execute a task that calls other tasks, it will not be +able to give full performance advantages. This is +especially true for map tasks. + +In this example, the map task `suboptimal_mappable_task` would not +give you the best performance. + +```{code-cell} +@task +def upperhalf(a: int) -> int: + return a / 2 + 1 + + +@task +def suboptimal_mappable_task(a: int) -> str: + inc = upperhalf(a=a) + stringified = str(inc) + return stringified +``` + ++++ {"lines_to_next_cell": 0} + +By default, the map task utilizes the Kubernetes array plugin for execution. +However, map tasks can also be run on alternate execution backends. +For example, you can configure the map task to run on +[AWS Batch](https://docs.flyte.org/en/latest/deployment/plugin_setup/aws/batch.html#deployment-plugin-setup-aws-array), +a provisioned service that offers scalability for handling large-scale tasks. + +## Map a task with multiple inputs + +You might need to map a task with multiple inputs. + +For instance, consider a task that requires three inputs. + +```{code-cell} +@task +def multi_input_task(quantity: int, price: float, shipping: float) -> float: + return quantity * price * shipping +``` + ++++ {"lines_to_next_cell": 0} + +You may want to map this task with only the ``quantity`` input, while keeping the other inputs unchanged. +Since a map task accepts only one input, you can achieve this by partially binding values to the map task. +This can be done using the {py:func}`functools.partial` function. + +```{code-cell} +import functools + + +@workflow +def multiple_inputs_map_workflow(list_q: list[int] = [1, 2, 3, 4, 5], p: float = 6.0, s: float = 7.0) -> list[float]: + partial_task = functools.partial(multi_input_task, price=p, shipping=s) + return map_task(partial_task)(quantity=list_q) +``` + ++++ {"lines_to_next_cell": 0} + +Another possibility is to bind the outputs of a task to partials. + +```{code-cell} +@task +def get_price() -> float: + return 7.0 + + +@workflow +def map_workflow_partial_with_task_output(list_q: list[int] = [1, 2, 3, 4, 5], s: float = 6.0) -> list[float]: + p = get_price() + partial_task = functools.partial(multi_input_task, price=p, shipping=s) + return map_task(partial_task)(quantity=list_q) +``` + ++++ {"lines_to_next_cell": 0} + +You can also provide multiple lists as input to a ``map_task``. + +```{code-cell} +:lines_to_next_cell: 2 + +@workflow +def map_workflow_with_lists( + list_q: list[int] = [1, 2, 3, 4, 5], list_p: list[float] = [6.0, 9.0, 8.7, 6.5, 1.2], s: float = 6.0 +) -> list[float]: + partial_task = functools.partial(multi_input_task, shipping=s) + return map_task(partial_task)(quantity=list_q, price=list_p) +``` + +```{note} +It is important to note that you cannot provide a list as an input to a partial task. +``` + +## Run the example on the Flyte cluster + +To run the provided workflows on the Flyte cluster, use the following commands: + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/map_task.py \ + map_workflow +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/map_task.py \ + map_workflow_with_additional_params +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/map_task.py \ + multiple_inputs_map_workflow +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/map_task.py \ + map_workflow_partial_with_task_output +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/map_task.py \ + map_workflow_with_lists +``` + +## ArrayNode + +:::{important} +This feature is experimental and the API is subject to breaking changes. +If you encounter any issues please consider submitting a +[bug report](https://github.com/flyteorg/flyte/issues/new?assignees=&labels=bug%2Cuntriaged&projects=&template=bug_report.yaml&title=%5BBUG%5D+). +::: + +ArrayNode map tasks serve as a seamless substitution for regular map tasks, differing solely in the submodule +utilized to import the `map_task` function. Specifically, you will need to import `map_task` from the experimental module as illustrated below: + +```python +from flytekit import task, workflow +from flytekit.experimental import map_task + +@task +def t(a: int) -> int: + ... + +@workflow +def array_node_wf(xs: list[int]) -> list[int]: + return map_task(t)(a=xs) +``` + +Flyte introduces map task to enable parallelization of homogeneous operations, +offering efficient evaluation and a user-friendly API. Because it’s implemented as a backend plugin, +its evaluation is independent of core Flyte logic, which generates subtask executions that lack full Flyte functionality. +ArrayNode tackles this issue by offering robust support for subtask executions. +It also extends mapping capabilities across all plugins and Flyte node types. +This enhancement will be a part of our move from the experimental phase to general availability. + +In contrast to map tasks, an ArrayNode provides the following enhancements: + +- **Wider mapping support**. ArrayNode extends mapping capabilities beyond Kubernetes tasks, encompassing tasks such as Python tasks, container tasks and pod tasks. +- **Cache management**. It supports both cache serialization and cache overwriting for subtask executions. +- **Intra-task checkpointing**. ArrayNode enables intra-task checkpointing, contributing to improved execution reliability. +- **Workflow recovery**. Subtasks remain recoverable during the workflow recovery process. (This is a work in progress.) +- **Subtask failure handling**. The mechanism handles subtask failures effectively, ensuring that running subtasks are appropriately aborted. +- **Multiple input values**. Subtasks can be defined with multiple input values, enhancing their versatility. + +We expect the performance of ArrayNode map tasks to compare closely to standard map tasks. diff --git a/docs/user_guide/advanced_composition/subworkflows.md b/docs/user_guide/advanced_composition/subworkflows.md new file mode 100644 index 00000000000..59826aa4917 --- /dev/null +++ b/docs/user_guide/advanced_composition/subworkflows.md @@ -0,0 +1,182 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(subworkflow)= + +# Subworkflows + +```{eval-rst} +.. tags:: Intermediate +``` + +Subworkflows share similarities with {ref}`launch plans `, as both enable users to initiate one workflow from within another. +The distinction lies in the analogy: think of launch plans as "pass by pointer" and subworkflows as "pass by value." + +## When to use subworkflows? + +Subworkflows offer an elegant solution for managing parallelism between a workflow and its launched sub-flows, +as they execute within the same context as the parent workflow. +Consequently, all nodes of a subworkflow adhere to the overall constraints imposed by the parent workflow. + +Consider this scenario: when workflow `A` is integrated as a subworkflow of workflow `B`, +running workflow `B` results in the entire graph of workflow `A` being duplicated into workflow `B` at the point of invocation. + +Here's an example illustrating the calculation of slope, intercept and the corresponding y-value. + +```{code-cell} +from flytekit import task, workflow + + +@task +def slope(x: list[int], y: list[int]) -> float: + sum_xy = sum([x[i] * y[i] for i in range(len(x))]) + sum_x_squared = sum([x[i] ** 2 for i in range(len(x))]) + n = len(x) + return (n * sum_xy - sum(x) * sum(y)) / (n * sum_x_squared - sum(x) ** 2) + + +@task +def intercept(x: list[int], y: list[int], slope: float) -> float: + mean_x = sum(x) / len(x) + mean_y = sum(y) / len(y) + intercept = mean_y - slope * mean_x + return intercept + + +@workflow +def slope_intercept_wf(x: list[int], y: list[int]) -> (float, float): + slope_value = slope(x=x, y=y) + intercept_value = intercept(x=x, y=y, slope=slope_value) + return (slope_value, intercept_value) + + +@task +def regression_line(val: int, slope_value: float, intercept_value: float) -> float: + return (slope_value * val) + intercept_value # y = mx + c + + +@workflow +def regression_line_wf(val: int = 5, x: list[int] = [-3, 0, 3], y: list[int] = [7, 4, -2]) -> float: + slope_value, intercept_value = slope_intercept_wf(x=x, y=y) + return regression_line(val=val, slope_value=slope_value, intercept_value=intercept_value) +``` + ++++ {"lines_to_next_cell": 0} + +The `slope_intercept_wf` computes the slope and intercept of the regression line. +Subsequently, the `regression_line_wf` triggers `slope_intercept_wf` and then computes the y-value. + +To execute the workflow locally, use the following: + +```{code-cell} +if __name__ == "__main__": + print(f"Executing regression_line_wf(): {regression_line_wf()}") +``` + ++++ {"lines_to_next_cell": 0} + +It's possible to nest a workflow that contains a subworkflow within another workflow. +Workflows can be easily constructed from other workflows, even if they function as standalone entities. +Each workflow in this module has the capability to exist and run independently. + +```{code-cell} +@workflow +def nested_regression_line_wf() -> float: + return regression_line_wf() +``` + ++++ {"lines_to_next_cell": 0} + +You can run the nested workflow locally as well. + +```{code-cell} +if __name__ == "__main__": + print(f"Running nested_regression_line_wf(): {nested_regression_line_wf()}") +``` + ++++ {"lines_to_next_cell": 0} + +## External workflow + +When launch plans are employed within a workflow to initiate the execution of a pre-defined workflow, +a new external execution is triggered. This results in a distinct execution ID and can be identified +as a separate entity. + +These external invocations of a workflow, initiated using launch plans from a parent workflow, +are termed as external workflows. They may have separate parallelism constraints since the context is not shared. + +:::{tip} +If your deployment uses {ref}`multiple Kubernetes clusters `, +external workflows may offer a way to distribute the workload of a workflow across multiple clusters. +::: + +Here's an example that illustrates the concept of external workflows: + +```{code-cell} + +from flytekit import LaunchPlan + +launch_plan = LaunchPlan.get_or_create( + regression_line_wf, "regression_line_workflow", default_inputs={"val": 7, "x": [-3, 0, 3], "y": [7, 4, -2]} +) + + +@workflow +def nested_regression_line_lp() -> float: + # Trigger launch plan from within a workflow + return launch_plan() +``` + ++++ {"lines_to_next_cell": 0} + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_external_workflow_execution.png +:alt: External workflow execution +:class: with-shadow +::: + +In the console screenshot above, note that the launch plan execution ID differs from that of the workflow. + +You can run a workflow containing an external workflow locally as follows: + +```{code-cell} +if __name__ == "__main__": + print(f"Running nested_regression_line_lp(): {nested_regression_line_lp}") +``` + +## Run the example on a Flyte cluster + +To run the provided workflows on a Flyte cluster, use the following commands: + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/subworkflow.py \ + regression_line_wf +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/subworkflow.py \ + nested_regression_line_wf +``` + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/advanced_composition/advanced_composition/subworkflow.py \ + nested_regression_line_lp +``` diff --git a/docs/user_guide/advanced_composition/waiting_for_external_inputs.md b/docs/user_guide/advanced_composition/waiting_for_external_inputs.md new file mode 100644 index 00000000000..d694b624430 --- /dev/null +++ b/docs/user_guide/advanced_composition/waiting_for_external_inputs.md @@ -0,0 +1,314 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +# Waiting for external inputs + +*New in Flyte 1.3.0* + +There are use cases where you may want a workflow execution to pause, only to continue +when some time has passed or when it receives some inputs that are external to +the workflow execution inputs. You can think of these as execution-time inputs, +since they need to be supplied to the workflow after it's launched. Examples of +this use case would be: + +1. **Model Deployment**: A hyperparameter-tuning workflow that + trains `n` models, where a human needs to inspect a report before approving + the model for downstream deployment to some serving layer. +2. **Data Labeling**: A workflow that iterates through an image dataset, + presenting individual images to a human annotator for them to label. +3. **Active Learning**: An [active learning]() + workflow that trains a model, shows examples for a human annotator to label + based which examples it's least/most certain about or would provide the most + information to the model. + +These use cases can be achieved in Flyte with the {func}`~flytekit.sleep`, +{func}`~flytekit.wait_for_input`, and {func}`~flytekit.approve` workflow nodes. +Although all of the examples above are human-in-the-loop processes, these +constructs allow you to pass inputs into a workflow from some arbitrary external +process (👩 human or 🤖 machine) in order to continue. + +:::{important} +These functions can only be used inside {func}`@workflow `-decorated +functions, {func}`@dynamic `-decorated functions, or +{ref}`imperative workflows `. +::: + +## Pause executions with the `sleep` node + +The simplest case is when you want your workflow to {py:func}`~flytekit.sleep` +for some specified amount of time before continuing. + +Though this type of node may not be used often in a production setting, +you might want to use it, for example, if you want to simulate a delay in +your workflow to mock out the behavior of some long-running computation. + +```{code-cell} +from datetime import timedelta + +from flytekit import sleep, task, workflow + + +@task +def long_running_computation(num: int) -> int: + """A mock task pretending to be a long-running computation.""" + return num + + +@workflow +def sleep_wf(num: int) -> int: + """Simulate a "long-running" computation with sleep.""" + + # increase the sleep duration to actually make it long-running + sleeping = sleep(timedelta(seconds=10)) + result = long_running_computation(num=num) + sleeping >> result + return result +``` + ++++ {"lines_to_next_cell": 0} + +As you can see above, we define a simple `add_one` task and a `sleep_wf` +workflow. We first create a `sleeping` and `result` node, then +order the dependencies with the `>>` operator such that the workflow sleeps +for 10 seconds before kicking off the `result` computation. Finally, we +return the `result`. + +:::{note} +You can learn more about the `>>` chaining operator +{ref}`here `. +::: + +Now that you have a general sense of how this works, let's move onto the +{func}`~flytekit.wait_for_input` workflow node. + +## Supply external inputs with `wait_for_input` + +With the {py:func}`~flytekit.wait_for_input` node, you can pause a +workflow execution that requires some external input signal. For example, +suppose that you have a workflow that publishes an automated analytics report, +but before publishing it you want to give it a custom title. You can achieve +this by defining a `wait_for_input` node that takes a `str` input and +finalizes the report: + +```{code-cell} +import typing + +from flytekit import wait_for_input + + +@task +def create_report(data: typing.List[float]) -> dict: # o0 + """A toy report task.""" + return { + "mean": sum(data) / len(data), + "length": len(data), + "max": max(data), + "min": min(data), + } + + +@task +def finalize_report(report: dict, title: str) -> dict: + return {"title": title, **report} + + +@workflow +def reporting_wf(data: typing.List[float]) -> dict: + report = create_report(data=data) + title_input = wait_for_input("title", timeout=timedelta(hours=1), expected_type=str) + return finalize_report(report=report, title=title_input) +``` + +Let's breakdown what's happening in the code above: + +- In `reporting_wf` we first create the raw `report` +- Then, we define a `title` node that will wait for a string to be provided + through the Flyte API, which can be done through the Flyte UI or through + `FlyteRemote` (more on that later). This node will time out after 1 hour. +- Finally, we pass the `title_input` promise into `finalize_report`, which + attaches the custom title to the report. + +:::{note} +The `create_report` task is just toy example. In a realistic example, this +report might be an html file or set of visualizations. This can be rendered +in the Flyte UI with {ref}`Flyte Decks `. +::: + +As mentioned in the beginning of this page, this construct can be used for +selecting the best-performing model in cases where there isn't a clear single +metric to determine the best model, or if you're doing data labeling using +a Flyte workflow. + +## Continue executions with `approve` + +Finally, the {py:func}`~flytekit.approve` workflow node allows you to wait on +an explicit approval signal before continuing execution. Going back to our +report-publishing use case, suppose that we want to block the publishing of +a report for some reason (e.g. if they don't appear to be valid): + +```{code-cell} +from flytekit import approve + + +@workflow +def reporting_with_approval_wf(data: typing.List[float]) -> dict: + report = create_report(data=data) + title_input = wait_for_input("title", timeout=timedelta(hours=1), expected_type=str) + final_report = finalize_report(report=report, title=title_input) + + # approve the final report, where the output of approve is the final_report + # dictionary. + return approve(final_report, "approve-final-report", timeout=timedelta(hours=2)) +``` + ++++ {"lines_to_next_cell": 0} + +The `approve` node will pass the `final_report` promise through as the +output of the workflow, provided that the `approve-final-report` gets an +approval input via the Flyte UI or Flyte API. + +You can also use the output of the `approve` function as a promise, feeding +it to a subsequent task. Let's create a version of our report-publishing +workflow where the approval happens after `create_report`: + +```{code-cell} +@workflow +def approval_as_promise_wf(data: typing.List[float]) -> dict: + report = create_report(data=data) + title_input = wait_for_input("title", timeout=timedelta(hours=1), expected_type=str) + + # wait for report to run so that the user can view it before adding a custom + # title to the report + report >> title_input + + final_report = finalize_report( + report=approve(report, "raw-report-approval", timeout=timedelta(hours=2)), + title=title_input, + ) + return final_report +``` + ++++ {"lines_to_next_cell": 0} + +## Working with conditionals + +The node constructs by themselves are useful, but they become even more +useful when we combine them with other Flyte constructs, like {ref}`conditionals `. + +To illustrate this, let's extend the report-publishing use case so that we +produce an "invalid report" output in case we don't approve the final report: + +```{code-cell} +:lines_to_next_cell: 2 + +from flytekit import conditional + + +@task +def invalid_report() -> dict: + return {"invalid_report": True} + + +@workflow +def conditional_wf(data: typing.List[float]) -> dict: + report = create_report(data=data) + title_input = wait_for_input("title-input", timeout=timedelta(hours=1), expected_type=str) + + # Define a "review-passes" wait_for_input node so that a human can review + # the report before finalizing it. + review_passed = wait_for_input("review-passes", timeout=timedelta(hours=2), expected_type=bool) + report >> review_passed + + # This conditional returns the finalized report if the review passes, + # otherwise it returns an invalid report output. + return ( + conditional("final-report-condition") + .if_(review_passed.is_true()) + .then(finalize_report(report=report, title=title_input)) + .else_() + .then(invalid_report()) + ) +``` + +On top of the `approved` node, which we use in the `conditional` to +determine which branch to execute, we also define a `disapprove_reason` +gate node, which will be used as an input to the `invalid_report` task. + +## Sending inputs to `wait_for_input` and `approve` nodes + +Assuming that you've registered the above workflows on a Flyte cluster that's +been started with {ref}`flytectl demo start `, +there are two ways of using `wait_for_input` and `approve` nodes: + +### Using the Flyte UI + +If you launch the `reporting_wf` workflow on the Flyte UI, you'll see a +**Graph** view of the workflow execution like this: + +```{image} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/wait_for_input_graph.png +:alt: reporting workflow wait for input graph +``` + +Clicking on the {fa}`play-circle,style=far` icon of the `title` task node or the +**Resume** button on the sidebar will create a modal form that you can use to +provide the custom title input. + +```{image} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/wait_for_input_form.png +:alt: reporting workflow wait for input form +``` + +### Using `FlyteRemote` + +For many cases it's enough to use Flyte UI to provide inputs/approvals on +gate nodes. However, if you want to pass inputs to `wait_for_input` and +`approve` nodes programmatically, you can use the +{py:meth}`FlyteRemote.set_signal ` +method. Using the `gate_node_with_conditional_wf` workflow, the example +below allows you to set values for `title-input` and `review-passes` nodes. + +```python +import typing +from flytekit.remote.remote import FlyteRemote +from flytekit.configuration import Config + +remote = FlyteRemote( + Config.for_sandbox(), + default_project="flytesnacks", + default_domain="development", +) + +# First kick off the wotrkflow +flyte_workflow = remote.fetch_workflow( + name="core.control_flow.waiting_for_external_inputs.conditional_wf" +) + +# Execute the workflow +execution = remote.execute(flyte_workflow, inputs={"data": [1.0, 2.0, 3.0, 4.0, 5.0]}) + +# Get a list of signals available for the execution +signals = remote.list_signals(execution.id.name) + +# Set a signal value for the "title" node. Make sure that the "title-input" +# node is in the `signals` list above +remote.set_signal("title-input", execution.id.name, "my report") + +# Set signal value for the "review-passes" node. Make sure that the "review-passes" +# node is in the `signals` list above +remote.set_signal("review-passes", execution.id.name, True) +``` diff --git a/docs/user_guide/basics/documenting_workflows.md b/docs/user_guide/basics/documenting_workflows.md new file mode 100644 index 00000000000..d6a561c5328 --- /dev/null +++ b/docs/user_guide/basics/documenting_workflows.md @@ -0,0 +1,157 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +# Documenting workflows + +```{eval-rst} +.. tags:: Basic +``` + +Well-documented code significantly improves code readability. +Flyte enables the use of docstrings to document your code. +Docstrings are stored in [FlyteAdmin](https://docs.flyte.org/en/latest/concepts/admin.html) +and displayed on the UI. + +To begin, import the relevant libraries. + +```{code-cell} +from typing import Tuple + +from flytekit import workflow +``` + ++++ {"lines_to_next_cell": 0} + +We import the `slope` and `intercept` tasks from the `workflow.py` file. + +```{code-cell} +from .workflow import intercept, slope +``` + ++++ {"lines_to_next_cell": 0} + +## Sphinx-style docstring + +An example to demonstrate Sphinx-style docstring. + +The initial section of the docstring provides a concise overview of the workflow. +The subsequent section provides a comprehensive explanation. +The last part of the docstring outlines the parameters and return type. + +```{code-cell} +@workflow +def sphinx_docstring_wf(x: list[int] = [-3, 0, 3], y: list[int] = [7, 4, -2]) -> Tuple[float, float]: + """ + Slope and intercept of a regression line + + This workflow accepts a list of coefficient pairs for a regression line. + It calculates both the slope and intercept of the regression line. + + :param x: List of x-coefficients + :param y: List of y-coefficients + :return: Slope and intercept values + """ + slope_value = slope(x=x, y=y) + intercept_value = intercept(x=x, y=y, slope=slope_value) + return slope_value, intercept_value +``` + ++++ {"lines_to_next_cell": 0} + +## NumPy-style docstring + +An example to demonstrate NumPy-style docstring. + +The first part of the docstring provides a concise overview of the workflow. +The next section offers a comprehensive description. +The third section of the docstring details all parameters along with their respective data types. +The final section of the docstring explains the return type and its associated data type. + +```{code-cell} +@workflow +def numpy_docstring_wf(x: list[int] = [-3, 0, 3], y: list[int] = [7, 4, -2]) -> Tuple[float, float]: + """ + Slope and intercept of a regression line + + This workflow accepts a list of coefficient pairs for a regression line. + It calculates both the slope and intercept of the regression line. + + Parameters + ---------- + x : list[int] + List of x-coefficients + y : list[int] + List of y-coefficients + + Returns + ------- + out : Tuple[float, float] + Slope and intercept values + """ + slope_value = slope(x=x, y=y) + intercept_value = intercept(x=x, y=y, slope=slope_value) + return slope_value, intercept_value +``` + ++++ {"lines_to_next_cell": 0} + +## Google-style docstring + +An example to demonstrate Google-style docstring. + +The initial section of the docstring offers a succinct one-liner summary of the workflow. +The subsequent section of the docstring provides an extensive explanation. +The third segment of the docstring outlines the parameters and return type, +including their respective data types. + +```{code-cell} +:lines_to_next_cell: 2 + +@workflow +def google_docstring_wf(x: list[int] = [-3, 0, 3], y: list[int] = [7, 4, -2]) -> Tuple[float, float]: + """ + Slope and intercept of a regression line + + This workflow accepts a list of coefficient pairs for a regression line. + It calculates both the slope and intercept of the regression line. + + Args: + x (list[int]): List of x-coefficients + y (list[int]): List of y-coefficients + + Returns: + Tuple[float, float]: Slope and intercept values + """ + slope_value = slope(x=x, y=y) + intercept_value = intercept(x=x, y=y, slope=slope_value) + return slope_value, intercept_value +``` + +Here are two screenshots showcasing how the description appears on the UI: +1. On the workflow page, you'll find the short description: +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/document_wf_short.png +:alt: Short description +:class: with-shadow +::: + +2. If you click into the workflow, you'll see the long description in the basic information section: +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/document_wf_long.png +:alt: Long description +:class: with-shadow +::: diff --git a/docs/user_guide/basics/hello_world.md b/docs/user_guide/basics/hello_world.md new file mode 100644 index 00000000000..45e5e89c4de --- /dev/null +++ b/docs/user_guide/basics/hello_world.md @@ -0,0 +1,75 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + + +# Hello, World! + +```{eval-rst} +.. tags:: Basic +``` + +Let's write a Flyte {py:func}`~flytekit.workflow` that invokes a +{py:func}`~flytekit.task` to generate the output "Hello, World!". + +Flyte tasks are the core building blocks of larger, more complex workflows. +Workflows compose multiple tasks – or other workflows – +into meaningful steps of computation to produce some useful set of outputs or outcomes. + +To begin, import `task` and `workflow` from the `flytekit` library. + +```{code-cell} +from flytekit import task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +Define a task that produces the string "Hello, World!". +Simply using the `@task` decorator to annotate the Python function. + +```{code-cell} +@task +def say_hello() -> str: + return "Hello, World!" +``` + ++++ {"lines_to_next_cell": 0} + +You can handle the output of a task in the same way you would with a regular Python function. +Store the output in a variable and use it as a return value for a Flyte workflow. + +```{code-cell} +@workflow +def hello_world_wf() -> str: + res = say_hello() + return res +``` + ++++ {"lines_to_next_cell": 0} + +Run the workflow by simply calling it like a Python function. + +```{code-cell} +:lines_to_next_cell: 2 + +if __name__ == "__main__": + print(f"Running hello_world_wf() {hello_world_wf()}") +``` + +Next, let's delve into the specifics of {ref}`tasks `, +{ref}`workflows ` and {ref}`launch plans `. diff --git a/docs/user_guide/basics/imperative_workflows.md b/docs/user_guide/basics/imperative_workflows.md new file mode 100644 index 00000000000..b5da5b63362 --- /dev/null +++ b/docs/user_guide/basics/imperative_workflows.md @@ -0,0 +1,119 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(imperative_workflow)= + +# Imperative workflows + +```{eval-rst} +.. tags:: Basic +``` + +Workflows are commonly created by applying the `@workflow` decorator to Python functions. +During compilation, this involves processing the function's body and utilizing subsequent calls to +underlying tasks to establish and record the workflow structure. This approach is known as declarative +and is suitable when manually drafting the workflow. + +However, in cases where workflows are constructed programmatically, an imperative style is more appropriate. +For instance, if tasks have been defined already, their sequence and dependencies might have been specified +in textual form (perhaps during a transition from a legacy system). +In such scenarios, you want to orchestrate these tasks. +This is where Flyte's imperative workflows come into play, allowing you to programmatically construct workflows. + +To begin, import the necessary dependencies. + +```{code-cell} +from flytekit import Workflow +``` + ++++ {"lines_to_next_cell": 0} + +We import the `slope` and `intercept` tasks from the `workflow.py` file. + +```{code-cell} +from .workflow import intercept, slope +``` + ++++ {"lines_to_next_cell": 0} + +Create an imperative workflow. + +```{code-cell} +imperative_wf = Workflow(name="imperative_workflow") +``` + ++++ {"lines_to_next_cell": 0} + +Add the workflow inputs to the imperative workflow. + +```{code-cell} +imperative_wf.add_workflow_input("x", list[int]) +imperative_wf.add_workflow_input("y", list[int]) +``` + ++++ {"lines_to_next_cell": 0} + +::: {note} +If you want to assign default values to the workflow inputs, +you can create a {ref}`launch plan `. +::: + +Add the tasks that need to be triggered from within the workflow. + +```{code-cell} +node_t1 = imperative_wf.add_entity(slope, x=imperative_wf.inputs["x"], y=imperative_wf.inputs["y"]) +node_t2 = imperative_wf.add_entity( + intercept, x=imperative_wf.inputs["x"], y=imperative_wf.inputs["y"], slope=node_t1.outputs["o0"] +) +``` + ++++ {"lines_to_next_cell": 0} + +Lastly, add the workflow output. + +```{code-cell} +imperative_wf.add_workflow_output("wf_output", node_t2.outputs["o0"]) +``` + ++++ {"lines_to_next_cell": 0} + +You can execute the workflow locally as follows: + +```{code-cell} +if __name__ == "__main__": + print(f"Running imperative_wf() {imperative_wf(x=[-3, 0, 3], y=[7, 4, -2])}") +``` + +:::{note} +You also have the option to provide a list of inputs and +retrieve a list of outputs from the workflow. + +```python +wf_input_y = imperative_wf.add_workflow_input("y", list[str]) +node_t3 = wf.add_entity(some_task, a=[wf.inputs["x"], wf_input_y]) +``` + +```python +wf.add_workflow_output( + "list_of_outputs", + [node_t1.outputs["o0"], node_t2.outputs["o0"]], + python_type=list[str], +) +``` +::: diff --git a/docs/user_guide/basics/index.md b/docs/user_guide/basics/index.md new file mode 100644 index 00000000000..bc97b74cc9d --- /dev/null +++ b/docs/user_guide/basics/index.md @@ -0,0 +1,25 @@ +# Basics + +This section introduces you to the basic building blocks of Flyte +using `flytekit`. `flytekit` is a Python SDK for developing Flyte workflows and +tasks, and can be used generally, whenever stateful computation is desirable. +`flytekit` workflows and tasks are completely runnable locally, unless they need +some advanced backend functionality like starting a distributed Spark cluster. + +Here, you will learn how to write Flyte tasks, assemble them into workflows, +run bash scripts, and document workflows. + +```{toctree} +:maxdepth: -1 +:name: basics_toc +:hidden: + +hello_world +tasks +workflows +launch_plans +imperative_workflows +documenting_workflows +shell_tasks +named_outputs +``` diff --git a/docs/user_guide/basics/launch_plans.md b/docs/user_guide/basics/launch_plans.md new file mode 100644 index 00000000000..01eb9d10519 --- /dev/null +++ b/docs/user_guide/basics/launch_plans.md @@ -0,0 +1,116 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(launch_plan)= + +# Launch plans + +```{eval-rst} +.. tags:: Basic +``` + +Launch plans link a partial or complete list of inputs required to initiate a workflow, +accompanied by optional run-time overrides like notifications, schedules and more. +They serve various purposes: + +- Schedule the same workflow multiple times, with optional predefined inputs. +- Run a specific workflow but with altered notifications. +- Share a workflow with predefined inputs, allowing another user to initiate an execution. +- Share a workflow with the option for the other user to override certain inputs. +- Share a workflow, ensuring specific inputs remain unchanged. + +Launch plans are the only means for invoking workflow executions. +When a workflow is serialized and registered, a _default launch plan_ is generated. +This default launch plan can bind default workflow inputs and runtime options defined +in the project's flytekit configuration (such as user role). + +To begin, import the necessary libraries. + +```{code-cell} +from flytekit import LaunchPlan, current_context +``` + ++++ {"lines_to_next_cell": 0} + +We import the workflow from the `workflow.py` file for which we're going to create a launch plan. + +```{code-cell} +from .workflow import simple_wf +``` + ++++ {"lines_to_next_cell": 0} + +Create a default launch plan with no inputs during serialization. + +```{code-cell} +default_lp = LaunchPlan.get_default_launch_plan(current_context(), simple_wf) +``` + ++++ {"lines_to_next_cell": 0} + +You can run the launch plan locally as follows: + +```{code-cell} +default_lp(x=[-3, 0, 3], y=[7, 4, -2]) +``` + ++++ {"lines_to_next_cell": 0} + +Create a launch plan and specify the default inputs. + +```{code-cell} +simple_wf_lp = LaunchPlan.create( + name="simple_wf_lp", workflow=simple_wf, default_inputs={"x": [-3, 0, 3], "y": [7, 4, -2]} +) +``` + ++++ {"lines_to_next_cell": 0} + +You can trigger the launch plan locally as follows: + +```{code-cell} +simple_wf_lp() +``` + ++++ {"lines_to_next_cell": 0} + +You can override the defaults as follows: + +```{code-cell} +simple_wf_lp(x=[3, 5, 3], y=[-3, 2, -2]) +``` + ++++ {"lines_to_next_cell": 0} + +It's possible to lock launch plan inputs, preventing them from being overridden during execution. + +```{code-cell} +simple_wf_lp_fixed_inputs = LaunchPlan.get_or_create( + name="fixed_inputs", workflow=simple_wf, fixed_inputs={"x": [-3, 0, 3]} +) +``` + +Attempting to modify the inputs will result in an error being raised by Flyte. + +:::{note} +You can employ default and fixed inputs in conjunction in a launch plan. +::: + +Launch plans can also be used to run workflows on a specific cadence. +For more information, refer to the {ref}`scheduling_launch_plan` documentation. diff --git a/docs/user_guide/basics/named_outputs.md b/docs/user_guide/basics/named_outputs.md new file mode 100644 index 00000000000..a609cd50a96 --- /dev/null +++ b/docs/user_guide/basics/named_outputs.md @@ -0,0 +1,116 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(named_outputs)= + +# Named outputs + +```{eval-rst} +.. tags:: Basic +``` + +By default, Flyte employs a standardized convention to assign names to the outputs of tasks or workflows. +Each output is sequentially labeled as `o1`, `o2`, `o3`, ... `on`, where `o` serves as the standard prefix, +and `1`, `2`, ... `n` indicates the positional index within the returned values. + +However, Flyte allows the customization of output names for tasks or workflows. +This customization becomes beneficial when you're returning multiple outputs +and you wish to assign a distinct name to each of them. + +The following example illustrates the process of assigning names to outputs for both a task and a workflow. + +To begin, import the required dependencies. + +```{code-cell} +from typing import NamedTuple + +from flytekit import task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +Define a `NamedTuple` and assign it as an output to a task. + +```{code-cell} +slope_value = NamedTuple("slope_value", [("slope", float)]) + + +@task +def slope(x: list[int], y: list[int]) -> slope_value: + sum_xy = sum([x[i] * y[i] for i in range(len(x))]) + sum_x_squared = sum([x[i] ** 2 for i in range(len(x))]) + n = len(x) + return (n * sum_xy - sum(x) * sum(y)) / (n * sum_x_squared - sum(x) ** 2) +``` + ++++ {"lines_to_next_cell": 0} + +Likewise, assign a `NamedTuple` to the output of `intercept` task. + +```{code-cell} +intercept_value = NamedTuple("intercept_value", [("intercept", float)]) + + +@task +def intercept(x: list[int], y: list[int], slope: float) -> intercept_value: + mean_x = sum(x) / len(x) + mean_y = sum(y) / len(y) + intercept = mean_y - slope * mean_x + return intercept +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +While it's possible to create `NamedTuple`s directly within the code, +it's often better to declare them explicitly. This helps prevent potential linting errors in tools like mypy. + +``` +def slope() -> NamedTuple("slope_value", slope=float): + pass +``` +::: + +You can easily unpack the `NamedTuple` outputs directly within a workflow. +Additionally, you can also have the workflow return a `NamedTuple` as an output. + +:::{note} +Remember that we are extracting individual task execution outputs by dereferencing them. +This is necessary because `NamedTuple`s function as tuples and require this dereferencing. +::: + +```{code-cell} +slope_and_intercept_values = NamedTuple("slope_and_intercept_values", [("slope", float), ("intercept", float)]) + + +@workflow +def simple_wf_with_named_outputs(x: list[int] = [-3, 0, 3], y: list[int] = [7, 4, -2]) -> slope_and_intercept_values: + slope_value = slope(x=x, y=y) + intercept_value = intercept(x=x, y=y, slope=slope_value.slope) + return slope_and_intercept_values(slope=slope_value.slope, intercept=intercept_value.intercept) +``` + ++++ {"lines_to_next_cell": 0} + +You can run the workflow locally as follows: + +```{code-cell} +if __name__ == "__main__": + print(f"Running simple_wf_with_named_outputs() {simple_wf_with_named_outputs()}") +``` diff --git a/docs/user_guide/basics/shell_tasks.md b/docs/user_guide/basics/shell_tasks.md new file mode 100644 index 00000000000..73cc5ab6b8c --- /dev/null +++ b/docs/user_guide/basics/shell_tasks.md @@ -0,0 +1,145 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(shell_task)= + +# Shell tasks + +```{eval-rst} +.. tags:: Basic +``` + +To execute bash scripts within Flyte, you can utilize the {py:class}`~flytekit.extras.tasks.shell.ShellTask` class. +This example includes three shell tasks to execute bash commands. + +First, import the necessary libraries. + +```{code-cell} +from pathlib import Path +from typing import Tuple + +import flytekit +from flytekit import kwtypes, task, workflow +from flytekit.extras.tasks.shell import OutputLocation, ShellTask +from flytekit.types.directory import FlyteDirectory +from flytekit.types.file import FlyteFile +``` + ++++ {"lines_to_next_cell": 0} + +With the required imports in place, you can proceed to define a shell task. +To create a shell task, provide a name for it, specify the bash script to be executed, +and define inputs and outputs if needed. + +```{code-cell} +t1 = ShellTask( + name="task_1", + debug=True, + script=""" + set -ex + echo "Hey there! Let's run some bash scripts using Flyte's ShellTask." + echo "Showcasing Flyte's Shell Task." >> {inputs.x} + if grep "Flyte" {inputs.x} + then + echo "Found it!" >> {inputs.x} + else + echo "Not found!" + fi + """, + inputs=kwtypes(x=FlyteFile), + output_locs=[OutputLocation(var="i", var_type=FlyteFile, location="{inputs.x}")], +) + + +t2 = ShellTask( + name="task_2", + debug=True, + script=""" + set -ex + cp {inputs.x} {inputs.y} + tar -zcvf {outputs.j} {inputs.y} + """, + inputs=kwtypes(x=FlyteFile, y=FlyteDirectory), + output_locs=[OutputLocation(var="j", var_type=FlyteFile, location="{inputs.y}.tar.gz")], +) + + +t3 = ShellTask( + name="task_3", + debug=True, + script=""" + set -ex + tar -zxvf {inputs.z} + cat {inputs.y}/$(basename {inputs.x}) | wc -m > {outputs.k} + """, + inputs=kwtypes(x=FlyteFile, y=FlyteDirectory, z=FlyteFile), + output_locs=[OutputLocation(var="k", var_type=FlyteFile, location="output.txt")], +) +``` + ++++ {"lines_to_next_cell": 0} + +Here's a breakdown of the parameters of the `ShellTask`: + +- The `inputs` parameter allows you to specify the types of inputs that the task will accept +- The `output_locs` parameter is used to define the output locations, which can be `FlyteFile` or `FlyteDirectory` +- The `script` parameter contains the actual bash script that will be executed + (`{inputs.x}`, `{outputs.j}`, etc. will be replaced with the actual input and output values). +- The `debug` parameter is helpful for debugging purposes + +We define a task to instantiate `FlyteFile` and `FlyteDirectory`. +A `.gitkeep` file is created in the FlyteDirectory as a placeholder to ensure the directory exists. + +```{code-cell} +@task +def create_entities() -> Tuple[FlyteFile, FlyteDirectory]: + working_dir = Path(flytekit.current_context().working_directory) + flytefile = working_dir / "test.txt" + flytefile.touch() + + flytedir = working_dir / "testdata" + flytedir.mkdir(exist_ok=True) + + flytedir_file = flytedir / ".gitkeep" + flytedir_file.touch() + return flytefile, flytedir +``` + ++++ {"lines_to_next_cell": 0} + +We create a workflow to define the dependencies between the tasks. + +```{code-cell} +@workflow +def shell_task_wf() -> FlyteFile: + x, y = create_entities() + t1_out = t1(x=x) + t2_out = t2(x=t1_out, y=y) + t3_out = t3(x=x, y=y, z=t2_out) + return t3_out +``` + ++++ {"lines_to_next_cell": 0} + +You can run the workflow locally. + +```{code-cell} +if __name__ == "__main__": + print(f"Running shell_task_wf() {shell_task_wf()}") +``` diff --git a/docs/user_guide/basics/tasks.md b/docs/user_guide/basics/tasks.md new file mode 100644 index 00000000000..3f9fcb493d0 --- /dev/null +++ b/docs/user_guide/basics/tasks.md @@ -0,0 +1,108 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(task)= + +# Tasks + +```{eval-rst} +.. tags:: Basic +``` + +A task serves as the fundamental building block and an extension point within Flyte. +It exhibits the following characteristics: + +1. Versioned (typically aligned with the git sha) +2. Strong interfaces (annotated inputs and outputs) +3. Declarative +4. Independently executable +5. Suitable for unit testing + +A Flyte task operates within its own container and runs on a [Kubernetes pod](https://kubernetes.io/docs/concepts/workloads/pods/). +It can be classified into two types: + +1. A task associated with a Python function. Executing the task is the same as executing the function. +2. A task without a Python function, such as a SQL query or a portable task like prebuilt + algorithms in SageMaker, or a service calling an API. + +Flyte offers numerous plugins for tasks, including backend plugins like +[Athena](https://github.com/flyteorg/flytekit/blob/master/plugins/flytekit-aws-athena/flytekitplugins/athena/task.py). + +This example demonstrates how to write and execute a +[Python function task](https://github.com/flyteorg/flytekit/blob/master/flytekit/core/python_function_task.py#L75). + +To begin, import `task` from the `flytekit` library. + +```{code-cell} +from flytekit import task +``` + ++++ {"lines_to_next_cell": 0} + +The use of the {py:func}`~flytekit.task` decorator is mandatory for a ``PythonFunctionTask``. +A task is essentially a regular Python function, with the exception that all inputs and outputs must be clearly annotated with their types. +Learn more about the supported types in the {ref}`type-system section `. + +We create a task that computes the slope of a regression line. + +```{code-cell} +@task +def slope(x: list[int], y: list[int]) -> float: + sum_xy = sum([x[i] * y[i] for i in range(len(x))]) + sum_x_squared = sum([x[i] ** 2 for i in range(len(x))]) + n = len(x) + return (n * sum_xy - sum(x) * sum(y)) / (n * sum_x_squared - sum(x) ** 2) +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +Flytekit will assign a default name to the output variable like `out0`. +In case of multiple outputs, each output will be numbered in the order +starting with 0, e.g., -> `out0, out1, out2, ...`. +::: + +You can execute a Flyte task just like any regular Python function. + +```{code-cell} +if __name__ == "__main__": + print(slope(x=[-3, 0, 3], y=[7, 4, -2])) +``` + +:::{note} +When invoking a Flyte task, you need to use keyword arguments to specify +the values for the corresponding parameters. +::: + +(single_task_execution)= + +To run it locally, you can use the following `pyflyte run` command: +``` +pyflyte run \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/task.py \ + slope --x '[-3,0,3]' --y '[7,4,-2]' +``` + +If you want to run it remotely on the Flyte cluster, +simply add the `--remote flag` to the `pyflyte run` command: +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/task.py \ + slope --x '[-3,0,3]' --y '[7,4,-2]' +``` diff --git a/docs/user_guide/basics/workflows.md b/docs/user_guide/basics/workflows.md new file mode 100644 index 00000000000..1f750c9da8c --- /dev/null +++ b/docs/user_guide/basics/workflows.md @@ -0,0 +1,151 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(workflow)= + +# Workflows + +```{eval-rst} +.. tags:: Basic +``` + +Workflows link multiple tasks together. They can be written as Python functions, +but it's important to distinguish tasks and workflows. + +A task's body executes at run-time on a Kubernetes cluster, in a Query Engine like BigQuery, +or on hosted services like AWS Batch or Sagemaker. + +In contrast, a workflow's body doesn't perform computations; it's used to structure tasks. +A workflow's body executes at registration time, during the workflow's registration process. +Registration involves uploading the packaged (serialized) code to the Flyte backend, +enabling the workflow to be triggered. + +For more information, see the {std:ref}`registration documentation `. + +To begin, import {py:func}`~flytekit.task` and {py:func}`~flytekit.workflow` from the flytekit library. + +```{code-cell} +from flytekit import task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +We define `slope` and `intercept` tasks to compute the slope and +intercept of the regression line, respectively. + +```{code-cell} +@task +def slope(x: list[int], y: list[int]) -> float: + sum_xy = sum([x[i] * y[i] for i in range(len(x))]) + sum_x_squared = sum([x[i] ** 2 for i in range(len(x))]) + n = len(x) + return (n * sum_xy - sum(x) * sum(y)) / (n * sum_x_squared - sum(x) ** 2) + + +@task +def intercept(x: list[int], y: list[int], slope: float) -> float: + mean_x = sum(x) / len(x) + mean_y = sum(y) / len(y) + intercept = mean_y - slope * mean_x + return intercept +``` + ++++ {"lines_to_next_cell": 0} + +Define a workflow to establish the task dependencies. +Just like a task, a workflow is also strongly typed. + +```{code-cell} +@workflow +def simple_wf(x: list[int], y: list[int]) -> float: + slope_value = slope(x=x, y=y) + intercept_value = intercept(x=x, y=y, slope=slope_value) + return intercept_value +``` + ++++ {"lines_to_next_cell": 0} + +The {py:func}`~flytekit.workflow` decorator encapsulates Flyte tasks, +essentially representing lazily evaluated promises. +During parsing, function calls are deferred until execution time. +These function calls generate {py:class}`~flytekit.extend.Promise`s that can be propagated to downstream functions, +yet remain inaccessible within the workflow itself. +The actual evaluation occurs when the workflow is executed. + +Workflows can be executed locally, resulting in immediate evaluation, or through tools like +[`pyflyte`](https://docs.flyte.org/projects/flytekit/en/latest/pyflyte.html), +[`flytectl`](https://docs.flyte.org/projects/flytectl/en/latest/index.html) or UI, triggering evaluation. +While workflows decorated with `@workflow` resemble Python functions, +they function as python-esque Domain Specific Language (DSL). +When encountering a @task-decorated Python function, a promise object is created. +This promise doesn't store the task's actual output. Its fulfillment only occurs during execution. +Additionally, the inputs to a workflow are also promises, you can only pass promises into +tasks, workflows and other Flyte constructs. + +:::{note} +You can learn more about creating dynamic Flyte workflows by referring +to {ref}`dynamic workflows `. +In a dynamic workflow, unlike a simple workflow, the inputs are pre-materialized. +However, each task invocation within the dynamic workflow still generates a promise that is evaluated lazily. +Bear in mind that a workflow can have tasks, other workflows and dynamic workflows. +::: + +You can run a workflow by calling it as you would with a Python function and providing the necessary inputs. + +```{code-cell} +if __name__ == "__main__": + print(f"Running simple_wf() {simple_wf(x=[-3, 0, 3], y=[7, 4, -2])}") +``` + ++++ {"lines_to_next_cell": 0} + +To run the workflow locally, you can use the following `pyflyte run` command: +``` +pyflyte run \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/workflow.py \ + simple_wf --x '[-3,0,3]' --y '[7,4,-2]' +``` + +If you want to run it remotely on the Flyte cluster, +simply add the `--remote flag` to the `pyflyte run` command: +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/workflow.py \ + simple_wf --x '[-3,0,3]' --y '[7,4,-2]' +``` + +While workflows are usually constructed from multiple tasks with dependencies established through +shared inputs and outputs, there are scenarios where isolating the execution of a single task +proves advantageous during the development and iteration of its logic. +Crafting a new workflow definition each time for this purpose can be cumbersome. +However, {ref}`executing an individual task ` independently, +without the confines of a workflow, offers a convenient approach for iterating on task logic effortlessly. + +## Use `partial` to provide default arguments to tasks +You can use the {py:func}`functools.partial` function to assign default or constant values to the parameters of your tasks. + +```{code-cell} +import functools + + +@workflow +def simple_wf_with_partial(x: list[int], y: list[int]) -> float: + partial_task = functools.partial(slope, x=x) + return partial_task(y=y) +``` diff --git a/docs/user_guide/customizing_dependencies/imagespec.md b/docs/user_guide/customizing_dependencies/imagespec.md new file mode 100644 index 00000000000..5a9ef93736e --- /dev/null +++ b/docs/user_guide/customizing_dependencies/imagespec.md @@ -0,0 +1,162 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(image_spec_example)= + +# ImageSpec + +```{eval-rst} +.. tags:: Containerization, Intermediate +``` + +:::{note} +This is an experimental feature, which is subject to change the API in the future. +::: + +`ImageSpec` is a way to specify how to build a container image without a Dockerfile. The `ImageSpec` by default will be +converted to an [Envd](https://envd.tensorchord.ai/) config, and the [Envd builder](https://github.com/flyteorg/flytekit/blob/master/plugins/flytekit-envd/flytekitplugins/envd/image_builder.py#L12-L34) will build the image for you. However, you can also register your own builder to build +the image using other tools. + +For every {py:class}`flytekit.PythonFunctionTask` task or a task decorated with the `@task` decorator, +you can specify rules for binding container images. By default, flytekit binds a single container image, i.e., +the [default Docker image](https://ghcr.io/flyteorg/flytekit), to all tasks. To modify this behavior, +use the `container_image` parameter available in the {py:func}`flytekit.task` decorator, and pass an +`ImageSpec`. + +Before building the image, Flytekit checks the container registry first to see if the image already exists. By doing +so, it avoids having to rebuild the image over and over again. If the image does not exist, flytekit will build the +image before registering the workflow, and replace the image name in the task template with the newly built image name. + +```{code-cell} +import typing + +import pandas as pd +from flytekit import ImageSpec, Resources, task, workflow +``` + +:::{admonition} Prerequisites +:class: important + +- Install [flytekitplugins-envd](https://github.com/flyteorg/flytekit/tree/master/plugins/flytekit-envd) to build the `ImageSpec`. +- To build the image on remote machine, check this [doc](https://envd.tensorchord.ai/teams/context.html#start-remote-buildkitd-on-builder-machine). +- When using a registry in ImageSpec, `docker login` is required to push the image +::: + ++++ {"lines_to_next_cell": 0} + +You can specify python packages, apt packages, and environment variables in the `ImageSpec`. +These specified packages will be added on top of the [default image](https://github.com/flyteorg/flytekit/blob/master/Dockerfile), which can be found in the Flytekit Dockerfile. +More specifically, flytekit invokes [DefaultImages.default_image()](https://github.com/flyteorg/flytekit/blob/f2cfef0ec098d4ae8f042ab915b0b30d524092c6/flytekit/configuration/default_images.py#L26-L27) function. +This function determines and returns the default image based on the Python version and flytekit version. For example, if you are using python 3.8 and flytekit 0.16.0, the default image assigned will be `ghcr.io/flyteorg/flytekit:py3.8-1.6.0`. +If desired, you can also override the default image by providing a custom `base_image` parameter when using the `ImageSpec`. + +```{code-cell} +pandas_image_spec = ImageSpec( + base_image="ghcr.io/flyteorg/flytekit:py3.8-1.6.2", + packages=["pandas", "numpy"], + python_version="3.9", + apt_packages=["git"], + env={"Debug": "True"}, + registry="ghcr.io/flyteorg", +) + +sklearn_image_spec = ImageSpec( + base_image="ghcr.io/flyteorg/flytekit:py3.8-1.6.2", + packages=["scikit-learn"], + registry="ghcr.io/flyteorg", +) +``` + ++++ {"lines_to_next_cell": 0} + +:::{important} +Replace `ghcr.io/flyteorg` with a container registry you've access to publish to. +To upload the image to the local registry in the demo cluster, indicate the registry as `localhost:30000`. +::: + +`is_container` is used to determine whether the task is utilizing the image constructed from the `ImageSpec`. +If the task is indeed using the image built from the `ImageSpec`, it will then import Tensorflow. +This approach helps minimize module loading time and prevents unnecessary dependency installation within a single image. + +```{code-cell} +if sklearn_image_spec.is_container(): + from sklearn.linear_model import LogisticRegression +``` + ++++ {"lines_to_next_cell": 0} + +To enable tasks to utilize the images built with `ImageSpec`, you can specify the `container_image` parameter for those tasks. + +```{code-cell} +@task(container_image=pandas_image_spec) +def get_pandas_dataframe() -> typing.Tuple[pd.DataFrame, pd.Series]: + df = pd.read_csv("https://storage.googleapis.com/download.tensorflow.org/data/heart.csv") + print(df.head()) + return df[["age", "thalach", "trestbps", "chol", "oldpeak"]], df.pop("target") + + +@task(container_image=sklearn_image_spec, requests=Resources(cpu="1", mem="1Gi")) +def get_model(max_iter: int, multi_class: str) -> typing.Any: + return LogisticRegression(max_iter=max_iter, multi_class=multi_class) + + +# Get a basic model to train. +@task(container_image=sklearn_image_spec, requests=Resources(cpu="1", mem="1Gi")) +def train_model(model: typing.Any, feature: pd.DataFrame, target: pd.Series) -> typing.Any: + model.fit(feature, target) + return model + + +# Lastly, let's define a workflow to capture the dependencies between the tasks. +@workflow() +def wf(): + feature, target = get_pandas_dataframe() + model = get_model(max_iter=3000, multi_class="auto") + train_model(model=model, feature=feature, target=target) + + +if __name__ == "__main__": + wf() +``` + +There exists an option to override the container image by providing an Image Spec YAML file to the `pyflyte run` or `pyflyte register` command. +This allows for greater flexibility in specifying a custom container image. For example: + +```yaml +# imageSpec.yaml +python_version: 3.11 +registry: pingsutw +packages: + - sklearn +env: + Debug: "True" +``` + +``` +# Use pyflyte to register the workflow +pyflyte run --remote --image image.yaml image_spec.py wf +``` + ++++ + +If you only want to build the image without registering the workflow, you can use the `pyflyte build` command. + +``` +pyflyte build --remote image_spec.py wf +``` diff --git a/docs/user_guide/customizing_dependencies/index.md b/docs/user_guide/customizing_dependencies/index.md new file mode 100644 index 00000000000..0c5262dd670 --- /dev/null +++ b/docs/user_guide/customizing_dependencies/index.md @@ -0,0 +1,17 @@ +# Customizing dependencies + +In this section, you will uncover how Flyte utilizes Docker images to construct containers under the hood, +and you'll learn how to craft your own images to encompass all the necessary dependencies for your tasks or workflows. +You will explore how to execute a raw container with custom commands, +indicate multiple container images within a single workflow, +and get familiar with the ins and outs of `ImageSpec`! + +```{toctree} +:maxdepth: -1 +:name: customizing_dependencies_toc +:hidden: + +imagespec +raw_containers +multiple_images_in_a_workflow +``` diff --git a/docs/user_guide/customizing_dependencies/multiple_images_in_a_workflow.md b/docs/user_guide/customizing_dependencies/multiple_images_in_a_workflow.md new file mode 100644 index 00000000000..0c323cada9e --- /dev/null +++ b/docs/user_guide/customizing_dependencies/multiple_images_in_a_workflow.md @@ -0,0 +1,110 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(multi_images)= + +# Multiple images in a workflow + +```{eval-rst} +.. tags:: Containerization, Intermediate +``` + +For every {py:class}`flytekit.PythonFunctionTask` task or a task decorated with the `@task` decorator, you can specify rules for binding container images. +By default, flytekit binds a single container image, i.e., the [default Docker image](https://ghcr.io/flyteorg/flytekit), to all tasks. +To modify this behavior, use the `container_image` parameter available in the {py:func}`flytekit.task` decorator. + +:::{note} +If the Docker image is not available publicly, refer to {ref}`Pulling Private Images`. +::: + +```{code-cell} +:lines_to_next_cell: 2 + +import numpy as np +from flytekit import task, workflow + + +@task(container_image="{{.image.mindmeld.fqn}}:{{.image.mindmeld.version}}") +def get_data() -> np.ndarray: + # here we're importing scikit learn within the Flyte task + from sklearn import datasets + + iris = datasets.load_iris() + X = iris.data[:, :2] + return X + + +@task(container_image="{{.image.borebuster.fqn}}:{{.image.borebuster.version}}") +def normalize(X: np.ndarray) -> np.ndarray: + return (X - X.mean(axis=0)) / X.std(axis=0) + + +@workflow +def multi_images_wf() -> np.ndarray: + X = get_data() + X = normalize(X=X) + return X +``` + +Observe how the `sklearn` library is imported in the context of a Flyte task. +This approach is beneficial when creating tasks in a single module, where some tasks have dependencies that others do not require. + +## Configuring image parameters + +The following parameters can be used to configure images in the `@task` decorator: + +1. `image` refers to the name of the image in the image configuration. The name `default` is a reserved keyword and will automatically apply to the default image name for this repository. +2. `fqn` refers to the fully qualified name of the image. For example, it includes the repository and domain URL of the image. Example: docker.io/my_repo/xyz. +3. `version` refers to the tag of the image. For example: latest, or python-3.9 etc. If `container_image` is not specified, then the default configured image for the project is used. + +## Sending images to `pyflyte` command + +You can pass Docker images to the `pyflyte run` or `pyflyte register` command. +For instance: + +``` +pyflyte run --remote --image mindmeld="ghcr.io/flyteorg/flytecookbook:core-latest" --image borebuster="ghcr.io/flyteorg/flytekit:py3.9-latest" multi_images.py multi_images_wf +``` + +## Configuring images in `$HOME/.flyte/config.yaml` + +To specify images in your `$HOME/.flyte/config.yaml` file (or whichever configuration file you are using), include an "images" section in the configuration. +For example: + +```{code-block} yaml +:emphasize-lines: 6-8 + +admin: + # For GRPC endpoints you might want to use dns:///flyte.myexample.com + endpoint: localhost:30080 + authType: Pkce + insecure: true +images: + mindmeld: ghcr.io/flyteorg/flytecookbook:core-latest + borebuster: ghcr.io/flyteorg/flytekit:py3.9-latest +console: + endpoint: http://localhost:30080 +logger: + show-source: true + level: 0 +``` + +Send the name of the configuration file to your `pyflyte run` command as follows: + +``` +pyflyte --config $HOME/.flyte/config.yaml run --remote multi_images.py multi_images_wf +``` diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/haskell/Dockerfile b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/haskell/Dockerfile new file mode 100644 index 00000000000..8d9679088df --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/haskell/Dockerfile @@ -0,0 +1,7 @@ +FROM haskell:9 + +WORKDIR /root + +COPY calculate-ellipse-area.hs /root + +RUN ghc calculate-ellipse-area.hs diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/haskell/calculate-ellipse-area.hs b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/haskell/calculate-ellipse-area.hs new file mode 100644 index 00000000000..c31d4a10adb --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/haskell/calculate-ellipse-area.hs @@ -0,0 +1,19 @@ +import System.IO +import System.Environment +import Text.Read +import Text.Printf + +calculateEllipseArea :: Float -> Float -> Float +calculateEllipseArea a b = pi * a * b + +main = do + args <- getArgs + let a = args!!0 + b = args!!1 + + let area = calculateEllipseArea (read a::Float) (read b::Float) + + let output_area = args!!2 ++ "/area" + output_metadata = args!!2 ++ "/metadata" + writeFile output_area (show area) + writeFile output_metadata "[from haskell rawcontainer]" diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/julia/Dockerfile b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/julia/Dockerfile new file mode 100644 index 00000000000..caaf85a2abf --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/julia/Dockerfile @@ -0,0 +1,5 @@ +FROM julia:1.6.4-buster + +WORKDIR /root + +COPY calculate-ellipse-area.jl /root diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/julia/calculate-ellipse-area.jl b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/julia/calculate-ellipse-area.jl new file mode 100644 index 00000000000..c26ffdfea79 --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/julia/calculate-ellipse-area.jl @@ -0,0 +1,31 @@ + +using Printf + +function calculate_area(a, b) + π * a * b +end + +function write_output(output_dir, output_file, v) + output_path = @sprintf "%s/%s" output_dir output_file + open(output_path, "w") do file + write(file, string(v)) + end +end + +function main(a, b, output_dir) + a = parse.(Float64, a) + b = parse.(Float64, b) + + area = calculate_area(a, b) + + write_output(output_dir, "area", area) + write_output(output_dir, "metadata", "[from julia rawcontainer]") +end + +# the keyword ARGS is a special value that contains the command-line arguments +# julia arrays are 1-indexed +a = ARGS[1] +b = ARGS[2] +output_dir = ARGS[3] + +main(a, b, output_dir) diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/python/Dockerfile b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/python/Dockerfile new file mode 100644 index 00000000000..2174b2d9974 --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/python/Dockerfile @@ -0,0 +1,5 @@ +FROM python:3.10-slim-buster + +WORKDIR /root + +COPY *.py /root/ diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/python/calculate-ellipse-area.py b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/python/calculate-ellipse-area.py new file mode 100644 index 00000000000..7c589da7c87 --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/python/calculate-ellipse-area.py @@ -0,0 +1,29 @@ +import math +import sys + + +def write_output(output_dir, output_file, v): + with open(f"{output_dir}/{output_file}", "w") as f: + f.write(str(v)) + + +def calculate_area(a, b): + return math.pi * a * b + + +def main(a, b, output_dir): + a = float(a) + b = float(b) + + area = calculate_area(a, b) + + write_output(output_dir, "area", area) + write_output(output_dir, "metadata", "[from python rawcontainer]") + + +if __name__ == "__main__": + a = sys.argv[1] + b = sys.argv[2] + output_dir = sys.argv[3] + + main(a, b, output_dir) diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/Dockerfile b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/Dockerfile new file mode 100644 index 00000000000..b1dad09c082 --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/Dockerfile @@ -0,0 +1,5 @@ +FROM r-base + +WORKDIR /root + +COPY *.R /root/ diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/calculate-ellipse-area.R b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/calculate-ellipse-area.R new file mode 100644 index 00000000000..d2650d826bd --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/calculate-ellipse-area.R @@ -0,0 +1,13 @@ +#!/usr/bin/env Rscript + +args = commandArgs(trailingOnly=TRUE) + +a = args[1] +b = args[2] +output_dir = args[3] + +area <- pi * as.double(a) * as.double(b) +print(area) + +writeLines(as.character(area), sprintf("%s/%s", output_dir, 'area')) +writeLines("[from R rawcontainer]", sprintf("%s/%s", output_dir, 'metadata')) diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/install-readr.R b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/install-readr.R new file mode 100644 index 00000000000..3308314e4e7 --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/r/install-readr.R @@ -0,0 +1 @@ +install.packages("readr") diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/shell/Dockerfile b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/shell/Dockerfile new file mode 100644 index 00000000000..856160ba11c --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/shell/Dockerfile @@ -0,0 +1,6 @@ +FROM alpine + +WORKDIR /root + +COPY calculate-ellipse-area.sh /root +RUN chmod +x /root/calculate-ellipse-area.sh diff --git a/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/shell/calculate-ellipse-area.sh b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/shell/calculate-ellipse-area.sh new file mode 100755 index 00000000000..5096e14035d --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw-containers-supporting-files/per-language/shell/calculate-ellipse-area.sh @@ -0,0 +1,5 @@ +#! /usr/bin/env sh + +echo "4*a(1) * $1 * $2" | bc -l | tee "$3/area" + +echo "[from shell rawcontainer]" | tee "$3/metadata" diff --git a/docs/user_guide/customizing_dependencies/raw_containers.md b/docs/user_guide/customizing_dependencies/raw_containers.md new file mode 100644 index 00000000000..2ba6cfec553 --- /dev/null +++ b/docs/user_guide/customizing_dependencies/raw_containers.md @@ -0,0 +1,227 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(raw_container)= + +# Raw containers + +```{eval-rst} +.. tags:: Containerization, Advanced +``` + +This example demonstrates how to use arbitrary containers in 5 different languages, all orchestrated in flytekit seamlessly. +Flyte mounts an input data volume where all the data needed by the container is available, and an output data volume +for the container to write all the data which will be stored away. + +The data is written as separate files, one per input variable. The format of the file is serialized strings. +Refer to the raw protocol to understand how to leverage this. + +```{code-cell} +import logging + +from flytekit import ContainerTask, kwtypes, task, workflow + +logger = logging.getLogger(__file__) +``` + ++++ {"lines_to_next_cell": 0} + +## Container tasks + +A {py:class}`flytekit.ContainerTask` denotes an arbitrary container. In the following example, the name of the task +is `calculate_ellipse_area_shell`. This name has to be unique in the entire project. Users can specify: + +- `input_data_dir` -> where inputs will be written to. +- `output_data_dir` -> where Flyte will expect the outputs to exist. + +`inputs` and `outputs` specify the interface for the task; thus it should be an ordered dictionary of typed input and +output variables. + +```{code-cell} +calculate_ellipse_area_shell = ContainerTask( + name="ellipse-area-metadata-shell", + input_data_dir="/var/inputs", + output_data_dir="/var/outputs", + inputs=kwtypes(a=float, b=float), + outputs=kwtypes(area=float, metadata=str), + image="ghcr.io/flyteorg/rawcontainers-shell:v2", + command=[ + "./calculate-ellipse-area.sh", + "{{.inputs.a}}", + "{{.inputs.b}}", + "/var/outputs", + ], +) + +calculate_ellipse_area_python = ContainerTask( + name="ellipse-area-metadata-python", + input_data_dir="/var/inputs", + output_data_dir="/var/outputs", + inputs=kwtypes(a=float, b=float), + outputs=kwtypes(area=float, metadata=str), + image="ghcr.io/flyteorg/rawcontainers-python:v2", + command=[ + "python", + "calculate-ellipse-area.py", + "{{.inputs.a}}", + "{{.inputs.b}}", + "/var/outputs", + ], +) + +calculate_ellipse_area_r = ContainerTask( + name="ellipse-area-metadata-r", + input_data_dir="/var/inputs", + output_data_dir="/var/outputs", + inputs=kwtypes(a=float, b=float), + outputs=kwtypes(area=float, metadata=str), + image="ghcr.io/flyteorg/rawcontainers-r:v2", + command=[ + "Rscript", + "--vanilla", + "calculate-ellipse-area.R", + "{{.inputs.a}}", + "{{.inputs.b}}", + "/var/outputs", + ], +) + +calculate_ellipse_area_haskell = ContainerTask( + name="ellipse-area-metadata-haskell", + input_data_dir="/var/inputs", + output_data_dir="/var/outputs", + inputs=kwtypes(a=float, b=float), + outputs=kwtypes(area=float, metadata=str), + image="ghcr.io/flyteorg/rawcontainers-haskell:v2", + command=[ + "./calculate-ellipse-area", + "{{.inputs.a}}", + "{{.inputs.b}}", + "/var/outputs", + ], +) + +calculate_ellipse_area_julia = ContainerTask( + name="ellipse-area-metadata-julia", + input_data_dir="/var/inputs", + output_data_dir="/var/outputs", + inputs=kwtypes(a=float, b=float), + outputs=kwtypes(area=float, metadata=str), + image="ghcr.io/flyteorg/rawcontainers-julia:v2", + command=[ + "julia", + "calculate-ellipse-area.jl", + "{{.inputs.a}}", + "{{.inputs.b}}", + "/var/outputs", + ], +) + + +@task +def report_all_calculated_areas( + area_shell: float, + metadata_shell: str, + area_python: float, + metadata_python: str, + area_r: float, + metadata_r: str, + area_haskell: float, + metadata_haskell: str, + area_julia: float, + metadata_julia: str, +): + logger.info(f"shell: area={area_shell}, metadata={metadata_shell}") + logger.info(f"python: area={area_python}, metadata={metadata_python}") + logger.info(f"r: area={area_r}, metadata={metadata_r}") + logger.info(f"haskell: area={area_haskell}, metadata={metadata_haskell}") + logger.info(f"julia: area={area_julia}, metadata={metadata_julia}") +``` + ++++ {"lines_to_next_cell": 0} + +As can be seen in this example, `ContainerTask`s can be interacted with like normal Python functions, whose inputs +correspond to the declared input variables. All data returned by the tasks are consumed and logged by a Flyte task. + +```{code-cell} +:lines_to_next_cell: 2 + +@workflow +def wf(a: float, b: float): + # Calculate area in all languages + area_shell, metadata_shell = calculate_ellipse_area_shell(a=a, b=b) + area_python, metadata_python = calculate_ellipse_area_python(a=a, b=b) + area_r, metadata_r = calculate_ellipse_area_r(a=a, b=b) + area_haskell, metadata_haskell = calculate_ellipse_area_haskell(a=a, b=b) + area_julia, metadata_julia = calculate_ellipse_area_julia(a=a, b=b) + + # Report on all results in a single task to simplify comparison + report_all_calculated_areas( + area_shell=area_shell, + metadata_shell=metadata_shell, + area_python=area_python, + metadata_python=metadata_python, + area_r=area_r, + metadata_r=metadata_r, + area_haskell=area_haskell, + metadata_haskell=metadata_haskell, + area_julia=area_julia, + metadata_julia=metadata_julia, + ) +``` + +One of the benefits of raw container tasks is that Flytekit does not need to be installed in the target container. + +:::{note} +Raw containers cannot be run locally at the moment. +::: + +## Scripts + +The contents of each script specified in the `ContainerTask` is as follows: + +### calculate-ellipse-area.sh + +```{literalinclude} raw-containers-supporting-files/per-language/shell/calculate-ellipse-area.sh +:language: shell +``` + +### calculate-ellipse-area.py + +```{literalinclude} raw-containers-supporting-files/per-language/python/calculate-ellipse-area.py +:language: python +``` + +### calculate-ellipse-area.R + +```{literalinclude} raw-containers-supporting-files/per-language/r/calculate-ellipse-area.R +:language: r +``` + +### calculate-ellipse-area.hs + +```{literalinclude} raw-containers-supporting-files/per-language/haskell/calculate-ellipse-area.hs +:language: haskell +``` + +### calculate-ellipse-area.jl + +```{literalinclude} raw-containers-supporting-files/per-language/julia/calculate-ellipse-area.jl +:language: julia +``` diff --git a/docs/user_guide/data_types_and_io/accessing_attributes.md b/docs/user_guide/data_types_and_io/accessing_attributes.md new file mode 100644 index 00000000000..42706a3d1d6 --- /dev/null +++ b/docs/user_guide/data_types_and_io/accessing_attributes.md @@ -0,0 +1,176 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(attribute_access)= + +# Accessing attributes + +```{eval-rst} +.. tags:: Basic +``` + +You can directly access attributes on output promises for lists, dicts, dataclasses and combinations of these types in Flyte. +This functionality facilitates the direct passing of output attributes within workflows, +enhancing the convenience of working with complex data structures. + +To begin, import the required dependencies and define a common task for subsequent use. + +```{code-cell} +from dataclasses import dataclass + +from dataclasses_json import dataclass_json +from flytekit import task, workflow + + +@task +def print_message(message: str): + print(message) + return +``` + ++++ {"lines_to_next_cell": 0} + +## List +You can access an output list using index notation. + +:::{important} +Flyte currently does not support output promise access through list slicing. +::: + +```{code-cell} +@task +def list_task() -> list[str]: + return ["apple", "banana"] + + +@workflow +def list_wf(): + items = list_task() + first_item = items[0] + print_message(message=first_item) +``` + ++++ {"lines_to_next_cell": 0} + +## Dictionary +Access the output dictionary by specifying the key. + +```{code-cell} +@task +def dict_task() -> dict[str, str]: + return {"fruit": "banana"} + + +@workflow +def dict_wf(): + fruit_dict = dict_task() + print_message(message=fruit_dict["fruit"]) +``` + ++++ {"lines_to_next_cell": 0} + +## Data class +Directly access an attribute of a dataclass. + +```{code-cell} +@dataclass_json +@dataclass +class Fruit: + name: str + + +@task +def dataclass_task() -> Fruit: + return Fruit(name="banana") + + +@workflow +def dataclass_wf(): + fruit_instance = dataclass_task() + print_message(message=fruit_instance.name) +``` + ++++ {"lines_to_next_cell": 0} + +## Complex type +Combinations of list, dict and dataclass also work effectively. + +```{code-cell} +@task +def advance_task() -> (dict[str, list[str]], list[dict[str, str]], dict[str, Fruit]): + return {"fruits": ["banana"]}, [{"fruit": "banana"}], {"fruit": Fruit(name="banana")} + + +@task +def print_list(fruits: list[str]): + print(fruits) + + +@task +def print_dict(fruit_dict: dict[str, str]): + print(fruit_dict) + + +@workflow +def advanced_workflow(): + dictionary_list, list_dict, dict_dataclass = advance_task() + print_message(message=dictionary_list["fruits"][0]) + print_message(message=list_dict[0]["fruit"]) + print_message(message=dict_dataclass["fruit"].name) + + print_list(fruits=dictionary_list["fruits"]) + print_dict(fruit_dict=list_dict[0]) +``` + ++++ {"lines_to_next_cell": 0} + +You can run all the workflows locally as follows: + +```{code-cell} +:lines_to_next_cell: 2 + +if __name__ == "__main__": + list_wf() + dict_wf() + dataclass_wf() + advanced_workflow() +``` + +## Failure scenario +The following workflow fails because it attempts to access indices and keys that are out of range: + +```python +from flytekit import WorkflowFailurePolicy + + +@task +def failed_task() -> (list[str], dict[str, str], Fruit): + return ["apple", "banana"], {"fruit": "banana"}, Fruit(name="banana") + + +@workflow( + # The workflow remains unaffected if one of the nodes encounters an error, as long as other executable nodes are still available + failure_policy=WorkflowFailurePolicy.FAIL_AFTER_EXECUTABLE_NODES_COMPLETE +) +def failed_workflow(): + fruits_list, fruit_dict, fruit_instance = failed_task() + print_message(message=fruits_list[100]) # Accessing an index that doesn't exist + print_message(message=fruit_dict["fruits"]) # Accessing a non-existent key + print_message(message=fruit_instance.fruit) # Accessing a non-existent param +``` diff --git a/docs/user_guide/data_types_and_io/dataclass.md b/docs/user_guide/data_types_and_io/dataclass.md new file mode 100644 index 00000000000..fdb9f1d992f --- /dev/null +++ b/docs/user_guide/data_types_and_io/dataclass.md @@ -0,0 +1,172 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(dataclass)= + +# Dataclass + +```{eval-rst} +.. tags:: Basic +``` + +When you've multiple values that you want to send across Flyte entities, you can use a `dataclass`. + +Flytekit uses the [Mashumaro library](https://github.com/Fatal1ty/mashumaro) +to serialize and deserialize dataclasses. + +:::{important} +If you're using Flytekit version below v1.10, you'll need to decorate with `@dataclass_json` using +`from dataclass_json import dataclass_json` instead of inheriting from Mashumaro's `DataClassJSONMixin`. +::: + +To begin, import the necessary dependencies. + +```{code-cell} +import os +import tempfile +from dataclasses import dataclass + +import pandas as pd +from flytekit import task, workflow +from flytekit.types.directory import FlyteDirectory +from flytekit.types.file import FlyteFile +from flytekit.types.structured import StructuredDataset +from mashumaro.mixins.json import DataClassJSONMixin +``` + ++++ {"lines_to_next_cell": 0} + +## Python types +We define a `dataclass` with `int`, `str` and `dict` as the data types. + +```{code-cell} +@dataclass +class Datum(DataClassJSONMixin): + x: int + y: str + z: dict[int, str] +``` + ++++ {"lines_to_next_cell": 0} + +You can send a `dataclass` between different tasks written in various languages, and input it through the Flyte console as raw JSON. + +:::{note} +All variables in a data class should be **annotated with their type**. Failure to do should will result in an error. +::: + +Once declared, a dataclass can be returned as an output or accepted as an input. + +```{code-cell} +@task +def stringify(s: int) -> Datum: + """ + A dataclass return will be treated as a single complex JSON return. + """ + return Datum(x=s, y=str(s), z={s: str(s)}) + + +@task +def add(x: Datum, y: Datum) -> Datum: + """ + Flytekit automatically converts the provided JSON into a data class. + If the structures don't match, it triggers a runtime failure. + """ + x.z.update(y.z) + return Datum(x=x.x + y.x, y=x.y + y.y, z=x.z) +``` + ++++ {"lines_to_next_cell": 0} + +## Flyte types +We also define a data class that accepts {std:ref}`StructuredDataset `, +{std:ref}`FlyteFile ` and {std:ref}`FlyteDirectory `. + +```{code-cell} +@dataclass +class FlyteTypes(DataClassJSONMixin): + dataframe: StructuredDataset + file: FlyteFile + directory: FlyteDirectory + + +@task +def upload_data() -> FlyteTypes: + """ + Flytekit will upload FlyteFile, FlyteDirectory and StructuredDataset to the blob store, + such as GCP or S3. + """ + # 1. StructuredDataset + df = pd.DataFrame({"Name": ["Tom", "Joseph"], "Age": [20, 22]}) + + # 2. FlyteDirectory + temp_dir = tempfile.mkdtemp(prefix="flyte-") + df.to_parquet(temp_dir + "/df.parquet") + + # 3. FlyteFile + file_path = tempfile.NamedTemporaryFile(delete=False) + file_path.write(b"Hello, World!") + + fs = FlyteTypes( + dataframe=StructuredDataset(dataframe=df), + file=FlyteFile(file_path.name), + directory=FlyteDirectory(temp_dir), + ) + return fs + + +@task +def download_data(res: FlyteTypes): + assert pd.DataFrame({"Name": ["Tom", "Joseph"], "Age": [20, 22]}).equals(res.dataframe.open(pd.DataFrame).all()) + f = open(res.file, "r") + assert f.read() == "Hello, World!" + assert os.listdir(res.directory) == ["df.parquet"] +``` + ++++ {"lines_to_next_cell": 0} + +A data class supports the usage of data associated with Python types, data classes, +flyte file, flyte directory and structured dataset. + +We define a workflow that calls the tasks created above. + +```{code-cell} +@workflow +def dataclass_wf(x: int, y: int) -> (Datum, FlyteTypes): + o1 = add(x=stringify(s=x), y=stringify(s=y)) + o2 = upload_data() + download_data(res=o2) + return o1, o2 +``` + ++++ {"lines_to_next_cell": 0} + +You can run the workflow locally as follows: + +```{code-cell} +if __name__ == "__main__": + dataclass_wf(x=10, y=20) +``` + +To trigger a task that accepts a dataclass as an input with `pyflyte run`, you can provide a JSON file as an input: +``` +pyflyte run \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/data_types_and_io/data_types_and_io/dataclass.py \ + add --x dataclass_input.json --y dataclass_input.json +``` diff --git a/docs/user_guide/data_types_and_io/enum_type.md b/docs/user_guide/data_types_and_io/enum_type.md new file mode 100644 index 00000000000..b4727c508fd --- /dev/null +++ b/docs/user_guide/data_types_and_io/enum_type.md @@ -0,0 +1,100 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +# Enum type + +```{eval-rst} +.. tags:: Basic +``` + +At times, you might need to limit the acceptable values for inputs or outputs to a predefined set. +This common requirement is usually met by using Enum types in programming languages. + +You can create a Python Enum type and utilize it as an input or output for a task. +Flytekit will automatically convert it and constrain the inputs and outputs to the predefined set of values. + +:::{important} +Currently, only string values are supported as valid enum values. +Flyte assumes the first value in the list as the default, and Enum types cannot be optional. +Therefore, when defining enums, it's important to design them with the first value as a valid default. +::: + +To begin, import the dependencies. + +```{code-cell} +from enum import Enum + +from flytekit import task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +We define an enum and a simple coffee maker workflow that accepts an order and brews coffee ☕️ accordingly. +The assumption is that the coffee maker only understands enum inputs. + +```{code-cell} +class Coffee(Enum): + ESPRESSO = "espresso" + AMERICANO = "americano" + LATTE = "latte" + CAPPUCCINO = "cappucccino" + + +@task +def take_order(coffee: str) -> Coffee: + return Coffee(coffee) + + +@task +def prep_order(coffee_enum: Coffee) -> str: + return f"Preparing {coffee_enum.value} ..." + + +@workflow +def coffee_maker(coffee: str) -> str: + coffee_enum = take_order(coffee=coffee) + return prep_order(coffee_enum=coffee_enum) +``` + ++++ {"lines_to_next_cell": 0} + +The workflow can also accept an enum value. + +```{code-cell} +@workflow +def coffee_maker_enum(coffee_enum: Coffee) -> str: + return prep_order(coffee_enum=coffee_enum) +``` + ++++ {"lines_to_next_cell": 0} + +You can send a string to the `coffee_maker_enum` workflow during its execution, like this: +``` +pyflyte run \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/data_types_and_io/data_types_and_io/enum_type.py \ + coffee_maker_enum --coffee_enum="latte" +``` + +You can run the workflows locally. + +```{code-cell} +if __name__ == "__main__": + print(coffee_maker(coffee="latte")) + print(coffee_maker_enum(coffee_enum=Coffee.LATTE)) +``` diff --git a/docs/user_guide/data_types_and_io/flytedirectory.md b/docs/user_guide/data_types_and_io/flytedirectory.md new file mode 100644 index 00000000000..6dd75ed1592 --- /dev/null +++ b/docs/user_guide/data_types_and_io/flytedirectory.md @@ -0,0 +1,199 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(folder)= + +# FlyteDirectory + +```{eval-rst} +.. tags:: Data, Basic +``` + +In addition to files, folders are another fundamental operating system primitive. +Flyte supports folders in the form of +[multi-part blobs](https://github.com/flyteorg/flyteidl/blob/master/protos/flyteidl/core/types.proto#L73). + +To begin, import the libraries. + +```{code-cell} +import csv +import os +import urllib.request +from collections import defaultdict +from pathlib import Path +from typing import List + +import flytekit +from flytekit import task, workflow +from flytekit.types.directory import FlyteDirectory +``` + ++++ {"lines_to_next_cell": 0} + +Building upon the previous example demonstrated in the {std:ref}`file ` section, +let's continue by considering the normalization of columns in a CSV file. + +The following task downloads a list of URLs pointing to CSV files +and returns the folder path in a `FlyteDirectory` object. + +```{code-cell} +@task +def download_files(csv_urls: List[str]) -> FlyteDirectory: + working_dir = flytekit.current_context().working_directory + local_dir = Path(os.path.join(working_dir, "csv_files")) + local_dir.mkdir(exist_ok=True) + + # get the number of digits needed to preserve the order of files in the local directory + zfill_len = len(str(len(csv_urls))) + for idx, remote_location in enumerate(csv_urls): + local_image = os.path.join( + # prefix the file name with the index location of the file in the original csv_urls list + local_dir, + f"{str(idx).zfill(zfill_len)}_{os.path.basename(remote_location)}", + ) + urllib.request.urlretrieve(remote_location, local_image) + return FlyteDirectory(path=str(local_dir)) +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +You can annotate a `FlyteDirectory` when you want to download or upload the contents of the directory in batches. +For example, + +```{code-block} +@task +def t1(directory: Annotated[FlyteDirectory, BatchSize(10)]) -> Annotated[FlyteDirectory, BatchSize(100)]: + ... + return FlyteDirectory(...) +``` + +Flytekit efficiently downloads files from the specified input directory in 10-file chunks. +It then loads these chunks into memory before writing them to the local disk. +The process repeats for subsequent sets of 10 files. +Similarly, for outputs, Flytekit uploads the resulting directory in chunks of 100. +::: + +We define a helper function to normalize the columns in-place. + +:::{note} +This is a plain Python function that will be called in a subsequent Flyte task. This example +demonstrates how Flyte tasks are simply entrypoints of execution, which can themselves call +other functions and routines that are written in pure Python. +::: + +```{code-cell} +def normalize_columns( + local_csv_file: str, + column_names: List[str], + columns_to_normalize: List[str], +): + # read the data from the raw csv file + parsed_data = defaultdict(list) + with open(local_csv_file, newline="\n") as input_file: + reader = csv.DictReader(input_file, fieldnames=column_names) + for row in (x for i, x in enumerate(reader) if i > 0): + for column in columns_to_normalize: + parsed_data[column].append(float(row[column].strip())) + + # normalize the data + normalized_data = defaultdict(list) + for colname, values in parsed_data.items(): + mean = sum(values) / len(values) + std = (sum([(x - mean) ** 2 for x in values]) / len(values)) ** 0.5 + normalized_data[colname] = [(x - mean) / std for x in values] + + # overwrite the csv file with the normalized columns + with open(local_csv_file, mode="w") as output_file: + writer = csv.DictWriter(output_file, fieldnames=columns_to_normalize) + writer.writeheader() + for row in zip(*normalized_data.values()): + writer.writerow({k: row[i] for i, k in enumerate(columns_to_normalize)}) +``` + ++++ {"lines_to_next_cell": 0} + +We then define a task that accepts the previously downloaded folder, along with some metadata about the +column names of each file in the directory and the column names that we want to normalize. + +```{code-cell} +@task +def normalize_all_files( + csv_files_dir: FlyteDirectory, + columns_metadata: List[List[str]], + columns_to_normalize_metadata: List[List[str]], +) -> FlyteDirectory: + for local_csv_file, column_names, columns_to_normalize in zip( + # make sure we sort the files in the directory to preserve the original order of the csv urls + [os.path.join(csv_files_dir, x) for x in sorted(os.listdir(csv_files_dir))], + columns_metadata, + columns_to_normalize_metadata, + ): + normalize_columns(local_csv_file, column_names, columns_to_normalize) + return FlyteDirectory(path=csv_files_dir.path) +``` + ++++ {"lines_to_next_cell": 0} + +Compose all of the above tasks into a workflow. This workflow accepts a list +of URL strings pointing to a remote location containing a CSV file, a list of column names +associated with each CSV file, and a list of columns that we want to normalize. + +```{code-cell} +@workflow +def download_and_normalize_csv_files( + csv_urls: List[str], + columns_metadata: List[List[str]], + columns_to_normalize_metadata: List[List[str]], +) -> FlyteDirectory: + directory = download_files(csv_urls=csv_urls) + return normalize_all_files( + csv_files_dir=directory, + columns_metadata=columns_metadata, + columns_to_normalize_metadata=columns_to_normalize_metadata, + ) +``` + ++++ {"lines_to_next_cell": 0} + +You can run the workflow locally as follows: + +```{code-cell} +if __name__ == "__main__": + csv_urls = [ + "https://people.sc.fsu.edu/~jburkardt/data/csv/biostats.csv", + "https://people.sc.fsu.edu/~jburkardt/data/csv/faithful.csv", + ] + columns_metadata = [ + ["Name", "Sex", "Age", "Heights (in)", "Weight (lbs)"], + ["Index", "Eruption length (mins)", "Eruption wait (mins)"], + ] + columns_to_normalize_metadata = [ + ["Age"], + ["Eruption length (mins)"], + ] + + print(f"Running {__file__} main...") + directory = download_and_normalize_csv_files( + csv_urls=csv_urls, + columns_metadata=columns_metadata, + columns_to_normalize_metadata=columns_to_normalize_metadata, + ) + print(f"Running download_and_normalize_csv_files on {csv_urls}: " f"{directory}") +``` diff --git a/docs/user_guide/data_types_and_io/flytefile.md b/docs/user_guide/data_types_and_io/flytefile.md new file mode 100644 index 00000000000..474cad40414 --- /dev/null +++ b/docs/user_guide/data_types_and_io/flytefile.md @@ -0,0 +1,168 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(file)= + +# FlyteFile + +```{eval-rst} +.. tags:: Data, Basic +``` + +Files are one of the most fundamental entities that users of Python work with, +and they are fully supported by Flyte. In the IDL, they are known as +[Blob](https://github.com/flyteorg/flyteidl/blob/master/protos/flyteidl/core/literals.proto#L33) +literals which are backed by the +[blob type](https://github.com/flyteorg/flyteidl/blob/master/protos/flyteidl/core/types.proto#L47). + +Let's assume our mission here is pretty simple. We download a few CSV file +links, read them with the python built-in {py:class}`csv.DictReader` function, +normalize some pre-specified columns, and output the normalized columns to +another csv file. + +First, import the libraries. + +```{code-cell} +import csv +import os +from collections import defaultdict +from typing import List + +import flytekit +from flytekit import task, workflow +from flytekit.types.file import FlyteFile +``` + ++++ {"lines_to_next_cell": 0} + +Define a task that accepts {py:class}`~flytekit.types.file.FlyteFile` as an input. +The following is a task that accepts a `FlyteFile`, a list of column names, +and a list of column names to normalize. The task then outputs a CSV file +containing only the normalized columns. For this example, we use z-score normalization, +which involves mean-centering and standard-deviation-scaling. + +:::{note} +The `FlyteFile` literal can be scoped with a string, which gets inserted +into the format of the Blob type ("jpeg" is the string in +`FlyteFile[typing.TypeVar("jpeg")]`). The format is entirely optional, +and if not specified, defaults to `""`. +Predefined aliases for commonly used flyte file formats are also available. +You can find them [here](https://github.com/flyteorg/flytekit/blob/master/flytekit/types/file/__init__.py). +::: + +```{code-cell} +@task +def normalize_columns( + csv_url: FlyteFile, + column_names: List[str], + columns_to_normalize: List[str], + output_location: str, +) -> FlyteFile: + # read the data from the raw csv file + parsed_data = defaultdict(list) + with open(csv_url, newline="\n") as input_file: + reader = csv.DictReader(input_file, fieldnames=column_names) + next(reader) # Skip header + for row in reader: + for column in columns_to_normalize: + parsed_data[column].append(float(row[column].strip())) + + # normalize the data + normalized_data = defaultdict(list) + for colname, values in parsed_data.items(): + mean = sum(values) / len(values) + std = (sum([(x - mean) ** 2 for x in values]) / len(values)) ** 0.5 + normalized_data[colname] = [(x - mean) / std for x in values] + + # write to local path + out_path = os.path.join( + flytekit.current_context().working_directory, + f"normalized-{os.path.basename(csv_url.path).rsplit('.')[0]}.csv", + ) + with open(out_path, mode="w") as output_file: + writer = csv.DictWriter(output_file, fieldnames=columns_to_normalize) + writer.writeheader() + for row in zip(*normalized_data.values()): + writer.writerow({k: row[i] for i, k in enumerate(columns_to_normalize)}) + + if output_location: + return FlyteFile(path=out_path, remote_path=output_location) + else: + return FlyteFile(path=out_path) +``` + ++++ {"lines_to_next_cell": 0} + +When the image URL is sent to the task, the Flytekit engine translates it into a `FlyteFile` object on the local +drive (but doesn't download it). The act of calling the `download()` method should trigger the download, and the `path` +attribute enables to `open` the file. + +If the `output_location` argument is specified, it will be passed to the `remote_path` argument of `FlyteFile`, +which will use that path as the storage location instead of a random location (Flyte's object store). + +When this task finishes, the Flytekit engine returns the `FlyteFile` instance, uploads the file to the location, and +creates a blob literal pointing to it. + +Lastly, define a workflow. The `normalize_csv_files` workflow has an `output_location` argument which is passed +to the `location` input of the task. If it's not an empty string, the task attempts to +upload its file to that location. + +```{code-cell} +@workflow +def normalize_csv_file( + csv_url: FlyteFile, + column_names: List[str], + columns_to_normalize: List[str], + output_location: str = "", +) -> FlyteFile: + return normalize_columns( + csv_url=csv_url, + column_names=column_names, + columns_to_normalize=columns_to_normalize, + output_location=output_location, + ) +``` + ++++ {"lines_to_next_cell": 0} + +You can run the workflow locally as follows: + +```{code-cell} +if __name__ == "__main__": + default_files = [ + ( + "https://people.sc.fsu.edu/~jburkardt/data/csv/biostats.csv", + ["Name", "Sex", "Age", "Heights (in)", "Weight (lbs)"], + ["Age"], + ), + ( + "https://people.sc.fsu.edu/~jburkardt/data/csv/faithful.csv", + ["Index", "Eruption length (mins)", "Eruption wait (mins)"], + ["Eruption length (mins)"], + ), + ] + print(f"Running {__file__} main...") + for index, (csv_url, column_names, columns_to_normalize) in enumerate(default_files): + normalized_columns = normalize_csv_file( + csv_url=csv_url, + column_names=column_names, + columns_to_normalize=columns_to_normalize, + ) + print(f"Running normalize_csv_file workflow on {csv_url}: " f"{normalized_columns}") +``` diff --git a/docs/user_guide/data_types_and_io/index.md b/docs/user_guide/data_types_and_io/index.md new file mode 100644 index 00000000000..f419c99bd39 --- /dev/null +++ b/docs/user_guide/data_types_and_io/index.md @@ -0,0 +1,152 @@ +(data_types_and_io)= + +# Data Types and IO + +Flyte being a data-aware orchestration platform, types play a vital role within it. +This section provides an introduction to the wide range of data types that Flyte supports. +These types serve a dual purpose by not only validating the data but also enabling seamless +transfer of data between local and cloud storage. +They enable: + +- Data lineage +- Memoization +- Auto parallelization +- Simplifying access to data +- Auto generated CLI and launch UI + +For a more comprehensive understanding of how Flyte manages data, refer to the +{std:ref}`Understand How Flyte Handles Data ` guide. + +(python_to_flyte_type_mapping)= + +## Mapping Python to Flyte types + +Flytekit automatically translates most Python types into Flyte types. +Here's a breakdown of these mappings: + +```{eval-rst} +.. list-table:: + :widths: auto + :header-rows: 1 + + * - Python Type + - Flyte Type + - Conversion + - Comment + * - ``int`` + - ``Integer`` + - Automatic + - Use Python 3 type hints. + * - ``float`` + - ``Float`` + - Automatic + - Use Python 3 type hints. + * - ``str`` + - ``String`` + - Automatic + - Use Python 3 type hints. + * - ``bool`` + - ``Boolean`` + - Automatic + - Use Python 3 type hints. + * - ``bytes``/``bytearray`` + - ``Binary`` + - Not Supported + - You have the option to employ your own custom type transformer. + * - ``complex`` + - NA + - Not Supported + - You have the option to employ your own custom type transformer. + * - ``datetime.timedelta`` + - ``Duration`` + - Automatic + - Use Python 3 type hints. + * - ``datetime.datetime`` + - ``Datetime`` + - Automatic + - Use Python 3 type hints. + * - ``datetime.date`` + - ``Datetime`` + - Automatic + - Use Python 3 type hints. + * - ``typing.List[T]`` / ``list[T]`` + - ``Collection [T]`` + - Automatic + - Use ``typing.List[T]`` or ``list[T]``, where ``T`` can represent one of the other supported types listed in the table. + * - ``typing.Iterator[T]`` + - ``Collection [T]`` + - Automatic + - Use ``typing.Iterator[T]``, where ``T`` can represent one of the other supported types listed in the table. + * - File / file-like / ``os.PathLike`` + - ``FlyteFile`` + - Automatic + - If you're using ``file`` or ``os.PathLike`` objects, Flyte will default to the binary protocol for the file. + When using ``FlyteFile["protocol"]``, it is assumed that the file is in the specified protocol, such as 'jpg', 'png', 'hdf5', etc. + * - Directory + - ``FlyteDirectory`` + - Automatic + - When using ``FlyteDirectory["protocol"]``, it is assumed that all the files belong to the specified protocol. + * - ``typing.Dict[str, V]`` / ``dict[str, V]`` + - ``Map[str, V]`` + - Automatic + - Use ``typing.Dict[str, V]`` or ``dict[str, V]``, where ``V`` can be one of the other supported types in the table, + including a nested dictionary. + * - ``dict`` + - JSON (``struct.pb``) + - Automatic + - Use ``dict``. It's assumed that the untyped dictionary can be converted to JSON. + However, this may not always be possible and could result in a ``RuntimeError``. + * - ``@dataclass`` + - ``Struct`` + - Automatic + - The class should be a pure value class that inherits from Mashumaro's DataClassJSONMixin, + and be annotated with the ``@dataclass`` decorator. + * - ``np.ndarray`` + - File + - Automatic + - Use ``np.ndarray`` as a type hint. + * - ``pandas.DataFrame`` + - Structured Dataset + - Automatic + - Use ``pandas.DataFrame`` as a type hint. Pandas column types aren't preserved. + * - ``pyspark.DataFrame`` + - Structured Dataset + - To utilize the type, install the ``flytekitplugins-spark`` plugin. + - Use ``pyspark.DataFrame`` as a type hint. + * - ``pydantic.BaseModel`` + - ``Map`` + - To utilize the type, install the ``flytekitplugins-pydantic`` plugin. + - Use ``pydantic.BaseModel`` as a type hint. + * - ``torch.Tensor`` / ``torch.nn.Module`` + - File + - To utilize the type, install the ``torch`` library. + - Use ``torch.Tensor`` or ``torch.nn.Module`` as a type hint, and you can use their derived types. + * - ``tf.keras.Model`` + - File + - To utilize the type, install the ``tensorflow`` library. + - Use ``tf.keras.Model`` and its derived types. + * - ``sklearn.base.BaseEstimator`` + - File + - To utilize the type, install the ``scikit-learn`` library. + - Use ``sklearn.base.BaseEstimator`` and its derived types. + * - User defined types + - Any + - Custom transformers + - The ``FlytePickle`` transformer is the default option, but you can also define custom transformers. + **For instructions on building custom type transformers, please refer to :ref:`this section `**. +``` + +```{toctree} +:maxdepth: -1 +:name: data_types_and_io_toc +:hidden: + +flytefile +flytedirectory +structureddataset +dataclass +accessing_attributes +pytorch_type +enum_type +pickle_type +``` diff --git a/docs/user_guide/data_types_and_io/pickle_type.md b/docs/user_guide/data_types_and_io/pickle_type.md new file mode 100644 index 00000000000..b5cbb89f5a6 --- /dev/null +++ b/docs/user_guide/data_types_and_io/pickle_type.md @@ -0,0 +1,131 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(pickle_type)= + +# Pickle type + +```{eval-rst} +.. tags:: Basic +``` + +Flyte enforces type safety by utilizing type information for compiling tasks and workflows, +enabling various features such as static analysis and conditional branching. + +However, we also strive to offer flexibility to end-users so they don't have to invest heavily +in understanding their data structures upfront before experiencing the value Flyte has to offer. + +Flyte supports the `FlytePickle` transformer, which converts any unrecognized type hint into `FlytePickle`, +enabling the serialization/deserialization of Python values to/from a pickle file. + +:::{important} +Pickle can only be used to send objects between the exact same Python version. +For optimal performance, it's advisable to either employ Python types that are supported by Flyte +or register a custom transformer, as using pickle types can result in lower performance. +::: + +This example demonstrates how you can utilize custom objects without registering a transformer. + +```{code-cell} +from flytekit import task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +`Superhero` represents a user-defined complex type that can be serialized to a pickle file by Flytekit +and transferred between tasks as both input and output data. + +:::{note} +Alternatively, you can {ref}`turn this object into a dataclass ` for improved performance. +We have used a simple object here for demonstration purposes. +::: + +```{code-cell} +class Superhero: + def __init__(self, name, power): + self.name = name + self.power = power + + +@task +def welcome_superhero(name: str, power: str) -> Superhero: + return Superhero(name, power) + + +@task +def greet_superhero(superhero: Superhero) -> str: + return f"👋 Hello {superhero.name}! Your superpower is {superhero.power}." + + +@workflow +def superhero_wf(name: str = "Thor", power: str = "Flight") -> str: + superhero = welcome_superhero(name=name, power=power) + return greet_superhero(superhero=superhero) +``` + ++++ {"lines_to_next_cell": 0} + +## Batch size + +By default, if the list subtype is unrecognized, a single pickle file is generated. +To optimize serialization and deserialization performance for scenarios involving a large number of items +or significant list elements, you can specify a batch size. +This feature allows for the processing of each batch as a separate pickle file. +The following example demonstrates how to set the batch size. + +```{code-cell} +from typing import Iterator + +from flytekit.types.pickle.pickle import BatchSize +from typing_extensions import Annotated + + +@task +def welcome_superheroes(names: list[str], powers: list[str]) -> Annotated[list[Superhero], BatchSize(3)]: + return [Superhero(name, power) for name, power in zip(names, powers)] + + +@task +def greet_superheroes(superheroes: list[Superhero]) -> Iterator[str]: + for superhero in superheroes: + yield f"👋 Hello {superhero.name}! Your superpower is {superhero.power}." + + +@workflow +def superheroes_wf( + names: list[str] = ["Thor", "Spiderman", "Hulk"], + powers: list[str] = ["Flight", "Surface clinger", "Shapeshifting"], +) -> Iterator[str]: + superheroes = welcome_superheroes(names=names, powers=powers) + return greet_superheroes(superheroes=superheroes) +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +The `welcome_superheroes` task will generate two pickle files: one containing two superheroes and the other containing one superhero. +::: + +You can run the workflows locally as follows: + +```{code-cell} +if __name__ == "__main__": + print(f"Superhero wf: {superhero_wf()}") + print(f"Superhero(es) wf: {superheroes_wf()}") +``` diff --git a/docs/user_guide/data_types_and_io/pytorch_type.md b/docs/user_guide/data_types_and_io/pytorch_type.md new file mode 100644 index 00000000000..4e5715d1287 --- /dev/null +++ b/docs/user_guide/data_types_and_io/pytorch_type.md @@ -0,0 +1,219 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(pytorch_type)= + +# PyTorch type + +```{eval-rst} +.. tags:: MachineLearning, Basic +``` + +Flyte advocates for the use of strongly-typed data to simplify the development of robust and testable pipelines. +In addition to its application in data engineering, Flyte is primarily used for machine learning. +To streamline the communication between Flyte tasks, particularly when dealing with tensors and models, +we have introduced support for PyTorch types. + +## Tensors and modules + +At times, you may find the need to pass tensors and modules (models) within your workflow. +Without native support for PyTorch tensors and modules, Flytekit relies on {std:ref}`pickle ` for serializing +and deserializing these entities, as well as any unknown types. +However, this approach isn't the most efficient. As a result, we've integrated PyTorch's +serialization and deserialization support into the Flyte type system. + +```{code-cell} +import torch +from flytekit import task, workflow + + +@task +def generate_tensor_2d() -> torch.Tensor: + return torch.tensor([[1.0, -1.0, 2], [1.0, -1.0, 9], [0, 7.0, 3]]) + + +@task +def reshape_tensor(tensor: torch.Tensor) -> torch.Tensor: + # convert 2D to 3D + tensor.unsqueeze_(-1) + return tensor.expand(3, 3, 2) + + +@task +def generate_module() -> torch.nn.Module: + bn = torch.nn.BatchNorm1d(3, track_running_stats=True) + return bn + + +@task +def get_model_weight(model: torch.nn.Module) -> torch.Tensor: + return model.weight + + +class MyModel(torch.nn.Module): + def __init__(self): + super(MyModel, self).__init__() + self.l0 = torch.nn.Linear(4, 2) + self.l1 = torch.nn.Linear(2, 1) + + def forward(self, input): + out0 = self.l0(input) + out0_relu = torch.nn.functional.relu(out0) + return self.l1(out0_relu) + + +@task +def get_l1() -> torch.nn.Module: + model = MyModel() + return model.l1 + + +@workflow +def pytorch_native_wf(): + reshape_tensor(tensor=generate_tensor_2d()) + get_model_weight(model=generate_module()) + get_l1() +``` + ++++ {"lines_to_next_cell": 0} + +Passing around tensors and modules is no more a hassle! + +## Checkpoint + +`PyTorchCheckpoint` is a specialized checkpoint used for serializing and deserializing PyTorch models. +It checkpoints `torch.nn.Module`'s state, hyperparameters and optimizer state. + +This module checkpoint differs from the standard checkpoint as it specifically captures the module's `state_dict`. +Therefore, when restoring the module, the module's `state_dict` must be used in conjunction with the actual module. +According to the PyTorch [docs](https://pytorch.org/tutorials/beginner/saving_loading_models.html#save-load-entire-model), +it's recommended to store the module's `state_dict` rather than the module itself, +although the serialization should work in either case. + +```{code-cell} +:lines_to_next_cell: 2 + +from dataclasses import dataclass + +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +from dataclasses_json import dataclass_json +from flytekit.extras.pytorch import PyTorchCheckpoint + + +@dataclass_json +@dataclass +class Hyperparameters: + epochs: int + loss: float + + +class Net(nn.Module): + def __init__(self): + super(Net, self).__init__() + self.conv1 = nn.Conv2d(3, 6, 5) + self.pool = nn.MaxPool2d(2, 2) + self.conv2 = nn.Conv2d(6, 16, 5) + self.fc1 = nn.Linear(16 * 5 * 5, 120) + self.fc2 = nn.Linear(120, 84) + self.fc3 = nn.Linear(84, 10) + + def forward(self, x): + x = self.pool(F.relu(self.conv1(x))) + x = self.pool(F.relu(self.conv2(x))) + x = x.view(-1, 16 * 5 * 5) + x = F.relu(self.fc1(x)) + x = F.relu(self.fc2(x)) + x = self.fc3(x) + return x + + +@task +def generate_model(hyperparameters: Hyperparameters) -> PyTorchCheckpoint: + bn = Net() + optimizer = optim.SGD(bn.parameters(), lr=0.001, momentum=0.9) + return PyTorchCheckpoint(module=bn, hyperparameters=hyperparameters, optimizer=optimizer) + + +@task +def load(checkpoint: PyTorchCheckpoint): + new_bn = Net() + new_bn.load_state_dict(checkpoint["module_state_dict"]) + optimizer = optim.SGD(new_bn.parameters(), lr=0.001, momentum=0.9) + optimizer.load_state_dict(checkpoint["optimizer_state_dict"]) + + +@workflow +def pytorch_checkpoint_wf(): + checkpoint = generate_model(hyperparameters=Hyperparameters(epochs=10, loss=0.1)) + load(checkpoint=checkpoint) +``` + +:::{note} +`PyTorchCheckpoint` supports serializing hyperparameters of types `dict`, `NamedTuple` and `dataclass`. +::: + +## Auto GPU to CPU and CPU to GPU conversion + +Not all PyTorch computations require a GPU. In some cases, it can be advantageous to transfer the +computation to a CPU, especially after training the model on a GPU. +To utilize the power of a GPU, the typical construct to use is: `to(torch.device("cuda"))`. + +When working with GPU variables on a CPU, variables need to be transferred to the CPU using the `to(torch.device("cpu"))` construct. +However, this manual conversion recommended by PyTorch may not be very user-friendly. +To address this, we added support for automatic GPU to CPU conversion (and vice versa) for PyTorch types. + +```python +from flytekit import Resources +from typing import Tuple + + +@task(requests=Resources(gpu="1")) +def train() -> Tuple[PyTorchCheckpoint, torch.Tensor, torch.Tensor, torch.Tensor]: + ... + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + model = Model(X_train.shape[1]) + model.to(device) + ... + X_train, X_test = X_train.to(device), X_test.to(device) + y_train, y_test = y_train.to(device), y_test.to(device) + ... + return PyTorchCheckpoint(module=model), X_train, X_test, y_test + +@task +def predict( + checkpoint: PyTorchCheckpoint, + X_train: torch.Tensor, + X_test: torch.Tensor, + y_test: torch.Tensor, +): + new_bn = Model(X_train.shape[1]) + new_bn.load_state_dict(checkpoint["module_state_dict"]) + + accuracy_list = np.zeros((5,)) + + with torch.no_grad(): + y_pred = new_bn(X_test) + correct = (torch.argmax(y_pred, dim=1) == y_test).type(torch.FloatTensor) + accuracy_list = correct.mean() +``` + +The `predict` task will run on a CPU, and +the device conversion from GPU to CPU will be automatically handled by Flytekit. diff --git a/docs/user_guide/data_types_and_io/structureddataset.md b/docs/user_guide/data_types_and_io/structureddataset.md new file mode 100644 index 00000000000..e37c006d0e9 --- /dev/null +++ b/docs/user_guide/data_types_and_io/structureddataset.md @@ -0,0 +1,365 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(structured_dataset)= + +# StructuredDataset + +```{eval-rst} +.. tags:: Basic, DataFrame +``` +```{currentmodule} flytekit.types.structured +``` + +As with most type systems, Python has primitives, container types like maps and tuples, and support for user-defined structures. +However, while there’s a rich variety of dataframe classes (Pandas, Spark, Pandera, etc.), there’s no native Python type that +represents a dataframe in the abstract. This is the gap that the {py:class}`StructuredDataset` type is meant to fill. +It offers the following benefits: + +- Eliminate boilerplate code you would otherwise need to write to serialize/deserialize from file objects into dataframe instances, +- Eliminate additional inputs/outputs that convey metadata around the format of the tabular data held in those files, +- Add flexibility around how dataframe files are loaded, +- Offer a range of dataframe specific functionality - enforce compatibility of different schemas + (not only at compile time, but also runtime since type information is carried along in the literal), + store third-party schema definitions, and potentially in the future, render sample data, provide summary statistics, etc. + +This example demonstrates how to work with a structured dataset using Flyte entities. + +To begin, import the necessary dependencies. + +```{code-cell} +import os +import typing + +import numpy as np +import pandas as pd +import pyarrow as pa +import pyarrow.parquet as pq +from flytekit import FlyteContext, StructuredDatasetType, kwtypes, task, workflow +from flytekit.models import literals +from flytekit.models.literals import StructuredDatasetMetadata +from flytekit.types.structured.structured_dataset import ( + PARQUET, + StructuredDataset, + StructuredDatasetDecoder, + StructuredDatasetEncoder, + StructuredDatasetTransformerEngine, +) +from typing_extensions import Annotated +``` + ++++ {"lines_to_next_cell": 0} + +Define a task that returns a Pandas DataFrame. +Flytekit will detect the Pandas dataframe return signature and +convert the interface for the task to the new {py:class}`StructuredDataset` type. + +```{code-cell} +@task +def generate_pandas_df(a: int) -> pd.DataFrame: + return pd.DataFrame({"Name": ["Tom", "Joseph"], "Age": [a, 22], "Height": [160, 178]}) +``` + ++++ {"lines_to_next_cell": 0} + +Using this simplest form, however, the user is not able to set the additional dataframe information alluded to above, + +- Column type information +- Serialized byte format +- Storage driver and location +- Additional third party schema information + +This is by design as we wanted the default case to suffice for the majority of use-cases, and to require +as few changes to existing code as possible. Specifying these is simple, however, and relies on Python variable annotations, +which is designed explicitly to supplement types with arbitrary metadata. + +## Column type information +If you want to extract a subset of actual columns of the dataframe and specify their types for type validation, +you can just specify the column names and their types in the structured dataset type annotation. + +First, initialize column types you want to extract from the `StructuredDataset`. + +```{code-cell} +all_cols = kwtypes(Name=str, Age=int, Height=int) +col = kwtypes(Age=int) +``` + ++++ {"lines_to_next_cell": 0} + +Define a task that opens a structured dataset by calling `all()`. +When you invoke `all()` with ``pandas.DataFrame``, the Flyte engine downloads the parquet file on S3, and deserializes it to `pandas.DataFrame`. +Keep in mind that you can invoke ``open()`` with any dataframe type that's supported or added to structured dataset. +For instance, you can use ``pa.Table`` to convert the Pandas DataFrame to a PyArrow table. + +```{code-cell} +@task +def get_subset_pandas_df(df: Annotated[StructuredDataset, all_cols]) -> Annotated[StructuredDataset, col]: + df = df.open(pd.DataFrame).all() + df = pd.concat([df, pd.DataFrame([[30]], columns=["Age"])]) + return StructuredDataset(dataframe=df) + + +@workflow +def simple_sd_wf(a: int = 19) -> Annotated[StructuredDataset, col]: + pandas_df = generate_pandas_df(a=a) + return get_subset_pandas_df(df=pandas_df) +``` + ++++ {"lines_to_next_cell": 0} + +The code may result in runtime failures if the columns do not match. +The input ``df`` has ``Name``, ``Age`` and ``Height`` columns, whereas the output structured dataset will only have the ``Age`` column. + +## Serialized byte format +You can use a custom serialization format to serialize your dataframes. +Here's how you can register the Pandas to CSV handler, which is already available, +and enable the CSV serialization by annotating the structured dataset with the CSV format: + +```{code-cell} +from flytekit.types.structured import register_csv_handlers +from flytekit.types.structured.structured_dataset import CSV + +register_csv_handlers() + + +@task +def pandas_to_csv(df: pd.DataFrame) -> Annotated[StructuredDataset, CSV]: + return StructuredDataset(dataframe=df) + + +@workflow +def pandas_to_csv_wf() -> Annotated[StructuredDataset, CSV]: + pandas_df = generate_pandas_df(a=19) + return pandas_to_csv(df=pandas_df) +``` + ++++ {"lines_to_next_cell": 0} + +## Storage driver and location +By default, the data will be written to the same place that all other pointer-types (FlyteFile, FlyteDirectory, etc.) are written to. +This is controlled by the output data prefix option in Flyte which is configurable on multiple levels. + +That is to say, in the simple default case, Flytekit will, + +- Look up the default format for say, Pandas dataframes, +- Look up the default storage location based on the raw output prefix setting, +- Use these two settings to select an encoder and invoke it. + +So what's an encoder? To understand that, let's look into how the structured dataset plugin works. + +## Inner workings of a structured dataset plugin + +Two things need to happen with any dataframe instance when interacting with Flyte: + +- Serialization/deserialization from/to the Python instance to bytes (in the format specified above). +- Transmission/retrieval of those bits to/from somewhere. + +Each structured dataset plugin (called encoder or decoder) needs to perform both of these steps. +Flytekit decides which of the loaded plugins to invoke based on three attributes: + +- The byte format +- The storage location +- The Python type in the task or workflow signature. + +These three keys uniquely identify which encoder (used when converting a dataframe in Python memory to a Flyte value, +e.g. when a task finishes and returns a dataframe) or decoder (used when hydrating a dataframe in memory from a Flyte value, +e.g. when a task starts and has a dataframe input) to invoke. + +However, it is awkward to require users to use `typing.Annotated` on every signature. +Therefore, Flytekit has a default byte-format for every Python dataframe type registered with flytekit. + +## The `uri` argument + +BigQuery `uri` allows you to load and retrieve data from cloud using the `uri` argument. +The `uri` comprises of the bucket name and the filename prefixed with `gs://`. +If you specify BigQuery `uri` for structured dataset, BigQuery creates a table in the location specified by the `uri`. +The `uri` in structured dataset reads from or writes to S3, GCP, BigQuery or any storage. + +Before writing DataFrame to a BigQuery table, + +1. Create a [GCP account](https://cloud.google.com/docs/authentication/getting-started) and create a service account. +2. Create a project and add the `GOOGLE_APPLICATION_CREDENTIALS` environment variable to your `.bashrc` file. +3. Create a dataset in your project. + +Here's how you can define a task that converts a pandas DataFrame to a BigQuery table: + +```python +@task +def pandas_to_bq() -> StructuredDataset: + df = pd.DataFrame({"Name": ["Tom", "Joseph"], "Age": [20, 22]}) + return StructuredDataset(dataframe=df, uri="gs:///") +``` + +Replace `BUCKET_NAME` with the name of your GCS bucket and `FILE_NAME` with the name of the file the dataframe should be copied to. + +### Note that no format was specified in the structured dataset constructor, or in the signature. So how did the BigQuery encoder get invoked? +This is because the stock BigQuery encoder is loaded into Flytekit with an empty format. +The Flytekit `StructuredDatasetTransformerEngine` interprets that to mean that it is a generic encoder +(or decoder) and can work across formats, if a more specific format is not found. + +And here's how you can define a task that converts the BigQuery table to a pandas DataFrame: + +```python +@task +def bq_to_pandas(sd: StructuredDataset) -> pd.DataFrame: + return sd.open(pd.DataFrame).all() +``` + +:::{note} +Flyte creates a table inside the dataset in the project upon BigQuery query execution. +::: + +## How to return multiple dataframes from a task? +For instance, how would a task return say two dataframes: +- The first dataframe be written to BigQuery and serialized by one of their libraries, +- The second needs to be serialized to CSV and written at a specific location in GCS different from the generic pointer-data bucket + +If you want the default behavior (which is itself configurable based on which plugins are loaded), +you can work just with your current raw dataframe classes. + +```python +@task +def t1() -> typing.Tuple[StructuredDataset, StructuredDataset]: + ... + return StructuredDataset(df1, uri="bq://project:flyte.table"), \ + StructuredDataset(df2, uri="gs://auxiliary-bucket/data") +``` + +If you want to customize the Flyte interaction behavior, you'll need to wrap your dataframe in a `StructuredDataset` wrapper object. + +## How to define a custom structured dataset plugin? + +`StructuredDataset` ships with an encoder and a decoder that handles the conversion of a +Python value to a Flyte literal and vice-versa, respectively. +Here is a quick demo showcasing how one might build a NumPy encoder and decoder, +enabling the use of a 2D NumPy array as a valid type within structured datasets. + +### NumPy encoder + +Extend `StructuredDatasetEncoder` and implement the `encode` function. +The `encode` function converts NumPy array to an intermediate format (parquet file format in this case). + +```{code-cell} +class NumpyEncodingHandler(StructuredDatasetEncoder): + def encode( + self, + ctx: FlyteContext, + structured_dataset: StructuredDataset, + structured_dataset_type: StructuredDatasetType, + ) -> literals.StructuredDataset: + df = typing.cast(np.ndarray, structured_dataset.dataframe) + name = ["col" + str(i) for i in range(len(df))] + table = pa.Table.from_arrays(df, name) + path = ctx.file_access.get_random_remote_directory() + local_dir = ctx.file_access.get_random_local_directory() + local_path = os.path.join(local_dir, f"{0:05}") + pq.write_table(table, local_path) + ctx.file_access.upload_directory(local_dir, path) + return literals.StructuredDataset( + uri=path, + metadata=StructuredDatasetMetadata(structured_dataset_type=StructuredDatasetType(format=PARQUET)), + ) +``` + ++++ {"lines_to_next_cell": 0} + +### NumPy decoder + +Extend {py:class}`StructuredDatasetDecoder` and implement the {py:meth}`~StructuredDatasetDecoder.decode` function. +The {py:meth}`~StructuredDatasetDecoder.decode` function converts the parquet file to a `numpy.ndarray`. + +```{code-cell} +class NumpyDecodingHandler(StructuredDatasetDecoder): + def decode( + self, + ctx: FlyteContext, + flyte_value: literals.StructuredDataset, + current_task_metadata: StructuredDatasetMetadata, + ) -> np.ndarray: + local_dir = ctx.file_access.get_random_local_directory() + ctx.file_access.get_data(flyte_value.uri, local_dir, is_multipart=True) + table = pq.read_table(local_dir) + return table.to_pandas().to_numpy() +``` + ++++ {"lines_to_next_cell": 0} + +### NumPy renderer + +Create a default renderer for numpy array, then Flytekit will use this renderer to +display schema of NumPy array on the Flyte deck. + +```{code-cell} +class NumpyRenderer: + def to_html(self, df: np.ndarray) -> str: + assert isinstance(df, np.ndarray) + name = ["col" + str(i) for i in range(len(df))] + table = pa.Table.from_arrays(df, name) + return pd.DataFrame(table.schema).to_html(index=False) +``` + ++++ {"lines_to_next_cell": 0} + +In the end, register the encoder, decoder and renderer with the `StructuredDatasetTransformerEngine`. +Specify the Python type you want to register this encoder with (`np.ndarray`), +the storage engine to register this against (if not specified, it is assumed to work for all the storage backends), +and the byte format, which in this case is `PARQUET`. + +```{code-cell} +StructuredDatasetTransformerEngine.register(NumpyEncodingHandler(np.ndarray, None, PARQUET)) +StructuredDatasetTransformerEngine.register(NumpyDecodingHandler(np.ndarray, None, PARQUET)) +StructuredDatasetTransformerEngine.register_renderer(np.ndarray, NumpyRenderer()) +``` + ++++ {"lines_to_next_cell": 0} + +You can now use `numpy.ndarray` to deserialize the parquet file to NumPy and serialize a task's output (NumPy array) to a parquet file. + +```{code-cell} +@task +def generate_pd_df_with_str() -> pd.DataFrame: + return pd.DataFrame({"Name": ["Tom", "Joseph"]}) + + +@task +def to_numpy(sd: StructuredDataset) -> Annotated[StructuredDataset, None, PARQUET]: + numpy_array = sd.open(np.ndarray).all() + return StructuredDataset(dataframe=numpy_array) + + +@workflow +def numpy_wf() -> Annotated[StructuredDataset, None, PARQUET]: + return to_numpy(sd=generate_pd_df_with_str()) +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +`pyarrow` raises an `Expected bytes, got a 'int' object` error when the dataframe contains integers. +::: + +You can run the code locally as follows: + +```{code-cell} +if __name__ == "__main__": + sd = simple_sd_wf() + print(f"A simple Pandas dataframe workflow: {sd.open(pd.DataFrame).all()}") + print(f"Using CSV as the serializer: {pandas_to_csv_wf().open(pd.DataFrame).all()}") + print(f"NumPy encoder and decoder: {numpy_wf().open(np.ndarray).all()}") +``` diff --git a/docs/user_guide/development_lifecycle/agents.md b/docs/user_guide/development_lifecycle/agents.md new file mode 100644 index 00000000000..2ec13092729 --- /dev/null +++ b/docs/user_guide/development_lifecycle/agents.md @@ -0,0 +1,234 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(extend-agent-service)= + +# Agents + +```{eval-rst} +.. tags:: Extensibility, Contribute, Intermediate +``` + +:::{note} +This is an experimental feature, which is subject to change the API in the future. +::: + +## What is an agent? + +In Flyte, an agent is a long-running stateless service that can be used to execute tasks. It reduces the overhead of creating a pod for each task. +In addition, it's easy to scale up and down the agent service based on the workload. Agent services are designed to be language-agnostic. +For now, we only support Python agent, but we may support other languages in the future. + +Agent is designed to run a specific type of task. For example, you can create a BigQuery agent to run BigQuery task. Therefore, if you create a new type of task, you can +either run the task in the pod, or you can create a new agent to run it. You can determine how the task will be executed in the FlytePropeller configMap. + +Key goals of the agent service include: + +- Support for communication with external services: The focus is on enabling agents that seamlessly interact with external services. +- Independent testing and private deployment: Agents can be tested independently and deployed privately, providing flexibility and control over development. +- Flyte Agent usage in local development: Users, especially in `flytekit` and `unionml`, can leverage backend agents for local development, streamlining the development process. +- Language-agnostic: Agents can be authored in any programming language, allowing users to work with their preferred language and tools. +- Scalability: Agents are designed to be scalable, ensuring they can handle large-scale workloads effectively. +- Simple API: Agents offer a straightforward API, making integration and usage straightforward for developers. + +## Why do we need an agent service? + +Without agents, people need to implement a backend plugin in the propeller. The backend plugin is responsible for +creating a CRD and submitting a http request to the external service. However, it increases the complexity of flytepropeller, and +it's hard to maintain the backend plugin. For example, if we want to add a new plugin, we need to update and compile +flytepropeller, and it's also hard to test. In addition, the backend plugin is running in flytepropeller itself, so it +increases the load of the flytepropeller engine. + +Furthermore, implementing backend plugins can be challenging, particularly for data scientists and ML engineers who may lack proficiency in +Golang. Additionally, managing performance requirements, maintenance, and development can be burdensome. +To address these issues, we introduced the "Agent Service" in Flyte. This system enables rapid plugin +development while decoupling them from the core flytepropeller engine. + +## Overview + +The Flyte agent service is a Python-based agent registry powered by a gRPC server. It allows users and flytepropeller +to send gRPC requests to the registry for executing jobs such as BigQuery and Databricks. Each Agent service is a Kubernetes +deployment. You can create two different Agent services hosting different Agents. For example, you can create one production +agent service and one development agent service. + +:::{figure} https://i.ibb.co/vXhBDjP/Screen-Shot-2023-05-29-at-2-54-14-PM.png +:alt: Agent Service +:class: with-shadow +::: + +## How to register a new agent + +### Flytekit interface specification + +To register a new agent, you can extend the `AgentBase` class in the flytekit backend module. Implementing the following three methods is necessary, and it's important to ensure that all calls are idempotent: + +- `create`: This method is used to initiate a new task. Users have the flexibility to use gRPC, REST, or an SDK to create a task. +- `get`: This method allows retrieving the job Resource (jobID or output literal) associated with the task, such as a BigQuery Job ID or Databricks task ID. +- `delete`: Invoking this method will send a request to delete the corresponding job. + +```python +from flytekit.extend.backend.base_agent import AgentBase, AgentRegistry +from dataclasses import dataclass +import requests + +@dataclass +class Metadata: + # you can add any metadata you want, propeller will pass the metadata to the agent to get the job status. + # For example, you can add the job_id to the metadata, and the agent will use the job_id to get the job status. + # You could also add the s3 file path, and the agent can check if the file exists. + job_id: str + +class CustomAgent(AgentBase): + def __init__(self, task_type: str): + # Each agent should have a unique task type. Agent service will use the task type to find the corresponding agent. + self._task_type = task_type + + def create( + self, + context: grpc.ServicerContext, + output_prefix: str, + task_template: TaskTemplate, + inputs: typing.Optional[LiteralMap] = None, + ) -> TaskCreateResponse: + # 1. Submit the task to the external service (BigQuery, DataBricks, etc.) + # 2. Create a task metadata such as jobID. + # 3. Return the task metadata, and keep in mind that the metadata should be serialized to bytes. + res = requests.post(url, json=data) + return CreateTaskResponse(resource_meta=json.dumps(asdict(Metadata(job_id=str(res.job_id)))).encode("utf-8")) + + def get(self, context: grpc.ServicerContext, resource_meta: bytes) -> TaskGetResponse: + # 1. Deserialize the metadata. + # 2. Use the metadata to get the job status. + # 3. Return the job status. + metadata = Metadata(**json.loads(resource_meta.decode("utf-8"))) + res = requests.get(url, json={"job_id": metadata.job_id}) + return GetTaskResponse(resource=Resource(state=res.state) + + def delete(self, context: grpc.ServicerContext, resource_meta: bytes) -> TaskDeleteResponse: + # 1. Deserialize the metadata. + # 2. Use the metadata to delete the job. + # 3. If failed to delete the job, add the error message to the grpc context. + # context.set_code(grpc.StatusCode.INTERNAL) + # context.set_details(f"failed to create task with error {e}") + try: + metadata = Metadata(**json.loads(resource_meta.decode("utf-8"))) + requests.delete(url, json={"job_id": metadata.job_id}) + except Exception as e: + logger.error(f"failed to delete task with error {e}") + context.set_code(grpc.StatusCode.INTERNAL) + context.set_details(f"failed to delete task with error {e}") + return DeleteTaskResponse() + +# To register the custom agent +AgentRegistry.register(CustomAgent()) +``` + +Here is an example of [BigQuery Agent](https://github.com/flyteorg/flytekit/blob/9977aac26242ebbede8e00d476c2fbc59ac5487a/plugins/flytekit-bigquery/flytekitplugins/bigquery/agent.py#L35) implementation. + +### How to test the agent + +Agent can be tested locally without running backend server. It makes the development of the agent easier. + +The task inherited from AsyncAgentExecutorMixin can be executed locally, allowing flytekit to mimic the propeller's behavior to call the agent. +In some cases, you should store credentials in your local environment when testing locally. +For example, you need to set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable when testing the BigQuery task. +After setting up the CREDENTIALS, you can run the task locally. Flytekit will automatically call the agent to create, get, or delete the task. + +```python +bigquery_doge_coin = BigQueryTask( + name=f"bigquery.doge_coin", + inputs=kwtypes(version=int), + query_template="SELECT * FROM `bigquery-public-data.crypto_dogecoin.transactions` WHERE version = @version LIMIT 10;", + output_structured_dataset_type=StructuredDataset, + task_config=BigQueryConfig(ProjectID="flyte-test-340607") +) +``` + +Task above task as an example, you can run the task locally and test agent with the following command: + +```bash +pyflyte run wf.py bigquery_doge_coin --version 10 +``` + +### Build a new image + +The following is a sample Dockerfile for building an image for a flyte agent. + +```Dockerfile +FROM python:3.9-slim-buster + +MAINTAINER Flyte Team +LABEL org.opencontainers.image.source=https://github.com/flyteorg/flytekit + +WORKDIR /root +ENV PYTHONPATH /root + +# flytekit will autoload the agent if package is installed. +RUN pip install flytekitplugins-bigquery +CMD pyflyte serve agent --port 8000 +``` + +:::{note} +For flytekit versions `<=v1.10.2`, use `pyflyte serve`. +For flytekit versions `>v1.10.2`, use `pyflyte serve agent`. +::: + +### Update FlyteAgent + +1. Update the FlyteAgent deployment's [image](https://github.com/flyteorg/flyte/blob/c049865cba017ad826405c7145cd3eccbc553232/charts/flyteagent/templates/agent/deployment.yaml#L26) +2. Update the FlytePropeller configmap. + +```YAML +tasks: + task-plugins: + enabled-plugins: + - agent-service + default-for-task-types: + - bigquery_query_job_task: agent-service + - custom_task: agent-service + +plugins: + agent-service: + supportedTaskTypes: + - bigquery_query_job_task + - default_task + - custom_task + # By default, all the request will be sent to the default agent. + defaultAgent: + endpoint: "dns:///flyteagent.flyte.svc.cluster.local:8000" + insecure: true + timeouts: + GetTask: 200ms + defaultTimeout: 50ms + agents: + custom_agent: + endpoint: "dns:///custom-flyteagent.flyte.svc.cluster.local:8000" + insecure: false + defaultServiceConfig: '{"loadBalancingConfig": [{"round_robin":{}}]}' + timeouts: + GetTask: 100ms + defaultTimeout: 20ms + agentForTaskTypes: + # It will override the default agent for custom_task, which means propeller will send the request to this agent. + - custom_task: custom_agent +``` + +3. Restart the FlytePropeller + +``` +kubectl rollout restart deployment flytepropeller -n flyte +``` diff --git a/docs/user_guide/development_lifecycle/cache_serializing.md b/docs/user_guide/development_lifecycle/cache_serializing.md new file mode 100644 index 00000000000..f570b1c3516 --- /dev/null +++ b/docs/user_guide/development_lifecycle/cache_serializing.md @@ -0,0 +1,74 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Cache serializing + +```{eval-rst} +.. tags:: Intermediate +``` + +Serializing means only executing a single instance of a unique cacheable task (determined by the cache_version parameter and task signature) at a time. Using this mechanism, Flyte ensures that during multiple concurrent executions of a task only a single instance is evaluated and all others wait until completion and reuse the resulting cached outputs. + +Ensuring serialized evaluation requires a small degree of overhead to coordinate executions using a lightweight artifact reservation system. Therefore, this should be viewed as an extension to rather than a replacement for non-serialized cacheable tasks. It is particularly well fit for long running or otherwise computationally expensive tasks executed in scenarios similar to the following examples: + +- Periodically scheduled workflow where a single task evaluation duration may span multiple scheduled executions. +- Running a commonly shared task within different workflows (which receive the same inputs). + ++++ {"lines_to_next_cell": 0} + +For any {py:func}`flytekit.task` in Flyte, there is always one required import, which is: + +```{code-cell} +from flytekit import task +``` + ++++ {"lines_to_next_cell": 0} + +Task cache serializing is disabled by default to avoid unexpected behavior for task executions. To enable use the `cache_serialize` parameter. +`cache_serialize` is a switch to enable or disable serialization of the task +This operation is only useful for cacheable tasks, where one may reuse output from a previous execution. Flyte requires implicitly enabling the `cache` parameter on all cache serializable tasks. +Cache key definitions follow the same rules as non-serialized cache tasks. It is important to understand the implications of the task signature and `cache_version` parameter in defining cached results. + +```{code-cell} +:lines_to_next_cell: 2 + +@task(cache=True, cache_serialize=True, cache_version="1.0") +def square(n: int) -> int: + """ + Parameters: + n (int): name of the parameter for the task will be derived from the name of the input variable. + The type will be automatically deduced to Types.Integer + + Return: + int: The label for the output will be automatically assigned, and the type will be deduced from the annotation + + """ + return n * n +``` + +In the above example calling `square(n=2)` multiple times concurrently (even in different executions or workflows) will only execute the multiplication operation once. +Concurrently evaluated tasks will wait for completion of the first instance before reusing the cached results and subsequent evaluations will instantly reuse existing cache results. + ++++ + +## How does serializing caches work? + +The cache serialize paradigm introduces a new artifact reservation system. Tasks may use this reservation system to acquire an artifact reservation, indicating that they are actively evaluating the task, and release the reservation, once the execution is completed. Flyte uses a clock-skew algorithm to define reservation timeouts. Therefore, tasks are required to periodically extend the reservation during execution. + +The first execution of a serializable cached task will successfully acquire the artifact reservation. Execution will be performed as usual and upon completion, the results are written to the cache and reservation is released. Concurrently executed task instances (i.e. in parallel with the initial execution) will observe an active reservation, in which case the execution will wait until the next reevaluation and perform another check. Once the initial execution completes it will reuse the cached results. Subsequently executed task instances (i.e. after an execution has already completed successfully) will immediately reuse the existing cached results. + +Flyte handles task execution failures using a timeout on the reservation. If the task currently holding the reservation fails to extend it before it times out, another task may acquire the reservation and begin executing the task. diff --git a/docs/user_guide/development_lifecycle/caching.md b/docs/user_guide/development_lifecycle/caching.md new file mode 100644 index 00000000000..b0cc202cd91 --- /dev/null +++ b/docs/user_guide/development_lifecycle/caching.md @@ -0,0 +1,240 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Caching + +```{eval-rst} +.. tags:: Basic +``` + +Flyte provides the ability to cache the output of task executions to make the subsequent executions faster. A well-behaved Flyte task should generate deterministic output given the same inputs and task functionality. + +Task caching is useful when a user knows that many executions with the same inputs may occur. For example, consider the following scenarios: + +- Running a task periodically on a schedule +- Running the code multiple times when debugging workflows +- Running the commonly shared tasks amongst different workflows, which receive the same inputs + +Let's watch a brief explanation of caching and a demo in this video, followed by how task caching can be enabled . + +```{eval-rst} +.. youtube:: WNkThCp-gqo + +``` + ++++ {"lines_to_next_cell": 0} + +Import the necessary libraries. + +```{code-cell} +import time + +import pandas +``` + ++++ {"lines_to_next_cell": 0} + +For any {py:func}`flytekit.task` in Flyte, there is always one required import, which is: + +```{code-cell} +:lines_to_next_cell: 1 + +from flytekit import HashMethod, task, workflow +from flytekit.core.node_creation import create_node +from typing_extensions import Annotated +``` + +Task caching is disabled by default to avoid unintended consequences of caching tasks with side effects. To enable caching and control its behavior, use the `cache` and `cache_version` parameters when constructing a task. +`cache` is a switch to enable or disable the cache, and `cache_version` pertains to the version of the cache. +`cache_version` field indicates that the task functionality has changed. +Bumping the `cache_version` is akin to invalidating the cache. +You can manually update this version and Flyte caches the next execution instead of relying on the old cache. + +```{code-cell} +@task(cache=True, cache_version="1.0") # noqa: F841 +def square(n: int) -> int: + """ + Parameters: + n (int): name of the parameter for the task will be derived from the name of the input variable. + The type will be automatically deduced to ``Types.Integer``. + + Return: + int: The label for the output will be automatically assigned, and the type will be deduced from the annotation. + + """ + return n * n +``` + +In the above example, calling `square(n=2)` twice (even if it's across different executions or different workflows) will only execute the multiplication operation once. +The next time, the output will be made available immediately since it is captured from the previous execution with the same inputs. + ++++ + +If in a subsequent code update, you update the signature of the task to return the original number along with the result, it'll automatically invalidate the cache (even though the cache version remains the same). + +```python +@task(cache=True, cache_version="1.0") +def square(n: int) -> Tuple[int, int]: + ... +``` + ++++ + +:::{note} +If the user changes the task interface in any way (such as adding, removing, or editing inputs/outputs), Flyte treats that as a task functionality change. In the subsequent execution, Flyte runs the task and stores the outputs as newly cached values. +::: + +## How does caching work? + +Caching is implemented differently depending on the mode the user is running, i.e. whether they are running locally or using remote Flyte. + +### How does remote caching work? + +The cache keys for remote task execution are composed of **Project**, **Domain**, **Cache Version**, **Task Signature**, and **Inputs** associated with the execution of the task, as per the following definitions: + +- **Project:** A task run under one project cannot use the cached task execution from another project which would cause inadvertent results between project teams that could result in data corruption. +- **Domain:** To separate test, staging, and production data, task executions are not shared across these environments. +- **Cache Version:** When task functionality changes, you can change the `cache_version` of the task. Flyte will know not to use older cached task executions and create a new cache entry on the subsequent execution. +- **Task Signature:** The cache is specific to the task signature associated with the execution. The signature constitutes the task name, input parameter names/types, and the output parameter name/type. +- **Task Input Values:** A well-formed Flyte task always produces deterministic outputs. This means, given a set of input values, every execution should have identical outputs. When task execution is cached, the input values are part of the cache key. + +The remote cache for a particular task is invalidated in two ways: + +1. Modifying the `cache_version`; +2. Updating the task signature. + +:::{note} +Task executions can be cached across different versions of the task because a change in SHA does not necessarily mean that it correlates to a change in the task functionality. +::: + +### How does local caching work? + +The flytekit package uses the [diskcache](https://github.com/grantjenks/python-diskcache) package, specifically [diskcache.Cache](http://www.grantjenks.com/docs/diskcache/tutorial.html#cache), to aid in the memoization of task executions. The results of local task executions are stored under `~/.flyte/local-cache/` and cache keys are composed of **Cache Version**, **Task Signature**, and **Task Input Values**. + +Similar to the remote case, a local cache entry for a task will be invalidated if either the `cache_version` or the task signature is modified. In addition, the local cache can also be emptied by running the following command: `pyflyte local-cache clear`, which essentially obliterates the contents of the `~/.flyte/local-cache/` directory. + +:::{note} +The format used by the store is opaque and not meant to be inspectable. +::: + +(cache-offloaded-objects)= + +## Caching of non-Flyte offloaded objects + +The default behavior displayed by Flyte's memoization feature might not match the user intuition. For example, this code makes use of pandas dataframes: + +```{code-cell} +@task +def foo(a: int, b: str) -> pandas.DataFrame: + df = pandas.DataFrame(...) + ... + return df + + +@task(cache=True, cache_version="1.0") +def bar(df: pandas.DataFrame) -> int: + ... + + +@workflow +def wf(a: int, b: str): + df = foo(a=a, b=b) + v = bar(df=df) # noqa: F841 +``` + +If run twice with the same inputs, one would expect that `bar` would trigger a cache hit, but it turns out that's not the case because of how dataframes are represented in Flyte. +However, with release 1.2.0, Flyte provides a new way to control memoization behavior of literals. This is done via a `typing.Annotated` call on the task signature. +For example, in order to cache the result of calls to `bar`, you can rewrite the code above like this: + +```{code-cell} +def hash_pandas_dataframe(df: pandas.DataFrame) -> str: + return str(pandas.util.hash_pandas_object(df)) + + +@task +def foo_1( # noqa: F811 + a: int, b: str # noqa: F821 +) -> Annotated[pandas.DataFrame, HashMethod(hash_pandas_dataframe)]: # noqa: F821 # noqa: F821 + df = pandas.DataFrame(...) # noqa: F821 + ... + return df + + +@task(cache=True, cache_version="1.0") # noqa: F811 +def bar_1(df: pandas.DataFrame) -> int: # noqa: F811 + ... # noqa: F811 + + +@workflow +def wf_1(a: int, b: str): # noqa: F811 + df = foo(a=a, b=b) # noqa: F811 + v = bar(df=df) # noqa: F841 +``` + +Note how the output of task `foo` is annotated with an object of type `HashMethod`. Essentially, it represents a function that produces a hash that is used as part of the cache key calculation in calling the task `bar`. + +### How does caching of offloaded objects work? + +Recall how task input values are taken into account to derive a cache key. +This is done by turning the literal representation into a string and using that string as part of the cache key. In the case of dataframes annotated with `HashMethod` we use the hash as the representation of the Literal. In other words, the literal hash is used in the cache key. + +This feature also works in local execution. + ++++ + +Here's a complete example of the feature: + +```{code-cell} +def hash_pandas_dataframe(df: pandas.DataFrame) -> str: + return str(pandas.util.hash_pandas_object(df)) + + +@task +def uncached_data_reading_task() -> Annotated[pandas.DataFrame, HashMethod(hash_pandas_dataframe)]: + return pandas.DataFrame({"column_1": [1, 2, 3]}) + + +@task(cache=True, cache_version="1.0") +def cached_data_processing_task(df: pandas.DataFrame) -> pandas.DataFrame: + time.sleep(1) + return df * 2 + + +@task +def compare_dataframes(df1: pandas.DataFrame, df2: pandas.DataFrame): + assert df1.equals(df2) + + +@workflow +def cached_dataframe_wf(): + raw_data = uncached_data_reading_task() + + # Execute `cached_data_processing_task` twice, but force those + # two executions to happen serially to demonstrate how the second run + # hits the cache. + t1_node = create_node(cached_data_processing_task, df=raw_data) + t2_node = create_node(cached_data_processing_task, df=raw_data) + t1_node >> t2_node + + # Confirm that the dataframes actually match + compare_dataframes(df1=t1_node.o0, df2=t2_node.o0) + + +if __name__ == "__main__": + df1 = cached_dataframe_wf() + print(f"Running cached_dataframe_wf once : {df1}") +``` diff --git a/docs/user_guide/development_lifecycle/creating_a_new_project.md b/docs/user_guide/development_lifecycle/creating_a_new_project.md new file mode 100644 index 00000000000..7741b810d27 --- /dev/null +++ b/docs/user_guide/development_lifecycle/creating_a_new_project.md @@ -0,0 +1,28 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Creating a new project + +Creates project to be used as a home for the flyte resources of tasks and workflows. +Refer to the [flytectl API reference](https://docs.flyte.org/projects/flytectl/en/stable/gen/flytectl_create_project.html) +for more details. + +```{eval-rst} +.. prompt:: bash + + flytectl create project --id "my-flyte-project-name" --labels "my-label=my-project-label" --description "my-flyte-project-name" --name "my-flyte-project-name" +``` diff --git a/docs/user_guide/development_lifecycle/debugging_executions.md b/docs/user_guide/development_lifecycle/debugging_executions.md new file mode 100644 index 00000000000..7c8f9562d3e --- /dev/null +++ b/docs/user_guide/development_lifecycle/debugging_executions.md @@ -0,0 +1,46 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Debugging executions + +The inspection of task and workflow execution would provide you log links to debug things further + +Using `--details` flag would shows you node executions view with log links. + +``` +└── n1 - FAILED - 2021-06-30 08:51:07.3111846 +0000 UTC - 2021-06-30 08:51:17.192852 +0000 UTC +│ ├── Attempt :0 +│ └── Task - FAILED - 2021-06-30 08:51:07.3111846 +0000 UTC - 2021-06-30 08:51:17.192852 +0000 UTC +│ └── Logs : +│ └── Name :Kubernetes Logs (User) +│ └── URI :http://localhost:30082/#/log/flytectldemo-development/f3a5a4034960f4aa1a09-n1-0/pod?namespace=flytectldemo-development +``` + +Additionally you can check the pods launched by flyte in \-\ namespace + +``` +kubectl get pods -n - +``` + +The launched pods will have a prefix of execution name along with suffix of nodeId + +``` +NAME READY STATUS RESTARTS AGE +f65009af77f284e50959-n0-0 0/1 ErrImagePull 0 18h +``` + +So here the investigation can move ahead by describing the pod and checking the issue with Image pull. diff --git a/docs/user_guide/development_lifecycle/decks.md b/docs/user_guide/development_lifecycle/decks.md new file mode 100644 index 00000000000..5aae4955b19 --- /dev/null +++ b/docs/user_guide/development_lifecycle/decks.md @@ -0,0 +1,316 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(decks)= + +# Decks + +```{eval-rst} +.. tags:: UI, Intermediate +``` + +The Decks feature enables you to obtain customizable and default visibility into your tasks. +Think of it as a visualization tool that you can utilize within your Flyte tasks. + +Decks are equipped with a variety of {ref}`renderers `, +such as FrameRenderer and MarkdownRenderer. These renderers produce HTML files. +As an example, FrameRenderer transforms a DataFrame into an HTML table, and MarkdownRenderer converts Markdown text into HTML. + +Each task has a minimum of three decks: input, output and default. +The input/output decks are used to render the input/output data of tasks, +while the default deck can be used to render line plots, scatter plots or Markdown text. +Additionally, you can create new decks to render your data using custom renderers. + +:::{note} +Flyte Decks is an opt-in feature; to enable it, set `enable_deck` to `True` in the task parameters. +::: + +To begin, import the dependencies. + +```{code-cell} +import flytekit +from flytekit import ImageSpec, task +from flytekitplugins.deck.renderer import MarkdownRenderer +from sklearn.decomposition import PCA +``` + ++++ {"lines_to_next_cell": 0} + +We create a new deck named `pca` and render Markdown content along with a +[PCA](https://en.wikipedia.org/wiki/Principal_component_analysis) plot. + +You can begin by initializing an {ref}`ImageSpec ` object to encompass all the necessary dependencies. +This approach automatically triggers a Docker build, alleviating the need for you to manually create a Docker image. + +```{code-cell} +custom_image = ImageSpec(name="flyte-decks-example", packages=["plotly"], registry="ghcr.io/flyteorg") + +if custom_image.is_container(): + import plotly + import plotly.express as px +``` + ++++ {"lines_to_next_cell": 0} + +:::{important} +Replace `ghcr.io/flyteorg` with a container registry you've access to publish to. +To upload the image to the local registry in the demo cluster, indicate the registry as `localhost:30000`. +::: + +Note the usage of `append` to append the Plotly deck to the Markdown deck. + +```{code-cell} +@task(enable_deck=True, container_image=custom_image) +def pca_plot(): + iris_df = px.data.iris() + X = iris_df[["sepal_length", "sepal_width", "petal_length", "petal_width"]] + pca = PCA(n_components=3) + components = pca.fit_transform(X) + total_var = pca.explained_variance_ratio_.sum() * 100 + fig = px.scatter_3d( + components, + x=0, + y=1, + z=2, + color=iris_df["species"], + title=f"Total Explained Variance: {total_var:.2f}%", + labels={"0": "PC 1", "1": "PC 2", "2": "PC 3"}, + ) + main_deck = flytekit.Deck("pca", MarkdownRenderer().to_html("### Principal Component Analysis")) + main_deck.append(plotly.io.to_html(fig)) +``` + ++++ {"lines_to_next_cell": 0} + +:::{Important} +To view the log output locally, the `FLYTE_SDK_LOGGING_LEVEL` environment variable should be set to 20. +::: + +The following is the expected output containing the path to the `deck.html` file: + +``` +{"asctime": "2023-07-11 13:16:04,558", "name": "flytekit", "levelname": "INFO", "message": "pca_plot task creates flyte deck html to file:///var/folders/6f/xcgm46ds59j7g__gfxmkgdf80000gn/T/flyte-0_8qfjdd/sandbox/local_flytekit/c085853af5a175edb17b11cd338cbd61/deck.html"} +``` + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_deck_plot_local.webp +:alt: Flyte deck plot +:class: with-shadow +::: + +Once you execute this task on the Flyte cluster, you can access the deck by clicking the _Flyte Deck_ button: + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_deck_button.png +:alt: Flyte deck button +:class: with-shadow +::: + +(deck_renderer)= + +## Deck renderer + +The Deck renderer is an integral component of the Deck plugin, which offers both default and personalized task visibility. +Within the Deck, an array of renderers is present, responsible for generating HTML files. + +These renderers showcase HTML in the user interface, facilitating the visualization and documentation of task-associated data. + +In the Flyte context, a collection of deck objects is stored. +When the task connected with a deck object is executed, these objects employ renderers to transform data into HTML files. + +### Available renderers + +#### Frame renderer + +Creates a profile report from a Pandas DataFrame. + +```{code-cell} +import pandas as pd +from flytekitplugins.deck.renderer import FrameProfilingRenderer + + +@task(enable_deck=True) +def frame_renderer() -> None: + df = pd.DataFrame(data={"col1": [1, 2], "col2": [3, 4]}) + flytekit.Deck("Frame Renderer", FrameProfilingRenderer().to_html(df=df)) +``` + ++++ {"lines_to_next_cell": 0} + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_decks_frame_renderer.png +:alt: Frame renderer +:class: with-shadow +::: + ++++ {"lines_to_next_cell": 0} + +#### Top-frame renderer + +Renders DataFrame as an HTML table. +This renderer doesn't necessitate plugin installation since it's accessible within the flytekit library. + +```{code-cell} +from typing import Annotated + +from flytekit.deck import TopFrameRenderer + + +@task(enable_deck=True) +def top_frame_renderer() -> Annotated[pd.DataFrame, TopFrameRenderer(1)]: + return pd.DataFrame(data={"col1": [1, 2], "col2": [3, 4]}) +``` + ++++ {"lines_to_next_cell": 0} + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_decks_top_frame_renderer.png +:alt: Top frame renderer +:class: with-shadow +::: + +#### Markdown renderer + +Converts a Markdown string into HTML, producing HTML as a Unicode string. + +```{code-cell} +@task(enable_deck=True) +def markdown_renderer() -> None: + flytekit.current_context().default_deck.append( + MarkdownRenderer().to_html("You can install flytekit using this command: ```import flytekit```") + ) +``` + ++++ {"lines_to_next_cell": 0} + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_decks_markdown_renderer.png +:alt: Markdown renderer +:class: with-shadow +::: + +#### Box renderer + +Groups rows of DataFrame together into a +box-and-whisker mark to visualize their distribution. + +Each box extends from the first quartile (Q1) to the third quartile (Q3). +The median (Q2) is indicated by a line within the box. +Typically, the whiskers extend to the edges of the box, +plus or minus 1.5 times the interquartile range (IQR: Q3-Q1). + +```{code-cell} +from flytekitplugins.deck.renderer import BoxRenderer + + +@task(enable_deck=True) +def box_renderer() -> None: + iris_df = px.data.iris() + flytekit.Deck("Box Plot", BoxRenderer("sepal_length").to_html(iris_df)) +``` + ++++ {"lines_to_next_cell": 0} + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_decks_box_renderer.png +:alt: Box renderer +:class: with-shadow +::: + +#### Image renderer + +Converts a {ref}`FlyteFile ` or `PIL.Image.Image` object into an HTML string, +where the image data is encoded as a base64 string. + +```{code-cell} +from flytekit import workflow +from flytekit.types.file import FlyteFile +from flytekitplugins.deck.renderer import ImageRenderer + + +@task(enable_deck=True) +def image_renderer(image: FlyteFile) -> None: + flytekit.Deck("Image Renderer", ImageRenderer().to_html(image_src=image)) + + +@workflow +def image_renderer_wf( + image: FlyteFile = "https://bit.ly/3KZ95q4", +) -> None: + image_renderer(image=image) +``` + ++++ {"lines_to_next_cell": 0} + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_decks_image_renderer.png +:alt: Image renderer +:class: with-shadow +::: + +#### Table renderer + +Converts a Pandas dataframe into an HTML table. + +```{code-cell} +from flytekitplugins.deck.renderer import TableRenderer + + +@task(enable_deck=True) +def table_renderer() -> None: + flytekit.Deck( + "Table Renderer", + TableRenderer().to_html(df=pd.DataFrame(data={"col1": [1, 2], "col2": [3, 4]}), table_width=50), + ) +``` + ++++ {"lines_to_next_cell": 0} + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_decks_table_renderer.png +:alt: Table renderer +:class: with-shadow +::: + +#### Source code renderer + +Converts source code to HTML and renders it as a Unicode string on the deck. + +```{code-cell} +:lines_to_next_cell: 2 + +import inspect + +from flytekitplugins.deck.renderer import SourceCodeRenderer + + +@task(enable_deck=True) +def source_code_renderer() -> None: + file_path = inspect.getsourcefile(frame_renderer.__wrapped__) + with open(file_path, "r") as f: + source_code = f.read() + flytekit.Deck( + "Source Code Renderer", + SourceCodeRenderer().to_html(source_code), + ) +``` + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/flyte_decks_source_code_renderer.png +:alt: Source code renderer +:class: with-shadow +::: + +### Contribute to renderers + +Don't hesitate to integrate a new renderer into +[renderer.py](https://github.com/flyteorg/flytekit/blob/master/plugins/flytekit-deck-standard/flytekitplugins/deck/renderer.py) +if your deck renderers can enhance data visibility. +Feel encouraged to open a pull request and play a part in enhancing the Flyte deck renderer ecosystem! diff --git a/docs/user_guide/development_lifecycle/index.md b/docs/user_guide/development_lifecycle/index.md new file mode 100644 index 00000000000..693740c661f --- /dev/null +++ b/docs/user_guide/development_lifecycle/index.md @@ -0,0 +1,22 @@ +# Development lifecycle + +In this section, you will discover Flyte's features that aid in local workflow development. +You will gain an understanding of concepts like caching, the Flyte remote API, Agents, Decks and more. + +```{toctree} +:maxdepth: -1 +:name: development_lifecycle_toc +:hidden: + +agents +private_images +caching +cache_serializing +decks +creating_a_new_project +running_tasks +running_workflows +running_launch_plans +inspecting_executions +debugging_executions +``` diff --git a/docs/user_guide/development_lifecycle/inspecting_executions.md b/docs/user_guide/development_lifecycle/inspecting_executions.md new file mode 100644 index 00000000000..1ce09ae1552 --- /dev/null +++ b/docs/user_guide/development_lifecycle/inspecting_executions.md @@ -0,0 +1,83 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Inspecting executions + +## Flytectl + +Flytectl supports inspecting execution by retrieving its details. For a deeper dive, refer to the +[API reference](https://docs.flyte.org/projects/flytectl/en/stable/gen/flytectl_get_execution.html) guide. + +Monitor the execution by providing the execution id from create command which can be task or workflow execution. + +``` +flytectl get execution -p flytesnacks -d development +``` + +For more details use `--details` flag which shows node executions along with task executions on them. + +``` +flytectl get execution -p flytesnacks -d development --details +``` + +If you prefer to see yaml/json view for the details then change the output format using the -o flag. + +``` +flytectl get execution -p flytesnacks -d development --details -o yaml +``` + +To see the results of the execution you can inspect the node closure outputUri in detailed yaml output. + +``` +"outputUri": "s3://my-s3-bucket/metadata/propeller/flytesnacks-development-/n0/data/0/outputs.pb" +``` + +## FlyteRemote + +With FlyteRemote, you can fetch the inputs and outputs of executions and inspect them. + +```python +from flytekit.remote import FlyteRemote + +# FlyteRemote object is the main entrypoint to API +remote = FlyteRemote( + config=Config.for_endpoint(endpoint="flyte.example.net"), + default_project="flytesnacks", + default_domain="development", +) + +execution = remote.fetch_execution( + name="fb22e306a0d91e1c6000", project="flytesnacks", domain="development" +) + +input_keys = execution.inputs.keys() +output_keys = execution.outputs.keys() + +# The inputs and outputs correspond to the top-level execution or the workflow itself. +# To fetch a specific output, say, a model file: +model_file = execution.outputs["model_file"] +with open(model_file) as f: + ... + +# You can use FlyteRemote.sync() to sync the entity object's state with the remote state during the execution run. +synced_execution = remote.sync(execution, sync_nodes=True) +node_keys = synced_execution.node_executions.keys() + +# node_executions will fetch all the underlying node executions recursively. +# To fetch output of a specific node execution: +node_execution_output = synced_execution.node_executions["n1"].outputs["model_file"] +``` diff --git a/docs/user_guide/development_lifecycle/private_images.md b/docs/user_guide/development_lifecycle/private_images.md new file mode 100644 index 00000000000..5ebd41ea730 --- /dev/null +++ b/docs/user_guide/development_lifecycle/private_images.md @@ -0,0 +1,72 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(private_images)= + +# Private images + +As we learned in the {ref}`Flyte Fundamentals ` guide, +Flyte uses OCI-compatible containers to package up your code and third-party +dependencies. For production use-cases your images may require proprietary code +and configuration that you want to keep private. + +You can use different private container registries to host your images, such as +[AWS ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html), +[Docker Hub](https://docs.docker.com/docker-hub/repos/#private-repositories), +[GitLab Container Registry](https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#access-an-image-from-a-private-container-registry), +and [GitHub Container Registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-to-the-container-registry). + +To pull private images, ensure that you have the command line tools and login +information associated with the registry. + +## Create a secret + +First [create a secret](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) +that contains all the credentials needed to log into the registry. + +## Configure `imagePullSecrets` + +Then, you'll need to specify a `imagePullSecrets` configuration to pull a +private image using one of two methods below. + +```{eval-rst} +.. tabs:: + + .. tab:: Service Account + + You can use the default or new service account for this option: + + 1. Add your ``imagePullSecrets`` configuration to the + `service account `__. + 2. Use this service account to log into the private registry and pull the image. + 3. When you create a task/workflow execution this service account should + be specified to access the private image. + + .. tab:: Custom Pod Template + + This option uses a `custom pod template `__ + to create a pod. This template is automatically added to every ``pod`` that + Flyte creates. + + 1. Add your ``imagePullSecrets`` configuration to this custom pod template. + 2. Update `FlytePropeller `__ about the pod created in the previous step. + 3. FlytePropeller adds ``imagePullSecrets``, along with other customization for the pod, + to the PodSpec, which should look similar to this + `manifest `__. + 4. The pods with their keys can log in and access the images in the private registry. + Once you set up the token to authenticate with the private registry, you can pull images from them. +``` diff --git a/docs/user_guide/development_lifecycle/running_launch_plans.md b/docs/user_guide/development_lifecycle/running_launch_plans.md new file mode 100644 index 00000000000..1fb8bb4c2c0 --- /dev/null +++ b/docs/user_guide/development_lifecycle/running_launch_plans.md @@ -0,0 +1,84 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(remote_launchplan)= + +# Running launch plans + +## Flytectl + +This is multi-steps process where we create an execution spec file, update the spec file and then create the execution. +More details can be found [here](https://docs.flyte.org/projects/flytectl/en/stable/gen/flytectl_create_execution.html). + +**Generate an execution spec file** + +``` +flytectl get launchplan -p flytesnacks -d development myapp.workflows.example.my_wf --execFile exec_spec.yaml +``` + +**Update the input spec file for arguments to the workflow** + +``` +.... +inputs: + name: "adam" +.... +``` + +**Create execution using the exec spec file** + +``` +flytectl create execution -p flytesnacks -d development --execFile exec_spec.yaml +``` + +**Monitor the execution by providing the execution id from create command** + +``` +flytectl get execution -p flytesnacks -d development +``` + +## FlyteRemote + +A launch plan can be launched via FlyteRemote programmatically. + +```python +from flytekit.remote import FlyteRemote +from flytekit.configuration import Config +from flytekit import LaunchPlan + +# FlyteRemote object is the main entrypoint to API +remote = FlyteRemote( + config=Config.for_endpoint(endpoint="flyte.example.net"), + default_project="flytesnacks", + default_domain="development", +) + +# Fetch launch plan +flyte_lp = remote.fetch_launch_plan( + name="workflows.example.wf", version="v1", project="flytesnacks", domain="development" +) + +# Execute +execution = remote.execute( + flyte_lp, inputs={"mean": 1}, execution_name="lp-execution", wait=True +) + +# Or use execution_name_prefix to avoid repeated execution names +execution = remote.execute( + flyte_lp, inputs={"mean": 1}, execution_name_prefix="flyte", wait=True +) +``` diff --git a/docs/user_guide/development_lifecycle/running_tasks.md b/docs/user_guide/development_lifecycle/running_tasks.md new file mode 100644 index 00000000000..882380109dc --- /dev/null +++ b/docs/user_guide/development_lifecycle/running_tasks.md @@ -0,0 +1,98 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(remote_task)= + +# Running tasks + +## Flytectl + +This is a multi-step process where we create an execution spec file, update the spec file, and then create the execution. +More details can be found in the [Flytectl API reference](https://docs.flyte.org/projects/flytectl/en/stable/gen/flytectl_create_execution.html). + +**Generate execution spec file** + +``` +flytectl get tasks -d development -p flytesnacks workflows.example.generate_normal_df --latest --execFile exec_spec.yaml +``` + +**Update the input spec file for arguments to the workflow** + +``` +iamRoleARN: 'arn:aws:iam::12345678:role/defaultrole' +inputs: + n: 200 + mean: 0.0 + sigma: 1.0 +kubeServiceAcct: "" +targetDomain: "" +targetProject: "" +task: workflows.example.generate_normal_df +version: "v1" +``` + +**Create execution using the exec spec file** + +``` +flytectl create execution -p flytesnacks -d development --execFile exec_spec.yaml +``` + +**Monitor the execution by providing the execution id from create command** + +``` +flytectl get execution -p flytesnacks -d development +``` + +## FlyteRemote + +A task can be launched via FlyteRemote programmatically. + +```python +from flytekit.remote import FlyteRemote +from flytekit.configuration import Config, SerializationSettings + +# FlyteRemote object is the main entrypoint to API +remote = FlyteRemote( + config=Config.for_endpoint(endpoint="flyte.example.net"), + default_project="flytesnacks", + default_domain="development", +) + +# Get Task +flyte_task = remote.fetch_task(name="workflows.example.generate_normal_df", version="v1") + +flyte_task = remote.register_task( + entity=flyte_task, + serialization_settings=SerializationSettings(image_config=None), + version="v2", +) + +# Run Task +execution = remote.execute( + flyte_task, inputs={"n": 200, "mean": 0.0, "sigma": 1.0}, execution_name="task-execution", wait=True +) + +# Or use execution_name_prefix to avoid repeated execution names +execution = remote.execute( + flyte_task, inputs={"n": 200, "mean": 0.0, "sigma": 1.0}, execution_name_prefix="flyte", wait=True +) + +# Inspecting execution +# The 'inputs' and 'outputs' correspond to the task execution. +input_keys = execution.inputs.keys() +output_keys = execution.outputs.keys() +``` diff --git a/docs/user_guide/development_lifecycle/running_workflows.md b/docs/user_guide/development_lifecycle/running_workflows.md new file mode 100644 index 00000000000..2e04714adcc --- /dev/null +++ b/docs/user_guide/development_lifecycle/running_workflows.md @@ -0,0 +1,59 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Running workflows + +Workflows on their own are not runnable directly. However, a launchplan is always bound to a workflow and you can use +launchplans to **launch** a workflow. For cases in which you want the launchplan to have the same arguments as a workflow, +if you are using one of the SDK's to author your workflows - like flytekit, flytekit-java etc, then they should +automatically create a `default launchplan` for the workflow. + +A `default launchplan` has the same name as the workflow and all argument defaults are similar. See +{ref}`Launch Plans` to run a workflow via the default launchplan. + +{ref}`Tasks also can be executed ` using the launch command. +One difference between running a task and a workflow via launchplans is that launchplans cannot be associated with a +task. This is to avoid triggers and scheduling. + +## FlyteRemote + +Workflows can be executed with FlyteRemote because under the hood it fetches and triggers a default launch plan. + +```python +from flytekit.remote import FlyteRemote +from flytekit.configuration import Config + +# FlyteRemote object is the main entrypoint to API +remote = FlyteRemote( + config=Config.for_endpoint(endpoint="flyte.example.net"), + default_project="flytesnacks", + default_domain="development", +) + +# Fetch workflow +flyte_workflow = remote.fetch_workflow(name="workflows.example.wf", version="v1") + +# Execute +execution = remote.execute( + flyte_workflow, inputs={"mean": 1}, execution_name="workflow-execution", wait=True +) + +# Or use execution_name_prefix to avoid repeated execution names +execution = remote.execute( + flyte_workflow, inputs={"mean": 1}, execution_name_prefix="flyte", wait=True +) +``` diff --git a/docs/user_guide/environment_setup.md b/docs/user_guide/environment_setup.md new file mode 100644 index 00000000000..1fc41e749be --- /dev/null +++ b/docs/user_guide/environment_setup.md @@ -0,0 +1,245 @@ +(env_setup)= + +# Environment setup + +## Prerequisites + +- Make sure you have [docker](https://docs.docker.com/get-docker/) and [git](https://git-scm.com/) installed. +- Install {doc}`flytectl `, the commandline interface for Flyte. + +## Repo setup + +As we intend to execute the code locally, duplicate this code block into `hello_world.py`. + +```python +from flytekit import task, workflow + +@task +def say_hello() -> str: + return "Hello, World!" + +@workflow +def hello_world_wf() -> str: + res = say_hello() + return res + +if __name__ == "__main__": + print(f"Running hello_world_wf() {hello_world_wf()}") +``` + +To install `flytekit`, run the following command: + +``` +pip install flytekit +``` + +:::{tip} +**Recommended**: Create a new python virtual environment to make sure it doesn't interfere with your +development environment. You can do this by running the following commands in your terminal: + +```{prompt} bash +python -m venv ~/venvs/flyte-examples +source ~/venvs/flyte-examples/bin/activate +``` + +::: + +To make sure everything is working in your virtual environment, run `hello_world.py` locally: + +```{prompt} bash +python hello_world.py +``` + +Expected output: + +```{prompt} +Running hello_world_wf() Hello, World! +``` + +## Create a local demo Flyte cluster + +```{important} +Make sure the Docker daemon is running before starting the demo cluster. +``` + +Use `flytectl` to start a demo Flyte cluster: + +```{prompt} bash +flytectl demo start +``` + +After this completes, be sure to export the Flyte config as it will be essential later. Run the command in the output that looks like this: + +```{prompt} bash +export FLYTECTL_CONFIG= ~//.flyte/config-sandbox.yaml +``` + +## Running workflows + +Now you can run the example workflow locally using the default Docker image bundled with `flytekit`: + +```{prompt} bash +pyflyte run hello_world.py hello_world_wf +``` + +:::{note} +The initial arguments of `pyflyte run` take the form of +`path/to/script.py `, where `` +refers to the function decorated with `@task` or `@workflow` that you wish to run. +::: + +To run the workflow on the demo Flyte cluster, all you need to do is supply the `--remote` flag: + +``` +pyflyte run --remote hello_world.py hello_world_wf +``` + +You can also run the code directly from a remote source: + +``` +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/hello_world.py \ + hello_world_wf +``` + +You should see an output that looks like: + +```{prompt} +Go to https:///console/projects/flytesnacks/domains/development/executions/ to see execution in the console. +``` + +You can visit this URL to inspect the execution as it runs: + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/common/first_run_console.gif +:alt: A quick visual tour for launching your first Workflow. +::: + +Finally, run a workflow that takes some inputs, for example the `workflow.py` example: + +```{prompt} bash +pyflyte run --remote \ + https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/workflow.py \ + simple_wf --x '[-3,0,3]' --y '[7,4,-2]' +``` + +:::{note} +We're passing in the workflow inputs as additional options to `pyflyte run`. In the above example, the +inputs are `--x '[-3,0,3]'` and `--y '[7,4,-2]'`. For snake-case argument names like `arg_name`, you can provide the +option as `--arg-name`. +::: + +## Visualizing workflows + +Workflows can be visualized as DAGs on the UI. +However, you can visualize workflows on the browser and in the terminal by _just_ using your terminal. + +To view workflow on the browser: + +```{prompt} bash $ +flytectl get workflows \ + --project flytesnacks \ + --domain development \ + --version \ + -o doturl \ + basics.workflow.simple_wf +``` + +To view workflow as a `strict digraph` on the command line: + +```{prompt} bash $ +flytectl get workflows \ + --project flytesnacks \ + --domain development \ + --version \ + -o dot \ + basics.workflow.simple_wf +``` + +Replace `` with the version obtained from the console UI, +which might resemble something like `BLrGKJaYsW2ME1PaoirK1g==`. + +:::{tip} +Running most of the examples in the **User guide** only requires the default Docker image that ships with Flyte. +Many examples in the {ref}`tutorials` and {ref}`integrations` section depend on additional libraries such as +`sklearn`, `pytorch` or `tensorflow`, which will not work with the default docker image used by `pyflyte run`. + +These examples will explicitly show you which images to use for running these examples by passing in the Docker +image you want to use with the `--image` option in `pyflyte run`. +::: + +🎉 Congrats! Now you can run all the examples in the {ref}`userguide` 🎉! + +## Configuring the demo cluster to use additional resources + +Depending on how resource intensive your workflows are, you may encounter errors such as +OOM (Out of Memory) errors or find pods with the status OOMKilled. +It is crucial to understand that the demo cluster is not set up to immediately accommodate +all workflow requirements, and some resource requests may be ignored based on the cluster's limits. + +:::{tip} +Keep in mind that, for production deployments, you should give careful consideration to +these configurations rather than simply setting large numbers. +::: + +Here's how you can go about modifying the configurations: + +1. Add cluster resource attributes to `cra.yaml`: + +``` +attributes: + projectQuotaCpu: "1000" + projectQuotaMemory: 5Ti +project: flytesnacks +domain: development +``` + +2. Add task resource attributes to `tra.yaml`: + +``` +defaults: + cpu: "2" + memory: 1Gi +limits: + cpu: "1000" + memory: 5Ti +project: flytesnacks +domain: development +``` + +3. Apply the two configuration files using the following commands: + +``` +$ flytectl update task-resource-attribute --attrFile tra.yaml +$ flytectl update cluster-resource-attribute --attrFile cra.yaml +``` + +4. Confirm that the configuration is applied using the following commands: + +``` +$ flytectl get task-resource-attribute -p flytesnacks -d development +{"project":"flytesnacks","domain":"development","defaults":{"cpu":"2","memory":"1Gi"},"limits":{"cpu":"1000","memory":"5Ti"}} + +$ flytectl get cluster-resource-attribute -p flytesnacks -d development +{"project":"flytesnacks","domain":"development","attributes":{"projectQuotaCpu":"1000","projectQuotaMemory":"5Ti"}} +``` + +And that's it! You have successfully modified your Flyte demo cluster to accommodate resource intensive workloads. + +For more information, refer to the +[Configuring Custom K8s Resources](https://docs.flyte.org/en/latest/deployment/configuration/general.html) guide. + +## Local registry + +If you find yourself using tasks dependent on `ImageSpec` containers built with `envd` on the demo cluster, +before you submit your workflow, you will need to inform `envd` how to push the images it builds to the cluster. +This can be done via: + +``` +envd context create --name flyte-sandbox --builder tcp --builder-address localhost:30003 --use +``` + +You will also need to update your `ImageSpec` instances to set `registry="localhost:30000"`. + +## What's next? + +Try out the examples in the {doc}`Basics ` section. diff --git a/docs/user_guide/extending/backend_plugins.md b/docs/user_guide/extending/backend_plugins.md new file mode 100644 index 00000000000..876ef8019e9 --- /dev/null +++ b/docs/user_guide/extending/backend_plugins.md @@ -0,0 +1,91 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +%% [markdown] +(extend-plugin-flyte-backend)= + +# Backend plugins + +```{eval-rst} +.. tags:: Extensibility, Contribute, Intermediate +``` + +This guide will take you through the why and how of writing a backend plugin for +Flyte. + +To recap, here are a few examples of why you would want to implement a backend plugin: + +1. We want to add a new capability to the Flyte Platform, for example we might want to: + - Talk to a new service like AWS Sagemaker, Snowflake, Redshift, Athena, BigQuery, etc. + - Orchestrate a set of containers in a new way like Spark, Flink, Distributed + training on Kubernetes (usually using a Kubernetes operator). + - Use a new container orchestration engine like AWS Batch/ECS, Hashicorp' Nomad + - Use a completely new runtime like AWS Lambda, KNative, etc. +3. You want to retain the capability to update the plugin implementation and roll + out new changes and fixes without affecting the users code or requiring them to update + versions of their plugins. +4. You want the same plugin to be accessible across multiple language SDK's. + +```{note} +Talking to a new service can be done using flytekit extensions and usually is the better way to get started. But, once matured, most of these extensions are better to be migrated to the backend. For the rest of the cases, it is possible to extend flytekit to achieve these scenarios, but this is less desirable, because of the associated overhead of first launching a container that launches these jobs downstream. +``` + +## Basics + +In this section we'll go through the components of a backend plugin using the {ref}`K8s Spark plugin` as a reference. A Flyte backend extension consists of 3 parts: interface +specification, `flytekit` plugin implementation, and `flytepropeller` plugin implementation. + +### Interface specification + +Usually Flyte extensions need information that is not covered by a {std:ref}`Flyte TaskTemplate `. The TaskTemplate consists of a +the interface, task_type identifier, some metadata and other fields. + +```{note} +An important field to note here is {std:ref}`custom `. The custom field is essentially an unstructured JSON. This makes it possible to extend a task-template beyond the default supported targets {std:ref}`container `. + +The motivation of the `custom`` field is to marshal a JSON structure that specifies information beyond what a regular TaskTemplate can capture. The actual structure of the JSON is known only to the implemented backend-plugin and the SDK components. The core Flyte platform, does not understand of look into the specifics of this structure. +``` + +It is highly recommended to use an interface definition language like Protobuf, OpenAPISpec etc to declare specify the structure of the JSON. From here, on we refer to this as the **Plugin Specification**. + +```{note} +For Spark we decided to use Protobuf to specify the plugin as can be seen [here](https://github.com/flyteorg/flyteidl/blob/master/protos/flyteidl/plugins/spark.proto). Note it isn't necessary to have the Plugin structure specified in `flyteidl`, but we do it for simplicity, ease of maintenance alongside the core platform, and convenience leveraging existing tooling to generate code for protobuf. +``` + +### Flytekit plugin implementation + +Now that you have a specification, we have to implement a method to generate this new TaskTemplate, with the special custom field. Also, this is where the UX design comes into play. You want to write the best possible interface in the SDK that users are delighted to use. The end goal is to create the TaskTemplate with the Custom field populated with the actual JSON structure. + +We will currently refer to the Python `flytekit` SDK as an example for extending and +implementing the SDK. + +The SDK task should be implemented as an extension of {py:class}`flytekit.core.base_task.PythonTask`, or more commonly {py:class}`flytekit.PythonFunctionTask`. +In the case of Spark, we extend the {py:class}`flytekit.PythonFunctionTask`, as shown [here](https://github.com/flyteorg/flytekit/blob/master/plugins/flytekit-spark/flytekitplugins/spark/task.py#L77-L123). + +The `SparkTask` is implemented as a regular flytekit plugin, with one exception: the `custom` field is now actually the `SparkJob` protocol buffer. When serializing a task, `flytekit` base classes will automatically invoke the [`get_custom` method](https://github.com/flyteorg/flytekit/blob/c02075d472b5587d199630bcfc7f9937673c6a0e/flytekit/core/base_task.py#L255). + +### FlytePropeller backend plugin + +The backend plugin is where the actual logic of the execution is implemented. The backend plugin uses the **Flyte PluginMachinery** interface to implement a plugin which can be one of the following supported types: + +1. [Kubernetes operator Plugin](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.26/go/tasks/pluginmachinery/k8s#Plugin): The demo in the video below shows two examples of K8s backend plugins: flytekit `Athena` & `Spark`, and Flyte K8s `Pod` & `Spark`. + + ```{youtube} oK2RGQuP94k + ``` + +2. **A Web API plugin:** [Async](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.26/go/tasks/pluginmachinery/webapi#AsyncPlugin) or [Sync](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.26/go/tasks/pluginmachinery/webapi#SyncPlugin). +3. [Core Plugin](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/core#Plugin): if none of the above fits diff --git a/docs/user_guide/extending/container_interface.md b/docs/user_guide/extending/container_interface.md new file mode 100644 index 00000000000..c0be559d76e --- /dev/null +++ b/docs/user_guide/extending/container_interface.md @@ -0,0 +1,81 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(core-extend-flyte-container-interface)= + +# Container interface + +```{eval-rst} +.. tags:: Extensibility, Contribute, Intermediate +``` + +Flyte typically interacts with containers in the course of its task execution (since most tasks are container +tasks). This is what that process looks like: + +1. At compilation time for a container task, the arguments to that container (and the container image itself) are set. + + 1. This is done by flytekit for instance for your run of the mill `@task`. This step is **crucial** - the task needs to specify an image available in the registry configured in the flyte installation. + +2. At runtime, Flyte will execute your task via a plugin. The default container plugin will do the following: + + 1. Set a series of environment variables. + 2. Before running the container, search/replace values in the container arguments. The command templating section below details how this happens. + + :::{note} + This templating process *should* be done by **all** plugins, even plugins that don't run a container but need + some information from the execution side. For example, a query task that submits a query to an engine that + writes the output to the raw output location. Or a query that uses the unique retry key as a temp table name, etc. + ::: + +## Command templating + +The templating of container arguments at run-time is one of the more advanced constructs of Flyte, but one that +authors of new task types should be aware of. For example, when looking at the hello world task in the UI, +if you click the Task tab, you'd see JSON that contains something like the following: + +```json +"container": { + "command": [], + "args": [ + "pyflyte-execute", + "--inputs", + "{{.input}}", + "--output-prefix", + "{{.outputPrefix}}", + "--raw-output-data-prefix", + "{{.rawOutputDataPrefix}}", + "--resolver", + "flytekit.core.python_auto_container.default_task_resolver", + "--", + "task-module", + "core.basic.hello_world", + "task-name", + "say_hello" + ], +``` + +The following table explains what each of the `{{}}` items mean, along with some others. + +| Template | Example | Description | +| ------------------------ | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| {{.Input}} | `s3://my-bucket/inputs.pb` | Pb file containing a LiteralMap containing the inputs | +| {{.InputPrefix}} | `s3://my-bucket` | Just the bucket where the inputs.pb file can be found | +| {{.Inputs.\}} | `"hello world"` | For primitive inputs, the task can request that Flyte unpack the actual literal value, saving the task from having to download the file. Note that for Blob, Schema and StructuredDataset types, the uri where the data is stored will be filled in as the value. | +| {{.OutputPrefix}} | `s3://my-bucket/abc/data` | Location where the task should write a LiteralMap of output values in a file called `outputs.pb` | +| {{.RawOutputDataPrefix}} | `s3://your-data/` | Bucket where off-loaded data types (schemas, files, structureddatasets, etc.) are written. | +| {{.PerRetryUniqueKey}} | (random characters) | This is a random string that allows the task to differentiate between different executions of a task. Values will be unique per retry as well. | +| {{.TaskTemplatePath}} | `s3://my-bucket/task.pb` | For tasks that need the full task definition, use this template to access the full TaskTemplate IDL message. To ensure performance, propeller will not upload this file if this template was not requested by the task. | diff --git a/docs/user_guide/extending/custom_types.md b/docs/user_guide/extending/custom_types.md new file mode 100644 index 00000000000..af82d1a6ec0 --- /dev/null +++ b/docs/user_guide/extending/custom_types.md @@ -0,0 +1,195 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(advanced_custom_types)= + +# Custom types + +```{eval-rst} +.. tags:: Extensibility, Contribute, Intermediate +``` + +Flyte is a strongly-typed framework for authoring tasks and workflows. But there are situations when the existing +types do not directly work. This is true with any programming language! + +Similar to a programming language enabling higher-level concepts to describe user-specific objects such as classes in Python/Java/C++, struct in C/Golang, etc., +Flytekit allows modeling user classes. The idea is to make an interface that is more productive for the +use case, while writing a transformer that converts the user-defined type into one of the generic constructs in Flyte's type system. + +This example will try to model an example user-defined dataset and show how it can be seamlessly integrated with Flytekit's type engine. + +The example is demonstrated in the video below: + +```{eval-rst} +.. youtube:: 1xExpRzz8Tw + + +``` + ++++ {"lines_to_next_cell": 0} + +First, we import the dependencies. + +```{code-cell} +import os +import tempfile +import typing +from typing import Type + +from flytekit import Blob, BlobMetadata, BlobType, FlyteContext, Literal, LiteralType, Scalar, task, workflow +from flytekit.extend import TypeEngine, TypeTransformer +``` + ++++ {"lines_to_next_cell": 0} + +:::{note} +`FlyteContext` is used to access a random local directory. +::: + +Defined type here represents a list of files on the disk. We will refer to it as `MyDataset`. + +```{code-cell} +class MyDataset(object): + """ + ``MyDataset`` is a collection of files. In Flyte, this maps to a multi-part blob or directory. + """ + + def __init__(self, base_dir: str = None): + if base_dir is None: + self._tmp_dir = tempfile.TemporaryDirectory() + self._base_dir = self._tmp_dir.name + self._files = [] + else: + self._base_dir = base_dir + files = os.listdir(base_dir) + self._files = [os.path.join(base_dir, f) for f in files] + + @property + def base_dir(self) -> str: + return self._base_dir + + @property + def files(self) -> typing.List[str]: + return self._files + + def new_file(self, name: str) -> str: + new_file = os.path.join(self._base_dir, name) + self._files.append(new_file) + return new_file +``` + ++++ {"lines_to_next_cell": 0} + +`MyDataset` represents a set of files locally. However, when a workflow consists of multiple steps, we want the data to +flow between different steps. To achieve this, it is necessary to explain how the data will be transformed to +Flyte's remote references. To do this, we create a new instance of +{py:class}`~flytekit:flytekit.extend.TypeTransformer`, for the type `MyDataset` as follows: + +:::{note} +The `TypeTransformer` is a Generic abstract base class. The `Generic` type argument refers to the actual object +that we want to work with. In this case, it is the `MyDataset` object. +::: + +```{code-cell} +class MyDatasetTransformer(TypeTransformer[MyDataset]): + _TYPE_INFO = BlobType(format="binary", dimensionality=BlobType.BlobDimensionality.MULTIPART) + + def __init__(self): + super(MyDatasetTransformer, self).__init__(name="mydataset-transform", t=MyDataset) + + def get_literal_type(self, t: Type[MyDataset]) -> LiteralType: + """ + This is useful to tell the Flytekit type system that ``MyDataset`` actually refers to what corresponding type. + In this example, we say its of format binary (do not try to introspect) and there is more than one file in it. + """ + return LiteralType(blob=self._TYPE_INFO) + + def to_literal( + self, + ctx: FlyteContext, + python_val: MyDataset, + python_type: Type[MyDataset], + expected: LiteralType, + ) -> Literal: + """ + This method is used to convert from the given python type object ``MyDataset`` to the Literal representation. + """ + # Step 1: Upload all the data into a remote place recommended by Flyte + remote_dir = ctx.file_access.get_random_remote_directory() + ctx.file_access.upload_directory(python_val.base_dir, remote_dir) + # Step 2: Return a pointer to this remote_dir in the form of a Literal + return Literal(scalar=Scalar(blob=Blob(uri=remote_dir, metadata=BlobMetadata(type=self._TYPE_INFO)))) + + def to_python_value(self, ctx: FlyteContext, lv: Literal, expected_python_type: Type[MyDataset]) -> MyDataset: + """ + In this method, we want to be able to re-hydrate the custom object from Flyte Literal value. + """ + # Step 1: Download remote data locally + local_dir = ctx.file_access.get_random_local_directory() + ctx.file_access.download_directory(lv.scalar.blob.uri, local_dir) + # Step 2: Create the ``MyDataset`` object + return MyDataset(base_dir=local_dir) +``` + ++++ {"lines_to_next_cell": 0} + +Before we can use MyDataset in our tasks, we need to let Flytekit know that `MyDataset` should be considered as a valid type. +This is done using {py:class}`~flytekit:flytekit.extend.TypeEngine`'s `register` method. + +```{code-cell} +TypeEngine.register(MyDatasetTransformer()) +``` + ++++ {"lines_to_next_cell": 0} + +The new type should be ready to use! Let us write an example generator and consumer for this new datatype. + +```{code-cell} +@task +def generate() -> MyDataset: + d = MyDataset() + for i in range(3): + fp = d.new_file(f"x{i}") + with open(fp, "w") as f: + f.write(f"Contents of file{i}") + + return d + + +@task +def consume(d: MyDataset) -> str: + s = "" + for f in d.files: + with open(f) as fp: + s += fp.read() + s += "\n" + return s + + +@workflow +def wf() -> str: + return consume(d=generate()) +``` + ++++ {"lines_to_next_cell": 0} + +This workflow can be executed and tested locally. Flytekit will exercise the entire path even if you run it locally. + +```{code-cell} +if __name__ == "__main__": + print(wf()) +``` diff --git a/docs/user_guide/extending/index.md b/docs/user_guide/extending/index.md new file mode 100644 index 00000000000..19a553ddfcc --- /dev/null +++ b/docs/user_guide/extending/index.md @@ -0,0 +1,218 @@ +(plugins_extend)= + +# Extending Flyte + +The core of Flyte is a container execution engine, where you can write one or more tasks and compose them together to +form a data dependency DAG, called a `workflow`. If your work involves writing simple Python or Java tasks that can +either perform operations on their own or call out to {ref}`Supported external services `, +then there's _no need to extend Flyte_. + +## Define a Custom Type + +Flyte, just like a programming language, has a core type-system, which can be extended by adding user-defined data types. +For example, Flyte supports adding support for a dataframe type from a new library, a custom user data structure, or a +grouping of images in a specific encoding. + +Flytekit natively supports structured data like {py:func}`~dataclasses.dataclass` using JSON as the +representation format (see {ref}`Using Custom Python Objects `). + +Flytekit allows users to extend Flyte's type system and implement types in Python that are not representable as JSON documents. The user has to implement a {py:class}`~flytekit.extend.TypeTransformer` +class to enable the translation of type from user type to Flyte-understood type. + +As an example, instead of using {py:class}`pandas.DataFrame` directly, you may want to use +[Pandera](https://pandera.readthedocs.io/en/stable/) to perform validation of an input or output dataframe +(see {ref}`Basic Schema Example `). + +To extend the type system, refer to {ref}`advanced_custom_types`. + +## Add a New Task Plugin + +Often you want to interact with services like: + +- Databases (e.g., Postgres, MySQL, etc.) +- DataWarehouses (e.g., Snowflake, BigQuery, Redshift etc.) +- Computation (e.g., AWS EMR, Databricks etc.) + +You might want this interaction to be available as a template for the open-source community or in your organization. This +can be done by creating a task plugin, which makes it possible to reuse the task's underlying functionality within Flyte +workflows. + +If you want users to write code simply using the {py:func}`~flytekit.task` decorator, but want to provide the +capability of running the function as a spark job or a sagemaker training job, then you can extend Flyte's task system. + +```{code-block} python +@task(task_config=MyContainerExecutionTask( + plugin_specific_config_a=..., + plugin_specific_config_b=..., + ... +)) +def foo(...) -> ...: + ... +``` + +Alternatively, you can provide an interface like this: + +```{code-block} python +query_task = SnowflakeTask( + query="Select * from x where x.time < {{.inputs.time}}", + inputs=kwtypes(time=datetime), + output_schema_type=pandas.DataFrame, +) + +@workflow +def my_wf(t: datetime) -> ...: + df = query_task(time=t) + return process(df=df) +``` + +There are two options when writing a new task plugin: you can write a task plugin as an extension in Flytekit or you can go deeper and write a plugin in the Flyte backend. + +## Flytekit-Only Task Plugin + +Flytekit is designed to be extremely extensible. You can add new task-types that are useful only for your use-case. +Flyte does come with the capability of extending the backend, but that is only required if you want the capability to be +extended to all users of Flyte, or there is a cost/visibility benefit of doing so. + +Writing your own Flytekit plugin is simple and is typically where you want to start when enabling custom task functionality. + +```{list-table} +:widths: 50 50 +:header-rows: 1 + +* - Pros + - Cons +* - Simple to write — implement in Python. Flyte will treat it like a container execution and blindly pass + control to the plugin. + - Limited ways of providing additional visibility in progress, external links, etc. +* - Simple to publish: `flytekitplugins` can be published as independent libraries and they follow a simple API. + - Has to be implemented in every language as these are SDK-side plugins only. +* - Simple to perform testing: test locally in flytekit. + - In case of side-effects, it could lead to resource leaks. For example, if the plugin runs a BigQuery job, + it is possible that the plugin may crash after running the job and Flyte cannot guarantee that the BigQuery job + will be successfully terminated. +* - + - Potentially expensive: in cases where the plugin runs a remote job, running a new pod for every task execution + causes severe strain on Kubernetes and the task itself uses almost no CPUs. Also because of its stateful nature, + using spot-instances is not trivial. +* - + - A bug fix to the runtime needs a new library version of the plugin. +* - + - Not trivial to implement resource controls, like throttling, resource pooling, etc. +``` + +### User Container vs. Pre-built Container Task Plugin + +A Flytekit-only task plugin can be a {ref}`user container ` or {ref}`pre-built container ` task plugin. + +```{list-table} +:widths: 10 50 50 +:header-rows: 1 + +* - + - User Container + - Pre-built Container +* - Serialization + - At serialization time, a Docker container image is required. The assumption is that this Docker image has the task code. + - The Docker container image is hardcoded at serialization time into the task definition by the author of that task plugin. +* - Serialization + - The serialized task contains instructions to the container on how to reconstitute the task. + - Serialized task should contain all the information needed to run that task instance (but not necessarily to reconstitute it). +* - Run-time + - When Flyte runs the task, the container is launched, and the user-given instructions recreate a Python object representing the task. + - When Flyte runs the task, the container is launched. The container should have an executor built into it that knows how to execute the task. +* - Run-time + - The task object that gets serialized at compile-time is recreated using the user's code at run time. + - The task object that gets serialized at compile-time does not exist at run time. +* - Run-time + - At platform-run-time, the user-decorated function is executed. + - At platform-run-time, there is no user function, and the executor is responsible for producing outputs, given the inputs to the task. +``` + +### Backend Plugin + +{ref}`Writing a Backend plugin ` makes it possible for users to write extensions for FlytePropeller - Flyte's scheduling engine. This enables complete control of the visualization and availability +of the plugin. + +```{list-table} +:widths: 50 50 +:header-rows: 1 + +* - Pros + - Cons +* - Service oriented way of deploying new plugins - strong contracts. Maintainers can deploy new versions of the backend plugin, fix bugs, without needing the users to upgrade libraries, etc. + - Need to be implemented in Golang. +* - Drastically cheaper and more efficient to execute. FlytePropeller is written in Golang and uses an event loop model. Each process of FlytePropeller can execute thousands of tasks concurrently. + - Needs a FlytePropeller build (*currently*). +* - Flyte guarantees resource cleanup. + - Need to implement contract in a spec language like protobuf, OpenAPI, etc. +* - Flyteconsole plugins (capability coming soon!) can be added to customize visualization and progress tracking of the execution. + - Development cycle can be much slower than flytekit-only plugins. +* - Resource controls and backpressure management is available. + - +* - Implement once, use in any SDK or language! + - +``` + +#### Flyte Agent Service + +_New in Flyte 1.7.0_ + +{ref}`Flyte Agent Service ` allows you to write backend +plugins in Python. + +### Summary + +```{mermaid} + +flowchart LR + U{Use Case} + F([Python Flytekit Plugin]) + B([Golang
Backend Plugin]) + + subgraph WFTP[Writing Flytekit Task Plugins] + UCP([User Container Plugin]) + PCP([Pre-built Container Plugin]) + end + + subgraph WBE[Writing Backend Extensions] + K8S([K8s Plugin]) + WP([WebAPI Plugin]) + CP([Complex Plugin]) + end + + subgraph WCFT[Writing Custom Flyte Types] + T([Flytekit
Type Transformer]) + end + + U -- Light-weight
Extensions --> F + U -- Performant
Multi-language
Extensions --> B + U -- Specialized
Domain-specific Types --> T + F -- Require
user-defined
container --> UCP + F -- Provide
prebuilt
container --> PCP + B --> K8S + B --> WP + B --> CP + + style WCFT fill:#eee,stroke:#aaa + style WFTP fill:#eee,stroke:#aaa + style WBE fill:#eee,stroke:#aaa + style U fill:#fff2b2,stroke:#333 + style B fill:#EAD1DC,stroke:#333 + style K8S fill:#EAD1DC,stroke:#333 + style WP fill:#EAD1DC,stroke:#333 + style CP fill:#EAD1DC,stroke:#333 +``` + +Use the flow-chart above to point you to one of these examples: + +```{toctree} +:maxdepth: -1 +:name: extending_toc +:hidden: + +custom_types +prebuilt_container_task_plugins +user_container_task_plugins +backend_plugins +container_interface +``` diff --git a/docs/user_guide/extending/prebuilt_container_task_plugins.md b/docs/user_guide/extending/prebuilt_container_task_plugins.md new file mode 100644 index 00000000000..ed51f1b7a68 --- /dev/null +++ b/docs/user_guide/extending/prebuilt_container_task_plugins.md @@ -0,0 +1,105 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(prebuilt_container)= + +# Prebuilt container task plugins + +```{eval-rst} +.. tags:: Extensibility, Contribute, Intermediate +``` + +A prebuilt container task plugin runs a prebuilt container. The following are the advantages of using a prebuilt container in comparison to a user-defined container: + +- Shifts the burden of writing Dockerfile from the user who uses the task in workflows to the author of the task type. +- Allows the author to optimize the image that the task runs on. +- Makes it possible to (largely) extend the Flyte task execution behavior without using the backend Golang plugin. + The caveat is that these tasks can't access the K8s cluster, so you'll still need a backend plugin if you want a custom task type that generates CRD. + +## Usage + +Take a look at the [example PR](https://github.com/flyteorg/flytekit/pull/470), where we switched the built-in SQLite3 task from the old (user-container) to the new style of writing tasks. + +There aren't many changes from the user's standpoint: +\- Install whichever Python library has the task type definition (in the case of SQLite3, it's bundled in Flytekit, but this isn't always the case (for example, [SQLAlchemy](https://github.com/flyteorg/flytekit/tree/master/plugins/flytekit-sqlalchemy))). +\- Import and instantiate the task as you would for any other type of non-function-based task. + +## How to write a task + +Writing a pre-built container task consists of three steps: + +1. Defining a Task class +2. Defining an Executor class +3. Creating a Dockerfile that is executed when any user runs your task. It'll most likely include Flytekit, Python, and your task extension code. + +To follow along, use the [PR (mentioned above)](https://github.com/flyteorg/flytekit/pull/470) where we migrate the SQLite3 task. + +## Python library + +### Defining a task + +New tasks of this type must be created as a subclass of the `PythonCustomizedContainerTask` class. + +Specifically, you need to customize the following three arguments which would be sent to the parent class constructor: + +- `container_image`: This is the container image that will run on a Flyte platform when the user invokes the job. +- `executor_type`: This should be the Python class that inherits the `ShimTaskExecutor`. +- `task_type`: All types have a task type. Flyte engine uses this string to identify which plugin to use when running a task. + +The container plugin will be used for everything that doesn't have an explicit match (which is correct in this case). +So you may call it whatever you want, just not something that's already been claimed (like "spark"). + +Referring to the SQLite3 example, + +``` +container_image="ghcr.io/flyteorg/flytekit:py38-v0.19.0b7", +executor_type=SQLite3TaskExecutor, +task_type="sqlite", +``` + +Note that the container is special in this case since we utilize the Flytekit image. + +Furthermore, you need to override the `get_custom` function to include all the information the executor will need to run. + +Keep in mind that the task's execution behavior is entirely defined by the task's serialized form (that is, the serialized `TaskTemplate`). +This function stores and inserts the data into the template's [custom field](https://github.com/flyteorg/flyteidl/blob/7302971c064b6061a148f2bee79f673bc8cf30ee/protos/flyteidl/core/tasks.proto#L114). +However, keep the task template's overall size to a minimum. + +### Executor + +You must subclass and override the `execute_from_model` function for the `ShimTaskExecutor` abstract class. +This function will be invoked in both local workflow execution and platform-run-time execution, and will include all of the business logic of your task. + +The signature of this execute function differs from the `execute` functions of most other tasks since the `TaskTemplate` determines all the business logic, including how the task is run. + +### Image + +This is the custom image that you specified in the subclass `PythonCustomizedContainerTask`. Out of the box, when Flyte runs the container, these tasks will run a command that looks like this + +``` +pyflyte-execute --inputs s3://inputs.pb --output-prefix s3://outputs --raw-output-data-prefix s3://user-data --resolver flytekit.core.python_customized_container_task.default_task_template_resolver -- {{.taskTemplatePath}} path.to.your.executor.subclass +``` + +This means that your [Docker image](https://github.com/flyteorg/flytekit/blob/master/Dockerfile) will need Python and Flytekit installed. +The container's Python interpreter should be able to find your custom executor class at the import path `path.to.your.executor.subclass`. + +______________________________________________________________________ + +The key takeaways of a pre-built container task plugin are: + +- The task object serialized at compile time does not exist at run time. +- There is no user function at platform run time, and the executor is responsible for producing outputs based on the task's inputs. diff --git a/docs/user_guide/extending/user_container_task_plugins.md b/docs/user_guide/extending/user_container_task_plugins.md new file mode 100644 index 00000000000..68cc1a859de --- /dev/null +++ b/docs/user_guide/extending/user_container_task_plugins.md @@ -0,0 +1,164 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +(user_container)= + +# User container task plugins + +```{eval-rst} +.. tags:: Extensibility, Contribute, Intermediate +``` + +A user container task plugin runs a user-defined container that has the user code. + +This tutorial will walk you through writing your own sensor-style plugin that allows users to wait for a file to land +in the object store. Remember that if you follow the flyte/flytekit constructs, you will automatically make your plugin portable +across all cloud platforms that Flyte supports. + +## Sensor plugin + +A sensor plugin waits for some event to happen before marking the task as success. You need not worry about the +timeout as that will be handled by the flyte engine itself when running in production. + +### Plugin API + +```python +sensor = WaitForObjectStoreFile(metadata=metadata(timeout="1H", retries=10)) + +@workflow +def wait_and_run(path: str) -> int: + # To demonstrate how to create outputs, we will also + # return the output from the sensor. The output will be the + # same as the path + path = sensor(path=path) + return do_next(path=path) +``` + +```{code-cell} +import typing +from datetime import timedelta +from time import sleep + +from flytekit import TaskMetadata, task, workflow +from flytekit.extend import Interface, PythonTask, context_manager +``` + ++++ {"lines_to_next_cell": 0} + +### Plugin structure + +As illustrated above, to achieve this structure we need to create a class named `WaitForObjectStoreFile`, which +derives from {py:class}`flytekit.PythonFunctionTask` as follows. + +```{code-cell} +class WaitForObjectStoreFile(PythonTask): + """ + Add documentation here for your plugin. + This plugin creates an object store file sensor that waits and exits only when the file exists. + """ + + _VAR_NAME: str = "path" + + def __init__( + self, + name: str, + poll_interval: timedelta = timedelta(seconds=10), + **kwargs, + ): + super(WaitForObjectStoreFile, self).__init__( + task_type="object-store-sensor", + name=name, + task_config=None, + interface=Interface(inputs={self._VAR_NAME: str}, outputs={self._VAR_NAME: str}), + **kwargs, + ) + self._poll_interval = poll_interval + + def execute(self, **kwargs) -> typing.Any: + # No need to check for existence, as that is guaranteed. + path = kwargs[self._VAR_NAME] + ctx = context_manager.FlyteContext.current_context() + user_context = ctx.user_space_params + while True: + user_context.logging.info(f"Sensing file in path {path}...") + if ctx.file_access.exists(path): + user_context.logging.info(f"file in path {path} exists!") + return path + user_context.logging.warning(f"file in path {path} does not exists!") + sleep(self._poll_interval.seconds) +``` + +#### Config objects + +Flytekit routes to the right plugin based on the type of `task_config` class if using the `@task` decorator. +Config is very useful for cases when you want to customize the behavior of the plugin or pass the config information +to the backend plugin; however, in this case there's no real configuration. The config object can be any class that your +plugin understands. + +:::{note} +Observe that the base class is Generic; it is parameterized with the desired config class. +::: + +:::{note} +To create a task decorator-based plugin, `task_config` is required. +In this example, we are creating a named class plugin, and hence, this construct does not need a plugin. +::: + +Refer to the [spark plugin](https://github.com/flyteorg/flytekit/tree/master/plugins/flytekit-spark) for an example of a config object. + ++++ + +### Actual usage + +```{code-cell} +sensor = WaitForObjectStoreFile( + name="my-objectstore-sensor", + metadata=TaskMetadata(retries=10, timeout=timedelta(minutes=20)), + poll_interval=timedelta(seconds=1), +) + + +@task +def print_file(path: str) -> str: + print(path) + return path + + +@workflow +def my_workflow(path: str) -> str: + return print_file(path=sensor(path=path)) +``` + ++++ {"lines_to_next_cell": 0} + +And of course, you can run the workflow locally using your own new shiny plugin! + +```{code-cell} +if __name__ == "__main__": + f = "/tmp/some-file" + with open(f, "w") as w: + w.write("Hello World!") + + print(my_workflow(path=f)) +``` + +The key takeaways of a user container task plugin are: + +- The task object that gets serialized at compile-time is recreated using the user's code at run time. +- At platform-run-time, the user-decorated function is executed. diff --git a/docs/user_guide/index.md b/docs/user_guide/index.md new file mode 100644 index 00000000000..9c4009c9fe8 --- /dev/null +++ b/docs/user_guide/index.md @@ -0,0 +1,72 @@ +--- +:next-page: environment_setup +:next-page-title: Environment Setup +:prev-page: getting_started/analytics +:prev-page-title: Analytics +--- + +(userguide)= + +# User guide + +If this is your first time using Flyte, check out the {doc}`Getting Started ` guide. + +This _User guide_, the {ref}`Tutorials ` and the {ref}`Integrations ` examples cover all of +the key features of Flyte for data analytics, data science and machine learning practitioners, organized by topic. Each +section below introduces a core feature of Flyte and how you can use it to address specific use cases. Code for all +of the examples can be found in the [flytesnacks repo](https://github.com/flyteorg/flytesnacks). + +It comes with a specific environment to make running, documenting +and contributing samples easy. If this is your first time running these examples, follow the +{doc}`environment setup guide ` to get started. + +```{tip} +To learn about how to spin up and manage a Flyte cluster in the cloud, see the +{doc}`Deployment Guides `. +``` + +```{note} +Want to contribute or update an example? Check out the {doc}`Contribution Guide <../flytesnacks/contribute>`. +``` + +## Table of contents + +```{list-table} +:header-rows: 0 +:widths: 20 30 + +* - {doc}`🌳 Environment Setup ` + - Set up a development environment to run the examples in the user guide. +* - {doc}`🔤 Basics ` + - Learn about tasks, workflows, launch plans, caching and managing files and directories. +* - {doc}`⌨️ Data Types and IO ` + - Improve pipeline robustness with Flyte's portable and extensible type system. +* - {doc}`🔮 Advanced Composition ` + - Implement conditionals, nested and dynamic workflows, map tasks and even recursion! +* - {doc}`🧩 Customizing Dependencies ` + - Provide custom dependencies to run your Flyte entities. +* - {doc}`🏡 Development Lifecycle ` + - Develop and test locally on the demo cluster. +* - {doc}`⚗️ Testing ` + - Test tasks and workflows with Flyte's testing utilities. +* - {doc}`🚢 Productionizing ` + - Ship and configure your machine learning pipelines on a production Flyte installation. +* - {doc}`🏗 Extending ` + - Define custom plugins that aren't currently supported in the Flyte ecosystem. +``` + +```{toctree} +:maxdepth: -1 +:name: user_guide_toc +:hidden: + +environment_setup +basics/index +data_types_and_io/index +advanced_composition/index +customizing_dependencies/index +development_lifecycle/index +testing/index +productionizing/index +extending/index +``` \ No newline at end of file diff --git a/docs/user_guide/productionizing/configuring_access_to_gpus.md b/docs/user_guide/productionizing/configuring_access_to_gpus.md new file mode 100644 index 00000000000..f2575b5adba --- /dev/null +++ b/docs/user_guide/productionizing/configuring_access_to_gpus.md @@ -0,0 +1,53 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(configure-gpus)= + +# Configuring access to GPUs + +```{eval-rst} +.. tags:: Deployment, Infrastructure, GPU, Intermediate +``` + +Along with the simpler resources like CPU/Memory, you may want to configure and access GPU resources. Flyte +allows you to configure the GPU access poilcy for your cluster. GPUs are expensive and it would not be ideal to +treat machines with GPUs and machines with CPUs equally. You may want to reserve machines with GPUs for tasks +that explicitly request GPUs. To achieve this, Flyte uses the Kubernetes concept of [taints and tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/). + +Kubernetes can automatically apply tolerations for extended resources like GPUs using the [ExtendedResourceToleration plugin](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#extendedresourcetoleration), enabled by default in some cloud environments. Make sure the GPU nodes are tainted with a key matching the resource name, i.e., `key: nvidia.com/gpu`. + +You can also configure Flyte backend to apply specific tolerations. This configuration is controlled under generic k8s plugin configuration as can be found [here](https://github.com/flyteorg/flyteplugins/blob/5a00b19d88b93f9636410a41f81a73356a711482/go/tasks/pluginmachinery/flytek8s/config/config.go#L120). + +The idea of this configuration is that whenever a task that can execute on Kubernetes requests for GPUs, it automatically +adds the matching toleration for that resource (in this case, `gpu`) to the generated PodSpec. +As it follows here, you can configure it to access specific resources using the tolerations for all resources supported by +Kubernetes. + +Here's an example configuration: + +```yaml +plugins: + k8s: + resource-tolerations: + - nvidia.com/gpu: + - key: "key1" + operator: "Equal" + value: "value1" + effect: "NoSchedule" +``` + +Getting this configuration into your deployment will depend on how Flyte is deployed on your cluster. If you use the default Opta/Helm route, you'll need to amend your Helm chart values ([example](https://github.com/flyteorg/flyte/blob/cc127265aec490ad9537d29bd7baff828043c6f5/charts/flyte-core/values.yaml#L629)) so that they end up [here](https://github.com/flyteorg/flyte/blob/3d265f166fcdd8e20b07ff82b494c0a7f6b7b108/deployment/eks/flyte_helm_generated.yaml#L521). diff --git a/docs/user_guide/productionizing/configuring_logging_links_in_the_ui.md b/docs/user_guide/productionizing/configuring_logging_links_in_the_ui.md new file mode 100644 index 00000000000..57502a8c773 --- /dev/null +++ b/docs/user_guide/productionizing/configuring_logging_links_in_the_ui.md @@ -0,0 +1,138 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(configure-logging)= + +# Configuring logging links in the UI + +```{eval-rst} +.. tags:: Deployment, Intermediate, UI +``` + +To debug your workflows in production, you want to access logs from your tasks as they run. +These logs are different from the core Flyte platform logs, are specific to execution, and may vary from plugin to plugin; +for example, Spark may have driver and executor logs. + +Every organization potentially uses different log aggregators, making it hard to create a one-size-fits-all solution. +Some examples of the log aggregators include cloud-hosted solutions like AWS CloudWatch, GCP Stackdriver, Splunk, Datadog, etc. + +Flyte provides a simplified interface to configure your log provider. Flyte-sandbox +ships with the Kubernetes dashboard to visualize the logs. This may not be safe for production, hence we recommend users +explore other log aggregators. + +## How to configure? + +To configure your log provider, the provider needs to support `URL` links that are shareable and can be templatized. +The templating engine has access to [these](https://github.com/flyteorg/flyteplugins/blob/b0684d97a1cf240f1a44f310f4a79cc21844caa9/go/tasks/pluginmachinery/tasklog/plugin.go#L7-L16) parameters. + +The parameters can be used to generate a unique URL to the logs using a templated URI that pertain to a specific task. The templated URI has access to the following parameters: + +```{eval-rst} +.. list-table:: Parameters to generate a templated URI + :widths: 25 50 + :header-rows: 1 + + * - Parameter + - Description + * - ``{{ .podName }}`` + - Gets the pod name as it shows in k8s dashboard + * - ``{{ .podUID }}`` + - The pod UID generated by the k8s at runtime + * - ``{{ .namespace }}`` + - K8s namespace where the pod runs + * - ``{{ .containerName }}`` + - The container name that generated the log + * - ``{{ .containerId }}`` + - The container id docker/crio generated at run time + * - ``{{ .logName }}`` + - A deployment specific name where to expect the logs to be + * - ``{{ .hostname }}`` + - The hostname where the pod is running and logs reside + * - ``{{ .podRFC3339StartTime }}`` + - The pod creation time (in RFC3339 format, e.g. "2021-01-01T02:07:14Z", also conforming to ISO 8601) + * - ``{{ .podRFC3339FinishTime }}`` + - Don't have a good mechanism for this yet, but approximating with ``time.Now`` for now + * - ``{{ .podUnixStartTime }}`` + - The pod creation time (in unix seconds, not millis) + * - ``{{ .podUnixFinishTime }}`` + - Don't have a good mechanism for this yet, but approximating with ``time.Now`` for now +``` + +The parameterization engine uses Golangs native templating format and hence uses `{{ }}`. An example configuration can be seen as follows: + +```yaml +task_logs: + plugins: + logs: + templates: + - displayName: + templateUris: + - "https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logEventViewer:group=/flyte-production/kubernetes;stream=var.log.containers.{{.podName}}_{{.namespace}}_{{.containerName}}-{{.containerId}}.log" + - "https://some-other-source/home?region=us-east-1#logEventViewer:group=/flyte-production/kubernetes;stream=var.log.containers.{{.podName}}_{{.namespace}}_{{.containerName}}-{{.containerId}}.log" + messageFormat: 0 # this parameter is optional, but use 0 for "unknown", 1 for "csv", or 2 for "json" +``` + +:::{tip} +Since helm chart uses the same templating syntax for args (like `{{ }}`), compiling the chart results in helm replacing Flyte log link templates as well. To avoid this, you can use escaped templating for Flyte logs in the helm chart. +This ensures that Flyte log link templates remain in place during helm chart compilation. +For example: + +If your configuration looks like this: + +`https://someexample.com/app/podName={{ "{{" }} .podName {{ "}}" }}&containerName={{ .containerName }}` + +Helm chart will generate: + +`https://someexample.com/app/podName={{.podName}}&containerName={{.containerName}}` + +Flytepropeller pod would be created as: + +`https://someexample.com/app/podName=pname&containerName=cname` +::: + +This code snippet will output two logs per task that use the log plugin. +However, not all task types use the log plugin; for example, the SageMaker plugin uses the log output provided by Sagemaker, and the Snowflake plugin will use a link to the snowflake console. + +## Datadog integration + +To send your Flyte workflow logs to Datadog, you can follow these steps: + +1. Enable collection of logs from containers and collection of logs using files. The precise configuration steps will vary depending on your specific setup. + +For instance, if you're using Helm, use the following config: + +```yaml +logs: + enabled: true + containerCollectAll: true + containerCollectUsingFiles: true +``` + +If you're using environment variables, use the following config: + +```yaml +DD_LOGS_ENABLED: "false" +DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL: "true" +DD_LOGS_CONFIG_K8S_CONTAINER_USE_FILE: "true" +DD_CONTAINER_EXCLUDE_LOGS: "name:datadog-agent" # This is to avoid tracking logs produced by the datadog agent itself +``` + +:::{warning} +The boolean values have to be represented as strings. +::: + +2. The Datadog [guide](https://docs.datadoghq.com/containers/kubernetes/log/?tab=daemonset) includes a section on mounting volumes. It is essential (and a prerequisite for proper functioning) to map the volumes "logpodpath" and "logcontainerpath" as illustrated in the linked example. While the "pointerdir" volume is optional, it is recommended that you map it to prevent the loss of container logs during restarts or network issues (as stated in the guide). diff --git a/docs/user_guide/productionizing/customizing_task_resources.md b/docs/user_guide/productionizing/customizing_task_resources.md new file mode 100644 index 00000000000..39fee64d558 --- /dev/null +++ b/docs/user_guide/productionizing/customizing_task_resources.md @@ -0,0 +1,181 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Customizing task resources + +```{eval-rst} +.. tags:: Deployment, Infrastructure, Basic +``` + +One of the reasons to use a hosted Flyte environment is the potential of leveraging CPU, memory and storage resources, far greater than what's available locally. +Flytekit makes it possible to specify these requirements declaratively and close to where the task itself is declared. + ++++ + +In this example, the memory required by the function increases as the dataset size increases. +Large datasets may not be able to run locally, so we would want to provide hints to the Flyte backend to request for more memory. +This is done by decorating the task with the hints as shown in the following code sample. + +Tasks can have `requests` and `limits` which mirror the native [equivalents in Kubernetes](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits). +A task can possibly be allocated more resources than it requests, but never more than its limit. +Requests are treated as hints to schedule tasks on nodes with available resources, whereas limits +are hard constraints. + +For either a request or limit, refer to the {py:class}`flytekit:flytekit.Resources` documentation. + +The following attributes can be specified for a `Resource`. + +1. `cpu` +2. `mem` +3. `gpu` + +To ensure that regular tasks that don't require GPUs are not scheduled on GPU nodes, a separate node group for GPU nodes can be configured with [taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/). + +To ensure that tasks that require GPUs get the needed tolerations on their pods, set up FlytePropeller using the following [configuration](https://github.com/flyteorg/flytepropeller/blob/v0.10.5/config.yaml#L51,L56). Ensure that this toleration config matches the taint config you have configured to protect your GPU providing nodes from dealing with regular non-GPU workloads (pods). + +The actual values follow the [Kubernetes convention](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes). +Let's look at an example to understand how to customize resources. + ++++ {"lines_to_next_cell": 0} + +Import the dependencies. + +```{code-cell} +import typing + +from flytekit import Resources, task, workflow +``` + ++++ {"lines_to_next_cell": 0} + +Define a task and configure the resources to be allocated to it. + +```{code-cell} +@task(requests=Resources(cpu="1", mem="100Mi"), limits=Resources(cpu="2", mem="150Mi")) +def count_unique_numbers(x: typing.List[int]) -> int: + s = set() + for i in x: + s.add(i) + return len(s) +``` + ++++ {"lines_to_next_cell": 0} + +Define a task that computes the square of a number. + +```{code-cell} +@task +def square(x: int) -> int: + return x * x +``` + ++++ {"lines_to_next_cell": 0} + +You can use the tasks decorated with memory and storage hints like regular tasks in a workflow. + +```{code-cell} +@workflow +def my_workflow(x: typing.List[int]) -> int: + return square(x=count_unique_numbers(x=x)) +``` + ++++ {"lines_to_next_cell": 0} + +You can execute the workflow locally. + +```{code-cell} +if __name__ == "__main__": + print(count_unique_numbers(x=[1, 1, 2])) + print(my_workflow(x=[1, 1, 2])) +``` + +:::{note} +To alter the limits of the default platform configuration, change the [admin config](https://github.com/flyteorg/flyte/blob/b16ffd76934d690068db1265ac9907a278fba2ee/deployment/eks/flyte_helm_generated.yaml#L203-L213) and [namespace level quota](https://github.com/flyteorg/flyte/blob/b16ffd76934d690068db1265ac9907a278fba2ee/deployment/eks/flyte_helm_generated.yaml#L214-L240) on the cluster. +::: + ++++ + +(resource_with_overrides)= + +## Using `with_overrides` + +You can use the `with_overrides` method to override the resources allocated to the tasks dynamically. +Let's understand how the resources can be initialized with an example. + ++++ {"lines_to_next_cell": 0} + +Import the dependencies. + +```{code-cell} +import typing # noqa: E402 + +from flytekit import Resources, task, workflow # noqa: E402 +``` + ++++ {"lines_to_next_cell": 0} + +Define a task and configure the resources to be allocated to it. +You can use tasks decorated with memory and storage hints like regular tasks in a workflow. + +```{code-cell} +@task(requests=Resources(cpu="1", mem="200Mi"), limits=Resources(cpu="2", mem="350Mi")) +def count_unique_numbers_1(x: typing.List[int]) -> int: + s = set() + for i in x: + s.add(i) + return len(s) +``` + ++++ {"lines_to_next_cell": 0} + +Define a task that computes the square of a number. + +```{code-cell} +@task +def square_1(x: int) -> int: + return x * x +``` + ++++ {"lines_to_next_cell": 0} + +The `with_overrides` method overrides the old resource allocations. + +```{code-cell} +@workflow +def my_pipeline(x: typing.List[int]) -> int: + return square_1(x=count_unique_numbers_1(x=x)).with_overrides(limits=Resources(cpu="6", mem="500Mi")) +``` + ++++ {"lines_to_next_cell": 0} + +You can execute the workflow locally. + +```{code-cell} +if __name__ == "__main__": + print(count_unique_numbers_1(x=[1, 1, 2])) + print(my_pipeline(x=[1, 1, 2])) +``` + +You can see the memory allocation below. The memory limit is `500Mi` rather than `350Mi`, and the +CPU limit is 4, whereas it should have been 6 as specified using `with_overrides`. +This is because the default platform CPU quota for every pod is 4. + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/core/resource_allocation.png +:alt: Resource allocated using "with_overrides" method + +Resource allocated using "with_overrides" method +::: diff --git a/docs/user_guide/productionizing/index.md b/docs/user_guide/productionizing/index.md new file mode 100644 index 00000000000..a7748b1256f --- /dev/null +++ b/docs/user_guide/productionizing/index.md @@ -0,0 +1,24 @@ +(deployment_workflow)= + +# Productionize + +In this section, you will learn how to take Flyte pipelines into production. +You will explore concepts such as customizing resources, notifications, scheduling, +GPU configuration, secrets, spot instances and more. + +```{toctree} +:maxdepth: -1 +:name: productionizing_toc +:hidden: + +customizing_task_resources +reference_tasks +reference_launch_plans +notifications +schedules +configuring_logging_links_in_the_ui +configuring_access_to_gpus +spot_instances +secrets +workflow_labels_and_annotations +``` diff --git a/docs/user_guide/productionizing/notifications.md b/docs/user_guide/productionizing/notifications.md new file mode 100644 index 00000000000..133a402c433 --- /dev/null +++ b/docs/user_guide/productionizing/notifications.md @@ -0,0 +1,225 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Notifications + +```{eval-rst} +.. tags:: Intermediate + +``` + ++++ + +When a workflow is completed, users can be notified by: + +- Email +- [Pagerduty](https://support.pagerduty.com/docs/email-integration-guide#integrating-with-a-pagerduty-service) +- [Slack](https://slack.com/help/articles/206819278-Send-emails-to-Slack) + +The content of these notifications is configurable at the platform level. + +## Code example + +When a workflow reaches a specified [terminal workflow execution phase](https://github.com/flyteorg/flytekit/blob/v0.16.0b7/flytekit/core/notification.py#L10,L15), +the {py:class}`flytekit:flytekit.Email`, {py:class}`flytekit:flytekit.PagerDuty`, or {py:class}`flytekit:flytekit.Slack` +objects can be used in the construction of a {py:class}`flytekit:flytekit.LaunchPlan`. + +```{code-cell} +from datetime import timedelta +``` + ++++ {"lines_to_next_cell": 0} + +Consider the following example workflow: + +```{code-cell} +from flytekit import Email, FixedRate, LaunchPlan, PagerDuty, Slack, WorkflowExecutionPhase, task, workflow + + +@task +def double_int_and_print(a: int) -> str: + return str(a * 2) + + +@workflow +def int_doubler_wf(a: int) -> str: + doubled = double_int_and_print(a=a) + return doubled +``` + ++++ {"lines_to_next_cell": 0} + +Here are three scenarios that can help deepen your understanding of how notifications work: + +1. Launch Plan triggers email notifications when the workflow execution reaches the `SUCCEEDED` phase. + +```{code-cell} +int_doubler_wf_lp = LaunchPlan.get_or_create( + name="email_notifications_lp", + workflow=int_doubler_wf, + default_inputs={"a": 4}, + notifications=[ + Email( + phases=[WorkflowExecutionPhase.SUCCEEDED], + recipients_email=["admin@example.com"], + ) + ], +) +``` + ++++ {"lines_to_next_cell": 0} + +2. Notifications shine when used for scheduled workflows to alert for failures. + +```{code-cell} +:lines_to_next_cell: 2 + +int_doubler_wf_scheduled_lp = LaunchPlan.get_or_create( + name="int_doubler_wf_scheduled", + workflow=int_doubler_wf, + default_inputs={"a": 4}, + notifications=[ + PagerDuty( + phases=[WorkflowExecutionPhase.FAILED, WorkflowExecutionPhase.TIMED_OUT], + recipients_email=["abc@pagerduty.com"], + ) + ], + schedule=FixedRate(duration=timedelta(days=1)), +) +``` + +3. Notifications can be combined with different permutations of terminal phases and recipient targets. + +```{code-cell} +wacky_int_doubler_lp = LaunchPlan.get_or_create( + name="wacky_int_doubler", + workflow=int_doubler_wf, + default_inputs={"a": 4}, + notifications=[ + Email( + phases=[WorkflowExecutionPhase.FAILED], + recipients_email=["me@example.com", "you@example.com"], + ), + Email( + phases=[WorkflowExecutionPhase.SUCCEEDED], + recipients_email=["myboss@example.com"], + ), + Slack( + phases=[ + WorkflowExecutionPhase.SUCCEEDED, + WorkflowExecutionPhase.ABORTED, + WorkflowExecutionPhase.TIMED_OUT, + ], + recipients_email=["myteam@slack.com"], + ), + ], +) +``` + +4. You can use pyflyte register to register the launch plan and launch it in the web console to get the notifications. + +``` +pyflyte register lp_notifications.py +``` + +Choose the launch plan with notifications config +:::{figure} https://i.ibb.co/cLT5tRX/lp.png +:alt: Notifications Launch Plan +:class: with-shadow +::: + ++++ + +### Future work + +Work is ongoing to support a generic event egress system that can be used to publish events for tasks, workflows, and +workflow nodes. When this is complete, generic event subscribers can asynchronously process these events for a rich +and fully customizable experience. + +## Platform configuration changes + +The `notifications` top-level portion of the Flyteadmin config specifies how to handle notifications. + +As in schedules, the handling of notifications is composed of two parts— one part handles enqueuing notifications asynchronously. The other part handles processing pending notifications and sends out emails and alerts. + +This is only supported for Flyte instances running on AWS. + +### Config +#### For Sandbox +To publish notifications, you'll need to register a sendgrid api key from [sendgrid](https://sendgrid.com/), it's free for 100 emails per day. +You have to add notifications config in your sandbox config file. + +```yaml +# config-sandbox.yaml +notifications: + type: sandbox # noqa: F821 + emailer: + emailServerConfig: + serviceName: sendgrid + apiKeyEnvVar: SENDGRID_API_KEY + subject: "Notice: Execution \"{{ workflow.name }}\" has {{ phase }} in \"{{ domain }}\"." + sender: "flyte-notifications@company.com" + body: > + Execution \"{{ workflow.name }} [{{ name }}]\" has {{ phase }} in \"{{ domain }}\". View details at + + http://flyte.company.com/console/projects/{{ project }}/domains/{{ domain }}/executions/{{ name }}. {{ error }} +``` + +Note that you should set and export the `SENDGRID_API_KEY` environment variable in your shell. + +#### For AWS +To publish notifications, you'll need to set up an [SNS topic](https://aws.amazon.com/sns/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc). + +To process notifications, you'll need to set up an [AWS SQS](https://aws.amazon.com/sqs/) queue to consume notification events. This queue must be configured as a subscription to your SNS topic you created above. + +To publish notifications, you'll need a [verified SES email address](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html) which will be used to send notification emails and alerts using email APIs. + +The role you use to run Flyteadmin must have permissions to read and write to your SNS topic and SQS queue. + +Let's look into the following config section and explain what each value represents: + +```bash +notifications: + type: "aws" # noqa: F821 + region: "us-east-1" + publisher: + topicName: "arn:aws:sns:us-east-1:{{ YOUR ACCOUNT ID }}:{{ YOUR TOPIC }}" + processor: + queueName: "{{ YOUR QUEUE NAME }}" + accountId: "{{ YOUR ACCOUNT ID }}" + emailer: + subject: "Notice: Execution \"{{ workflow.name }}\" has {{ phase }} in \"{{ domain }}\"." + sender: "flyte-notifications@company.com" + body: > + Execution \"{{ workflow.name }} [{{ name }}]\" has {{ phase }} in \"{{ domain }}\". View details at + + http://flyte.company.com/console/projects/{{ project }}/domains/{{ domain }}/executions/{{ name }}. {{ error }} +``` + +- **type**: AWS is the only cloud back-end supported for executing scheduled workflows; hence `"aws"` is the only valid value. By default, the no-op executor is used. +- **region**: Specifies the region AWS clients should use when creating SNS and SQS clients. +- **publisher**: Handles pushing notification events to your SNS topic. + : - **topicName**: This is the arn of your SNS topic. +- **processor**: Handles recording notification events and enqueueing them to be processed asynchronously. + : - **queueName**: Name of the SQS queue which will capture pending notification events. + - **accountId**: AWS [account id](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId). +- **emailer**: Encloses config details for sending and formatting emails used as notifications. + : - **subject**: Configurable subject line used in notification emails. + - **sender**: Your verified SES email sender. + - **body**: Configurable email body used in notifications. + +The complete set of parameters that can be used for email templating are checked in [here](https://github.com/flyteorg/flyteadmin/blob/a84223dab00dfa52d8ba1ed2d057e77b6c6ab6a7/pkg/async/notifications/email.go#L18,L30). diff --git a/docs/user_guide/productionizing/reference_launch_plans.md b/docs/user_guide/productionizing/reference_launch_plans.md new file mode 100644 index 00000000000..8ea476ef3ec --- /dev/null +++ b/docs/user_guide/productionizing/reference_launch_plans.md @@ -0,0 +1,88 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Reference launch plans + +```{eval-rst} +.. tags:: Intermediate +``` + +A {py:func}`flytekit.reference_launch_plan` references previously defined, serialized, and registered Flyte launch plans. +You can reference launch plans from other projects and create workflows that use launch plans declared by others. + +The following example illustrates how to use reference launch plans. + +:::{note} +Reference launch plans cannot be run locally. You must mock them out. +::: + +```{code-cell} +:lines_to_next_cell: 2 + +from typing import List + +from flytekit import reference_launch_plan, workflow +from flytekit.types.file import FlyteFile + + +@reference_launch_plan( + project="flytesnacks", + domain="development", + name="data_types_and_io.file.normalize_csv_file", + version="{{ registration.version }}", +) +def normalize_csv_file( + csv_url: FlyteFile, + column_names: List[str], + columns_to_normalize: List[str], + output_location: str, +) -> FlyteFile: + ... + + +@workflow +def reference_lp_wf() -> FlyteFile: + return normalize_csv_file( + csv_url="https://people.sc.fsu.edu/~jburkardt/data/csv/biostats.csv", + column_names=["Name", "Sex", "Age", "Heights (in)", "Weight (lbs)"], + columns_to_normalize=["Age"], + output_location="", + ) +``` + +It's important to verify that the workflow interface corresponds to that of the referenced workflow. + +:::{note} +The macro `{{ registration.version }}` is populated by `flytectl register` during registration. +Generally, it is unnecessary for reference launch plans, as it is preferable to bind to a specific version of the task or launch plan. +However, in this example, we are registering both the launch plan `core.flyte_basics.files.normalize_csv_file` and the workflow that references it. +Therefore, we need the macro to be updated to the version of a specific Flytesnacks release. +This is why `{{ registration.version }}` is used. + +A typical reference launch plan would resemble the following: + +```python +@reference_launch_plan( + project="flytesnacks", + domain="development", + name="core.flyte_basics.files.normalize_csv_file", + version="d06cebcfbeabc02b545eefa13a01c6ca992940c8", # If using GIT for versioning OR 0.16.0, if semver +) +def normalize_csv_file(...): + ... +``` +::: diff --git a/docs/user_guide/productionizing/reference_tasks.md b/docs/user_guide/productionizing/reference_tasks.md new file mode 100644 index 00000000000..057986d74a2 --- /dev/null +++ b/docs/user_guide/productionizing/reference_tasks.md @@ -0,0 +1,89 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +# Reference tasks + +```{eval-rst} +.. tags:: Intermediate +``` + +A {py:func}`flytekit.reference_task` references the Flyte tasks that have already been defined, serialized, and registered. +You can reference tasks from other projects and create workflows that use tasks declared by others. +These tasks can be in their own containers, python runtimes, flytekit versions, and even different languages. + +The following example illustrates how to use reference tasks. + +:::{note} +Reference tasks cannot be run locally. You must mock them out. +::: + +```{code-cell} +:lines_to_next_cell: 2 + +from typing import List + +from flytekit import reference_task, workflow +from flytekit.types.file import FlyteFile + + +@reference_task( + project="flytesnacks", + domain="development", + name="data_types_and_io.file.normalize_columns", + version="{{ registration.version }}", +) +def normalize_columns( + csv_url: FlyteFile, + column_names: List[str], + columns_to_normalize: List[str], + output_location: str, +) -> FlyteFile: + ... + + +@workflow +def wf() -> FlyteFile: + return normalize_columns( + csv_url="https://people.sc.fsu.edu/~jburkardt/data/csv/biostats.csv", + column_names=["Name", "Sex", "Age", "Heights (in)", "Weight (lbs)"], + columns_to_normalize=["Age"], + output_location="", + ) +``` + +:::{note} +The macro `{{ registration.version }}` is populated by `flytectl register` during registration. +Generally, it is unnecessary for reference tasks, as it is preferable to bind to a specific version of the task or launch plan. +However, in this example, we are registering both the task `core.flyte_basics.files.normalize_columns` and the workflow that references it. +Therefore, we need the macro to be updated to the version of a specific Flytesnacks release. +This is why `{{ registration.version }}` is used. + +A typical reference task would resemble the following: + +```python +@reference_task( + project="flytesnacks", + domain="development", + name="core.flyte_basics.files.normalize_columns", + version="d06cebcfbeabc02b545eefa13a01c6ca992940c8", # If using GIT for versioning OR 0.16.0, if semver + ) + def normalize_columns(...): + ... +``` +::: diff --git a/docs/user_guide/productionizing/schedules.md b/docs/user_guide/productionizing/schedules.md new file mode 100644 index 00000000000..0deda30d047 --- /dev/null +++ b/docs/user_guide/productionizing/schedules.md @@ -0,0 +1,227 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(scheduling_launch_plan)= + +# Schedules + +```{eval-rst} +.. tags:: Basic +``` + +{ref}`flyte:divedeep-launchplans` can be set to run automatically on a schedule using the Flyte Native Scheduler. +For workflows that depend on knowing the kick-off time, Flyte supports passing in the scheduled time (not the actual time, which may be a few seconds off) as an argument to the workflow. + +Check out a demo of how the Native Scheduler works: + +```{eval-rst} +.. youtube:: sQoCp2qSQK4 +``` + +:::{note} +Native scheduler doesn't support [AWS syntax](http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions). +::: + ++++ {"lines_to_next_cell": 0} + +Consider the following example workflow: + +```{code-cell} +from datetime import datetime + +from flytekit import task, workflow + + +@task +def format_date(run_date: datetime) -> str: + return run_date.strftime("%Y-%m-%d %H:%M") + + +@workflow +def date_formatter_wf(kickoff_time: datetime): + formatted_kickoff_time = format_date(run_date=kickoff_time) + print(formatted_kickoff_time) +``` + ++++ {"lines_to_next_cell": 0} + +The `date_formatter_wf` workflow can be scheduled using either the `CronSchedule` or the `FixedRate` object. + +(cron-schedules)= + +## Cron schedules + +[Cron](https://en.wikipedia.org/wiki/Cron) expression strings use this {ref}`syntax `. +An incorrect cron schedule expression would lead to failure in triggering the schedule. + +```{code-cell} +from flytekit import CronSchedule, LaunchPlan # noqa: E402 + +# creates a launch plan that runs every minute. +cron_lp = LaunchPlan.get_or_create( + name="my_cron_scheduled_lp", + workflow=date_formatter_wf, + schedule=CronSchedule( + # Note that the ``kickoff_time_input_arg`` matches the workflow input we defined above: kickoff_time + # But in case you are using the AWS scheme of schedules and not using the native scheduler then switch over the schedule parameter with cron_expression + schedule="*/1 * * * *", # Following schedule runs every min + kickoff_time_input_arg="kickoff_time", + ), +) +``` + +The `kickoff_time_input_arg` corresponds to the workflow input `kickoff_time`. +Specifying this argument means that Flyte will pass in the kick-off time of the +cron schedule into the `kickoff_time` argument of the `date_formatter_wf` workflow. + ++++ + +## Fixed rate intervals + +If you prefer to use an interval rather than a cron scheduler to schedule your workflows, you can use the fixed-rate scheduler. +A fixed-rate scheduler runs at the specified interval. + +Here's an example: + +```{code-cell} +from datetime import timedelta # noqa: E402 + +from flytekit import FixedRate, LaunchPlan # noqa: E402 + + +@task +def be_positive(name: str) -> str: + return f"You're awesome, {name}" + + +@workflow +def positive_wf(name: str): + reminder = be_positive(name=name) + print(f"{reminder}") + + +fixed_rate_lp = LaunchPlan.get_or_create( + name="my_fixed_rate_lp", + workflow=positive_wf, + # Note that the workflow above doesn't accept any kickoff time arguments. + # We just omit the ``kickoff_time_input_arg`` from the FixedRate schedule invocation + schedule=FixedRate(duration=timedelta(minutes=10)), + fixed_inputs={"name": "you"}, +) +``` + +This fixed-rate scheduler runs every ten minutes. Similar to a cron scheduler, a fixed-rate scheduler also accepts `kickoff_time_input_arg` (which is omitted in this example). + +(activating-schedules)= + +## Activating a schedule + +After initializing your launch plan, [activate the specific version of the launch plan](https://docs.flyte.org/projects/flytectl/en/latest/gen/flytectl_update_launchplan.html) so that the schedule runs. + +```bash +flytectl update launchplan -p flyteexamples -d development {{ name_of_lp }} --version --activate +``` + ++++ + +Verify if your launch plan was activated: + +```bash +flytectl get launchplan -p flytesnacks -d development +``` + ++++ + +## Deactivating a schedule + +You can [archive/deactivate the launch plan](https://docs.flyte.org/projects/flytectl/en/latest/gen/flytectl_update_launchplan.html) to deschedule any scheduled job associated with it. + +```bash +flytectl update launchplan -p flyteexamples -d development {{ name_of_lp }} --version --archive +``` + ++++ + +## Platform configuration changes for AWS scheduler + +The Scheduling feature can be run using the Flyte native scheduler which comes with Flyte. If you intend to use the AWS scheduler then it requires additional infrastructure to run, so these will have to be created and configured. The following sections are only required if you use the AWS scheme for the scheduler. You can still run the Flyte native scheduler on AWS. + +### Setting up scheduled workflows + +To run workflow executions based on user-specified schedules, you'll need to fill out the top-level `scheduler` portion of the flyteadmin application configuration. + +In particular, you'll need to configure the two components responsible for scheduling workflows and processing schedule event triggers. + +:::{note} +This functionality is currently only supported for AWS installs. +::: + +#### Event scheduler + +To schedule workflow executions, you'll need to set up an [AWS SQS](https://aws.amazon.com/sqs/) queue. A standard-type queue should suffice. The flyteadmin event scheduler creates [AWS CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-Scheduled-Rule.html) event rules that invoke your SQS queue as a target. + +With that in mind, let's take a look at an example `eventScheduler` config section and dive into what each value represents: + +```bash +scheduler: + eventScheduler: + scheme: "aws" + region: "us-east-1" + scheduleRole: "arn:aws:iam::{{ YOUR ACCOUNT ID }}:role/{{ ROLE }}" + targetName: "arn:aws:sqs:us-east-1:{{ YOUR ACCOUNT ID }}:{{ YOUR QUEUE NAME }}" + scheduleNamePrefix: "flyte" +``` + ++++ + +- **scheme**: in this case because AWS is the only cloud back-end supported for scheduling workflows, only `"aws"` is a valid value. By default, the no-op scheduler is used. +- **region**: this specifies which region initialized AWS clients should use when creating CloudWatch rules. +- **scheduleRole** This is the IAM role ARN with permissions set to `Allow` + : - `events:PutRule` + - `events:PutTargets` + - `events:DeleteRule` + - `events:RemoveTargets` +- **targetName** this is the ARN for the SQS Queue you've allocated to scheduling workflows. +- **scheduleNamePrefix** this is an entirely optional prefix used when creating schedule rules. Because of AWS naming length restrictions, scheduled rules are a random hash and having a shared prefix makes these names more readable and indicates who generated the rules. + +#### Workflow executor + +Scheduled events which trigger need to be handled by the workflow executor, which subscribes to triggered events from the SQS queue configured above. + +:::{NOTE} +Failure to configure a workflow executor will result in all your scheduled events piling up silently without ever kicking off workflow executions. +::: + +Again, let's break down a sample config: + +```bash +scheduler: + eventScheduler: + ... + workflowExecutor: + scheme: "aws" + region: "us-east-1" + scheduleQueueName: "{{ YOUR QUEUE NAME }}" + accountId: "{{ YOUR ACCOUNT ID }}" +``` + ++++ + +- **scheme**: in this case because AWS is the only cloud back-end supported for executing scheduled workflows, only `"aws"` is a valid value. By default, the no-op executor is used and in case of sandbox we use `"local"` scheme which uses the Flyte native scheduler. +- **region**: this specifies which region AWS clients should use when creating an SQS subscriber client. +- **scheduleQueueName**: this is the name of the SQS Queue you've allocated to scheduling workflows. +- **accountId**: Your AWS [account id](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId). diff --git a/docs/user_guide/productionizing/secrets.md b/docs/user_guide/productionizing/secrets.md new file mode 100644 index 00000000000..dba145c483d --- /dev/null +++ b/docs/user_guide/productionizing/secrets.md @@ -0,0 +1,447 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +(secrets)= + +# Secrets + +```{eval-rst} +.. tags:: Kubernetes, Intermediate +``` + +Flyte supports running a variety of tasks, from containers to SQL queries and +service calls, and it provides a native Secret construct to request and access +secrets. + +This example explains how you can access secrets in a Flyte Task. Flyte provides +different types of secrets, but for users writing Python tasks, you can only access +secure secrets either as environment variables or as a file injected into the +running container. + ++++ + +## Creating secrets with a secrets manager + +:::{admonition} Prerequisites +:class: important + +- Install [kubectl](https://kubernetes.io/docs/tasks/tools/). +- Have access to a Flyte cluster, for e.g. with `flytectl demo start` as + described {ref}`here `. +::: + +The first step to using secrets in Flyte is to create one on the backend. +By default, Flyte uses the K8s-native secrets manager, which we'll use in this +example, but you can also {ref}`configure different secret managers `. + +First, we use `kubectl` to create a secret called `user-info` with a +`user_secret` key: + +```{eval-rst} +.. prompt:: bash $ + + kubectl create secret -n - generic user-info --from-literal=user_secret=mysecret +``` + +:::{note} +Be sure to specify the correct Kubernetes namespace when creating a secret. If you plan on accessing +the secret in the `flytesnacks` project under the `development` domain, replace `-` +with `flytesnacks-development`. This is because secrets need to be in the same namespace as the +workflow execution. +::: + +:::{important} +The imperative command above is useful for creating secrets in an ad hoc manner, +but it may not be the most secure or sustainable way to do so. You can, however, +define secrets using a [configuration file](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-config-file/) +or tools like [Kustomize](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-kustomize/). +::: + ++++ + +## Using secrets in tasks + +Once you've defined a secret on the Flyte backend, `flytekit` exposes a class +called {py:class}`~flytekit.Secret`s, which allows you to request a secret +from the configured secret manager. + +```{code-cell} +import os +from typing import Tuple + +import flytekit +from flytekit import Secret, task, workflow +from flytekit.testing import SecretsManager + +secret = Secret( + group="", + key="", + mount_requirement=Secret.MountType.ENV_VAR, +) +``` + +Secrets consists of `group`, `key`, and `mounting_requirement` arguments, +where a secret group can have multiple secrets associated with it. +If the `mounting_requirement` argument is not specified, the secret will +be injected as an environment variable by default. + +In the code below we specify two variables, `SECRET_GROUP` and +`SECRET_NAME`, which maps onto the `user-info` secret that we created +with `kubectl` above, with a key called `user_secret`. + +```{code-cell} +SECRET_GROUP = "user-info" +SECRET_NAME = "user_secret" +``` + +Now we declare the secret in the `secret_requests` argument of the +{py:func}`@task ` decorator. The request tells Flyte to make +the secret available to the task. + +The secret can then be accessed inside the task using the +{py:class}`~flytekit.ExecutionParameters` object, which is returned by +invoking the {py:func}`flytekit.current_context` function, as shown below. + +At runtime, flytekit looks inside the task pod for an environment variable or +a mounted file with a predefined name/path and loads the value. + +```{code-cell} +@task(secret_requests=[Secret(group=SECRET_GROUP, key=SECRET_NAME)]) +def secret_task() -> str: + context = flytekit.current_context() + secret_val = context.secrets.get(SECRET_GROUP, SECRET_NAME) + print(secret_val) + return secret_val +``` + +:::{warning} +Never print secret values! The example above is just for demonstration purposes. +::: + +:::{note} +- In case Flyte fails to access the secret, an error is raised. +- The `Secret` group and key are required parameters during declaration + and usage. Failure to specify will cause a {py:class}`ValueError`. +::: + +### Multiple keys grouped into one secret + +In some cases you may have multiple secrets and sometimes, they maybe grouped +as one secret in the SecretStore. + +For example, In Kubernetes secrets, it is possible to nest multiple keys under +the same secret: + +```{eval-rst} +.. prompt:: bash $ + + kubectl create secret generic user-info \ + --from-literal=user_secret=mysecret \ + --from-literal=username=my_username \ + --from-literal=password=my_password +``` + +In this case, the secret group will be `user-info`, with three available +secret keys: `user_secret`, `username`, and `password`. + +```{code-cell} +USERNAME_SECRET = "username" +PASSWORD_SECRET = "password" +``` + ++++ {"lines_to_next_cell": 0} + +The Secret structure allows passing two fields, matching the key and the group, as previously described: + +```{code-cell} +@task( + secret_requests=[ + Secret(key=USERNAME_SECRET, group=SECRET_GROUP), + Secret(key=PASSWORD_SECRET, group=SECRET_GROUP), + ] +) +def user_info_task() -> Tuple[str, str]: + context = flytekit.current_context() + secret_username = context.secrets.get(SECRET_GROUP, USERNAME_SECRET) + secret_pwd = context.secrets.get(SECRET_GROUP, PASSWORD_SECRET) + print(f"{secret_username}={secret_pwd}") + return secret_username, secret_pwd +``` + +:::{warning} +Never print secret values! The example above is just for demonstration purposes. +::: + +### Mounting secrets as files or environment variables + +It is also possible to make Flyte mount the secret as a file or an environment +variable. + +The file type is useful for large secrets that do not fit in environment variables, +which are typically asymmetric keys (like certs, etc). Another reason may be that a +dependent library requires the secret to be available as a file. +In these scenarios you can specify the `mount_requirement=Secret.MountType.FILE`. + +In the following example we force the mounting to be an environment variable: + +```{code-cell} +@task( + secret_requests=[ + Secret( + group=SECRET_GROUP, + key=SECRET_NAME, + mount_requirement=Secret.MountType.ENV_VAR, + ) + ] +) +def secret_file_task() -> Tuple[str, str]: + secret_manager = flytekit.current_context().secrets + + # get the secrets filename + f = secret_manager.get_secrets_file(SECRET_GROUP, SECRET_NAME) + + # get secret value from an environment variable + secret_val = secret_manager.get(SECRET_GROUP, SECRET_NAME) + + # returning the filename and the secret_val + return f, secret_val +``` + ++++ {"lines_to_next_cell": 0} + +These tasks can be used in your workflow as usual + +```{code-cell} +@workflow +def my_secret_workflow() -> Tuple[str, str, str, str, str]: + x = secret_task() + y, z = user_info_task() + f, s = secret_file_task() + return x, y, z, f, s +``` + +### Testing with mock secrets + +The simplest way to test secret accessibility is to export the secret as an +environment variable. There are some helper methods available to do so: + +```{code-cell} +if __name__ == "__main__": + sec = SecretsManager() + os.environ[sec.get_secrets_env_var(SECRET_GROUP, SECRET_NAME)] = "value" + os.environ[sec.get_secrets_env_var(SECRET_GROUP, USERNAME_SECRET)] = "username_value" + os.environ[sec.get_secrets_env_var(SECRET_GROUP, PASSWORD_SECRET)] = "password_value" + x, y, z, f, s = my_secret_workflow() + assert x == "value" + assert y == "username_value" + assert z == "password_value" + assert f == sec.get_secrets_file(SECRET_GROUP, SECRET_NAME) + assert s == "value" +``` + +## Using secrets in task templates + +For task types that connect to a remote database, you'll need to specify +secret request as well. For example, for the {py:class}`~flytekitplugins.sqlalchemy.SQLAlchemyTask` +you need to: + +1. Specify the `secret_requests` argument. +2. Configure the {py:class}`~flytekitplugins.sqlalchemy.SQLAlchemyConfig` to + declare which secret maps onto which connection argument. + +```python +from flytekit import kwtypes +from flytekitplugins.sqlalchemy import SQLAlchemyTask, SQLAlchemyConfig + + +# define the secrets +secrets = { + "username": Secret(group="", key=""), + "password": Secret(group="", key=""), +} + + +sql_query = SQLAlchemyTask( + name="sql_query", + query_template="""SELECT * FROM my_table LIMIT {{ .inputs.limit }}""", + inputs=kwtypes(limit=int), + + # request secrets + secret_requests=[*secrets.values()], + + # specify username and password credentials in the configuration + task_config=SQLAlchemyConfig( + uri="", + secret_connect_args=secrets, + ), +) +``` + ++++ + +:::{note} +Here the `secret_connect_args` map to the +[SQLAlchemy engine configuration](https://docs.sqlalchemy.org/en/20/core/engines.html) +argument names for the username and password. +::: + +You can then use the `sql_query` task inside a workflow to grab data and +perform downstream transformations on it. + ++++ + +## How secrets injection works + +The rest of this page describes how secrets injection works under the hood. +For a simple task that launches a Pod, the flow would look something like this: + +```{image} https://mermaid.ink/img/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG4gICAgUHJvcGVsbGVyLT4-K1BsdWdpbnM6IENyZWF0ZSBLOHMgUmVzb3VyY2VcbiAgICBQbHVnaW5zLT4-LVByb3BlbGxlcjogUmVzb3VyY2UgT2JqZWN0XG4gICAgUHJvcGVsbGVyLT4-K1Byb3BlbGxlcjogU2V0IExhYmVscyAmIEFubm90YXRpb25zXG4gICAgUHJvcGVsbGVyLT4-K0FwaVNlcnZlcjogQ3JlYXRlIE9iamVjdCAoZS5nLiBQb2QpXG4gICAgQXBpU2VydmVyLT4-K1BvZCBXZWJob29rOiAvbXV0YXRlXG4gICAgUG9kIFdlYmhvb2stPj4rUG9kIFdlYmhvb2s6IExvb2t1cCBnbG9iYWxzXG4gICAgUG9kIFdlYmhvb2stPj4rUG9kIFdlYmhvb2s6IEluamVjdCBTZWNyZXQgQW5ub3RhdGlvbnMgKGUuZy4gSzhzLCBWYXVsdC4uLiBldGMuKVxuICAgIFBvZCBXZWJob29rLT4-LUFwaVNlcnZlcjogTXV0YXRlZCBQb2RcbiAgICBcbiAgICAgICAgICAgICIsIm1lcm1haWQiOnt9LCJ1cGRhdGVFZGl0b3IiOmZhbHNlfQ +:target: https://mermaid.ink/img/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG4gICAgUHJvcGVsbGVyLT4-K1BsdWdpbnM6IENyZWF0ZSBLOHMgUmVzb3VyY2VcbiAgICBQbHVnaW5zLT4-LVByb3BlbGxlcjogUmVzb3VyY2UgT2JqZWN0XG4gICAgUHJvcGVsbGVyLT4-K1Byb3BlbGxlcjogU2V0IExhYmVscyAmIEFubm90YXRpb25zXG4gICAgUHJvcGVsbGVyLT4-K0FwaVNlcnZlcjogQ3JlYXRlIE9iamVjdCAoZS5nLiBQb2QpXG4gICAgQXBpU2VydmVyLT4-K1BvZCBXZWJob29rOiAvbXV0YXRlXG4gICAgUG9kIFdlYmhvb2stPj4rUG9kIFdlYmhvb2s6IExvb2t1cCBnbG9iYWxzXG4gICAgUG9kIFdlYmhvb2stPj4rUG9kIFdlYmhvb2s6IEluamVjdCBTZWNyZXQgQW5ub3RhdGlvbnMgKGUuZy4gSzhzLCBWYXVsdC4uLiBldGMuKVxuICAgIFBvZCBXZWJob29rLT4-LUFwaVNlcnZlcjogTXV0YXRlZCBQb2RcbiAgICBcbiAgICAgICAgICAgICIsIm1lcm1haWQiOnt9LCJ1cGRhdGVFZGl0b3IiOmZhbHNlfQ +``` + +Breaking down this sequence diagram: + +1. Flyte invokes a plugin to create the K8s object. This can be a Pod or a more complex CRD (e.g. Spark, PyTorch, etc.) + + :::{note} + The plugin ensures that the labels and annotations are passed to any Pod that is spawned due to the creation of the CRD. + ::: + +2. Flyte applies labels and annotations that are referenced to all secrets the task is requesting access to. Note that secrets are not case sensitive. + +3. Flyte sends a `POST` request to `ApiServer` to create the object. + +4. Before persisting the Pod, `ApiServer` invokes all the registered Pod Webhooks and Flyte's Pod Webhook is called. + +5. Using the labels and annotiations attached in **step 2**, Flyte Pod Webhook looks up globally mounted secrets for each of the requested secrets. + +6. If found, the Pod Webhook mounts them directly in the Pod. If not found, the Pod Webhook injects the appropriate annotations to load the secrets for K8s (or Vault or Confidant or any secret management system plugin configured) into the task pod. + +Once the secret is injected into the task pod, Flytekit can read it using the secret manager. + +The webhook is included in all overlays in the Flytekit repo. The deployment file creates two things; a **Job** and a **Deployment**. + +1. `flyte-pod-webhook-secrets` **Job**: This job runs `flytepropeller webhook init-certs` command that issues self-signed CA Certificate as well as a derived TLS certificate and its private key. Ensure that the private key is in lower case, that is, `my_token` in contrast to `MY_TOKEN`. It stores them into a new secret `flyte-pod-webhook-secret`. +2. `flyte-pod-webhook` **Deployment**: This deployment creates the Webhook pod which creates a MutatingWebhookConfiguration on startup. This serves as the registration contract with the ApiServer to know about the Webhook before it starts serving traffic. + +## Secret discovery + +Flyte identifies secrets using a secret group and a secret key, which can +be accessed by {py:func}`flytekit.current_context` in the task function +body, as shown in the code examples above. + +Flytekit relies on the following environment variables to load secrets (defined [here](https://github.com/flyteorg/flytekit/blob/9d313429c577a919ec0ad4cd397a5db356a1df0d/flytekit/configuration/internal.py#L141-L159)). When running tasks and workflows locally you should make sure to store your secrets accordingly or to modify these: + +- `FLYTE_SECRETS_DEFAULT_DIR`: The directory Flytekit searches for secret files. **Default:** `"/etc/secrets"` +- `FLYTE_SECRETS_FILE_PREFIX`: a common file prefix for Flyte secrets. **Default:** `""` +- `FLYTE_SECRETS_ENV_PREFIX`: a common env var prefix for Flyte secrets. **Default:** `"_FSEC_"` + +When running a workflow on a Flyte cluster, the configured secret manager will use the secret Group and Key to try and retrieve a secret. +If successful, it will make the secret available as either file or environment variable and will if necessary modify the above variables automatically so that the task can load and use the secrets. + +(configure_secret_management)= + +## Configuring a secret management system plugin + +When a task requests a secret, Flytepropeller will try to retrieve secrets in the following order: + +1. Checking for global secrets, i.e. secrets mounted as files or environment variables on the `flyte-pod-webhook` pod +2. Checking with an additional configurable secret manager. + +:::{important} +The global secrets take precedence over any secret discoverable by the secret manager plugins. +::: + +The following secret managers are available at the time of writing: + +- [K8s secrets](https://kubernetes.io/docs/concepts/configuration/secret/#creating-a-secret) (**default**): `flyte-pod-webhook` will try to look for a K8s secret named after the secret Group and retrieve the value for the secret Key. +- [AWS Secret Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html): `flyte-pod-webhook` will add the AWS Secret Manager sidecar container to a task Pod which will mount the secret. +- [Vault Agent Injector](https://developer.hashicorp.com/vault/tutorials/getting-started/getting-started-first-secret#write-a-secret) : `flyte-pod-webhook` will annotate the task Pod with the respective Vault annotations that trigger an existing Vault Agent Injector to retrieve the specified secret Key from a vault path defined as secret Group. + +You can configure the additional secret manager by defining `secretManagerType` to be either 'K8s', 'AWS' or 'Vault' in +the [core config](https://github.com/flyteorg/flyte/blob/master/kustomize/base/single_cluster/headless/config/propeller/core.yaml#L34) of the Flytepropeller. + +When using the K8s secret manager plugin, which is enabled by default, the secrets need to be available in the same namespace as the task execution +(for example `flytesnacks-development`). K8s secrets can be mounted as either files or injected as environment variables into the task pod, +so if you need to make larger files available to the task, then this might be the better option. + +Furthermore, this method also allows you to have separate credentials for different domains but still using the same name for the secret. + +### AWS secrets manager + +When using the AWS secret management plugin, secrets need to be specified by naming them in the format +`:`, where the secret string is a plain-text value, **not** key/value json. + +### Vault secrets manager + +When using the Vault secret manager, make sure you have Vault Agent deployed on your cluster as described in this +[step-by-step tutorial](https://learn.hashicorp.com/tutorials/vault/kubernetes-sidecar). +Vault secrets can only be mounted as files and will become available under `"/etc/flyte/secrets/SECRET_GROUP/SECRET_NAME"`. + +Vault comes with various secrets engines. Currently Flyte supports working with both version 1 and 2 of the `Key Vault engine ` as well as the `databases secrets engine `. +You can use use the `group_version` parameter to specify which secret backend engine to use. Available choices are: "kv1", "kv2", "db": + ++++ {"lines_to_next_cell": 0} + +How to request secrets with the Vault secret manager + +```{code-cell} +secret = Secret( + group="", + key="", + group_version="", +) +``` + +The group parameter is used to specify the path to the secret in the Vault backend. For example, if you have a secret stored in Vault at `"secret/data/flyte/secret"` then the group parameter should be `"secret/data/flyte"`. +When using either of the Key Vault engine versions, the secret key is the name of a specific secret entry to be retrieved from the group path. +When using the database secrets engine, the secret key itself is arbitrary but is required by Flyte to name and identify the secret file. It is arbitrary because the database secrets engine returns always two keys, `username` and `password` and we need to retrieve a matching pair in one request. + +**Configuration** + +You can configure the Vault role under which Flyte will try to read the secret by setting webhook.vaultSecretManager.role (default: `"flyte"`). +There is also a deprecated `webhook.vaultSecretManager.kvVersion` setting in the configmap that can be used to specify the version but only for the Key Vault backend engine. +Available choices are: "1", "2". Note that the version number needs to be an explicit string (e.g. `"1"`). + +**Annotations** + +By default, `flyte-pod-webhook` injects following annotations to task pod: + +1. `vault.hashicorp.com/agent-inject` to configure whether injection is explicitly enabled or disabled for a pod. +2. `vault.hashicorp.com/secret-volume-path` to configure where on the filesystem a secret will be rendered. +3. `vault.hashicorp.com/role` to configure the Vault role used by the Vault Agent auto-auth method. +4. `vault.hashicorp.com/agent-pre-populate-only` to configure whether an init container is the only injected container. +5. `vault.hashicorp.com/agent-inject-secret` to configure Vault Agent to retrieve the secrets from Vault required by the container. +6. `vault.hashicorp.com/agent-inject-file` to configure the filename and path in the secrets volume where a Vault secret will be written. +7. `vault.hashicorp.com/agent-inject-template` to configure the template Vault Agent should use for rendering a secret. + +It is possible to add extra annotations or override the existing ones in Flyte either at the task level using pod annotations or at the installation level. +If Flyte administrator wants to set up annotations for the entire system, they can utilize `webhook.vaultSecretManager.annotations` to accomplish this. + +## Scaling the webhook + +### Vertical scaling + +To scale the Webhook to be able to process the number/rate of pods you need, you may need to configure a vertical [pod +autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler). + +### Horizontal scaling + +The Webhook does not make any external API Requests in response to Pod mutation requests. It should be able to handle traffic +quickly. For horizontal scaling, adding additional replicas for the Pod in the +deployment should be sufficient. A single `MutatingWebhookConfiguration` object will be used, the same TLS certificate +will be shared across the pods and the Service created will automatically load balance traffic across the available pods. diff --git a/docs/user_guide/productionizing/spot_instances.md b/docs/user_guide/productionizing/spot_instances.md new file mode 100644 index 00000000000..85024f69966 --- /dev/null +++ b/docs/user_guide/productionizing/spot_instances.md @@ -0,0 +1,92 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + ++++ {"lines_to_next_cell": 0} + +# Spot instances + +```{eval-rst} +.. tags:: AWS, GCP, Intermediate + +``` + ++++ + +## What are spot instances? + +Spot instances are unused EC2 capacity in AWS. [Spot instances](https://aws.amazon.com/ec2/spot/?cards.sort-by=item.additionalFields.startDateTime&cards.sort-order=asc) can result in up to 90% savings on on-demand prices. The caveat is that these instances can be preempted at any point and no longer be available for use. This can happen due to: + +- Price – The spot price is greater than your maximum price. +- Capacity – If there are not enough unused EC2 instances to meet the demand for spot instances, Amazon EC2 interrupts spot instances. Amazon EC2 determines the order in which the instances are interrupted. +- Constraints – If your request includes a constraint such as a launch group or an Availability Zone group, these spot instances are terminated as a group when the constraint can no longer be met. + +Generally, most spot instances are obtained for around 2 hours (median), with the floor being about 20 minutes and the ceiling of unbounded duration. + +:::{note} +Spot Instances are called `Preemptible Instances` in the GCP terminology. +::: + +### Setting up spot instances + +- AWS: +- GCP: + +If an auto-scaling group (ASG) is set up, you may want to isolate the tasks you want to trigger on spot/preemptible instances from the regular workloads. +This can be done by setting taints and tolerations using the [config](https://github.com/flyteorg/flyteplugins/blob/60b94c688ef2b98aa53a9224b529ac672af04540/go/tasks/pluginmachinery/flytek8s/config/config.go#L84-L92) available at `flyteorg/flyteplugins` repo. + +:::{admonition} What's an ASG for a spot/preemptible instance? +When your spot/preemptible instance is terminated, ASG attempts to launch a replacement instance to maintain the desired capacity for the group. +::: + ++++ + +## What are interruptible tasks? + +If specified, the `interruptible flag` is added to the task definition and signals to the Flyte engine that it may be scheduled on machines that may be preempted, such as AWS spot instances. This is low-hanging fruit for any cost-savings initiative. + +### Setting interruptible tasks + +To run your workload on a spot/preemptible instance, you can set interruptible to `True`. In case you would like to automatically retry in case the node gets preemted, please also make sure to set at least one retry. For example: + +```python +@task(cache_version='1', interruptible=True, retries=1) +def add_one_and_print(value_to_print: int) -> int: + return value_to_print + 1 +``` + ++++ + +By setting this value, Flyte will schedule your task on an auto-scaling group (ASG) with only spot instances. + +:::{note} +If you set `retries=n`, for instance, and the task gets preempted repeatedly, Flyte will retry on a preemptible/spot instance `n-1` times and for the last attempt will retry your task on a non-spot (regular) instance. Please note that tasks will only be retried if at least one retry is allowed using the `retries` parameter in the `task` decorator. +::: + +### Which tasks should be set to interruptible? + +Most Flyte workloads should be good candidates for spot instances. +If your task does NOT exhibit the following properties, you can set `interruptible` to true. + +- Time-sensitive: It needs to run now and can not have any unexpected delays. +- Side Effects: The task is not idempotent, and retrying will cause issues. +- Long-Running Tasks: The task takes > 2 hours. Having an interruption during this time frame could potentially waste a lot of computation. + +In a nutshell, you should use spot/preemptible instances when you want to reduce the total cost of running jobs at the expense of potential delays in execution due to restarts. + ++++ + +% TODO: Write "How to Recover From Interruptions?" section diff --git a/docs/user_guide/productionizing/workflow_labels_and_annotations.md b/docs/user_guide/productionizing/workflow_labels_and_annotations.md new file mode 100644 index 00000000000..5b9fe6d4c6f --- /dev/null +++ b/docs/user_guide/productionizing/workflow_labels_and_annotations.md @@ -0,0 +1,75 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Workflow labels and annotations + +```{eval-rst} +.. tags:: Kubernetes, Intermediate +``` + +In Flyte, workflow executions are created as Kubernetes resources. These can be extended with +[labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) and +[annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). + +**Labels** and **annotations** are key value pairs which can be used to identify workflows for your own uses. + +:::{Warning} +Note that adding labels and annotations to your K8s resources may have side-effects depending on webhook behavior on your execution clusters. +::: + +Labels are meant to be used as identifying attributes, whereas annotations are arbitrary, *non-identifying* metadata. + +Using labels and annotations is entirely optional. They can be used to categorize and identify workflow executions. + +Labels and annotations are optional parameters to launch plan and execution invocations. When an execution +defines labels and/or annotations *and* the launch plan does as well, the execution spec values will be preferred. + +## Launch plan usage example + +```python +from flytekit import Labels, Annotations + +@workflow +class MyWorkflow(object): + ... + +my_launch_plan = MyWorkflow.create_launch_plan( + labels=Labels({"myexecutionlabel": "bar", ...}), + annotations=Annotations({"region": "SEA", ...}), + ... +) + +my_launch_plan.execute(...) +``` + +## Execution example + +```python +from flytekit import Labels, Annotations + +@workflow +class MyWorkflow(object): + ... + +my_launch_plan = MyWorkflow.create_launch_plan(...) + +my_launch_plan.execute( + labels=Labels({"myexecutionlabel": "bar", ...}), + annotations=Annotations({"region": "SEA", ...}), + ... +) +``` diff --git a/docs/user_guide/testing/index.md b/docs/user_guide/testing/index.md new file mode 100644 index 00000000000..80d3f6ef4eb --- /dev/null +++ b/docs/user_guide/testing/index.md @@ -0,0 +1,16 @@ +(testing)= + +# Testing + +The `flytekit` python SDK provides a few utilities for making it easier to test +your tasks and workflows in your test suite. For more details, you can also refer +to the {py:mod}`~flytekit.testing` module in the API reference. + + +```{toctree} +:maxdepth: -1 +:name: testing_toc +:hidden: + +mocking_tasks +``` diff --git a/docs/user_guide/testing/mocking_tasks.md b/docs/user_guide/testing/mocking_tasks.md new file mode 100644 index 00000000000..07b4f0239e7 --- /dev/null +++ b/docs/user_guide/testing/mocking_tasks.md @@ -0,0 +1,101 @@ +--- +jupytext: + cell_metadata_filter: all + formats: md:myst + main_language: python + notebook_metadata_filter: all + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.1 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Mocking tasks + +A lot of the tasks that you write you can run locally, but some of them you will not be able to, usually because they +are tasks that depend on a third-party only available on the backend. Hive tasks are a common example, as most users +will not have access to the service that executes Hive queries from their development environment. However, it's still +useful to be able to locally run a workflow that calls such a task. In these instances, flytekit provides a couple +of utilities to help navigate this. + +```{code-cell} +import datetime + +import pandas +from flytekit import SQLTask, TaskMetadata, kwtypes, task, workflow +from flytekit.testing import patch, task_mock +from flytekit.types.schema import FlyteSchema +``` + ++++ {"lines_to_next_cell": 0} + +This is a generic SQL task (and is by default not hooked up to any datastore nor handled by any plugin), and must +be mocked. + +```{code-cell} +sql = SQLTask( + "my-query", + query_template="SELECT * FROM hive.city.fact_airport_sessions WHERE ds = '{{ .Inputs.ds }}' LIMIT 10", + inputs=kwtypes(ds=datetime.datetime), + outputs=kwtypes(results=FlyteSchema), + metadata=TaskMetadata(retries=2), +) +``` + ++++ {"lines_to_next_cell": 0} + +This is a task that can run locally + +```{code-cell} +@task +def t1() -> datetime.datetime: + return datetime.datetime.now() +``` + ++++ {"lines_to_next_cell": 0} + +Declare a workflow that chains these two tasks together. + +```{code-cell} +@workflow +def my_wf() -> FlyteSchema: + dt = t1() + return sql(ds=dt) +``` + ++++ {"lines_to_next_cell": 0} + +Without a mock, calling the workflow would typically raise an exception, but with the `task_mock` construct, which +returns a `MagicMock` object, we can override the return value. + +```{code-cell} +def main_1(): + with task_mock(sql) as mock: + mock.return_value = pandas.DataFrame(data={"x": [1, 2], "y": ["3", "4"]}) + assert (my_wf().open().all() == pandas.DataFrame(data={"x": [1, 2], "y": ["3", "4"]})).all().all() +``` + ++++ {"lines_to_next_cell": 0} + +There is another utility as well called `patch` which offers the same functionality, but in the traditional Python +patching style, where the first argument is the `MagicMock` object. + +```{code-cell} +def main_2(): + @patch(sql) + def test_user_demo_test(mock_sql): + mock_sql.return_value = pandas.DataFrame(data={"x": [1, 2], "y": ["3", "4"]}) + assert (my_wf().open().all() == pandas.DataFrame(data={"x": [1, 2], "y": ["3", "4"]})).all().all() + + test_user_demo_test() + + +if __name__ == "__main__": + main_1() + main_2() +``` diff --git a/rfc/system/1893-caching-of-offloaded-objects.md b/rfc/system/1893-caching-of-offloaded-objects.md index 806b6cfd369..9a748df02d2 100644 --- a/rfc/system/1893-caching-of-offloaded-objects.md +++ b/rfc/system/1893-caching-of-offloaded-objects.md @@ -6,7 +6,7 @@ ## 1 Executive Summary -We propose a way to override the default behavior of [caching task executions](https://docs.flyte.org/en/latest/flytesnacks/examples/development_lifecycle/task_cache.html), enabling cache-by-value semantics for certain categories of objects. +We propose a way to override the default behavior of [caching task executions](https://docs.flyte.org/en/latest/user_guide/development_lifecycle/caching.html), enabling cache-by-value semantics for certain categories of objects. ## 2 Motivation diff --git a/rfc/system/2633-eviction-of-cached-task-outputs.md b/rfc/system/2633-eviction-of-cached-task-outputs.md index 45c3cd8d732..52b4adebf6c 100644 --- a/rfc/system/2633-eviction-of-cached-task-outputs.md +++ b/rfc/system/2633-eviction-of-cached-task-outputs.md @@ -158,7 +158,7 @@ The potential for malicious exploitation is deemed non-existent as no access to 3. Which Flyte tools (`flyteconsole`/`flytectl`) should support the proposed `AdminService` API extension for `flyteadmin`, if any? - **RESOLVED**: `flytectl`, `flytekit.remote`, `flyteconsole` 4. Should we support automatic eviction of cached results on workflow archival (opt-out via `flyteconsole`)? -5. Should we evict [Intratask Checkpoints](https://docs.flyte.org/en/latest/flytesnacks/examples/advanced_composition/checkpoint.html#intratask-checkpoints) from the cache as well since they might return cached results? If so, should we evict them from the backend side or pass the `cache_override` flag along to `flytekit`/its `Checkpointer` to skip any available entries? +5. Should we evict [Intratask Checkpoints](https://docs.flyte.org/en/latest/user_guide/advanced_composition/intratask_checkpoints.html) from the cache as well since they might return cached results? If so, should we evict them from the backend side or pass the `cache_override` flag along to `flytekit`/its `Checkpointer` to skip any available entries? - **RESOLVED**: not for the initial implementation. Intratask checkpoints are only relevant for consecutive retries of a task - their results would not be considered when launching another execution with a `cache_override` flag set. ## 9 Conclusion From fdaa0216dd849e461e6a493ea2f99e99a30e3447 Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Thu, 22 Feb 2024 11:30:13 -0600 Subject: [PATCH 036/107] apply changes from flytesnacks user guide - see https://github.com/flyteorg/flytesnacks/pull/1516 (#4933) Signed-off-by: nikki everett --- .../data_types_and_io/structureddataset.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/user_guide/data_types_and_io/structureddataset.md b/docs/user_guide/data_types_and_io/structureddataset.md index e37c006d0e9..6639d1b2a7a 100644 --- a/docs/user_guide/data_types_and_io/structureddataset.md +++ b/docs/user_guide/data_types_and_io/structureddataset.md @@ -39,9 +39,22 @@ It offers the following benefits: (not only at compile time, but also runtime since type information is carried along in the literal), store third-party schema definitions, and potentially in the future, render sample data, provide summary statistics, etc. +## Usage + +To use the `StructuredDataset` type, import `pandas` and define a task that returns a Pandas Dataframe. +Flytekit will detect the Pandas DataFrame return signature and convert the interface for the task to +the {py:class}`StructuredDataset` type. + +## Example + This example demonstrates how to work with a structured dataset using Flyte entities. -To begin, import the necessary dependencies. +```{note} +To use the `StructuredDataset` type, you only need to import `pandas`. +The other imports specified below are only necessary for this specific example. +``` + +To begin, import the dependencies for the example: ```{code-cell} import os @@ -67,8 +80,6 @@ from typing_extensions import Annotated +++ {"lines_to_next_cell": 0} Define a task that returns a Pandas DataFrame. -Flytekit will detect the Pandas dataframe return signature and -convert the interface for the task to the new {py:class}`StructuredDataset` type. ```{code-cell} @task From cf992f5950a2bdcd0f02a55c7aa17cee7d2d3df5 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Fri, 23 Feb 2024 16:58:29 +0800 Subject: [PATCH 037/107] Improve Agent Terminal Phase Error Message (#4935) --- flyteplugins/go/tasks/plugins/webapi/agent/plugin.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go index 13115f89b4b..b7d33f0b265 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go @@ -184,9 +184,9 @@ func (p Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phase } return core.PhaseInfoSuccess(taskInfo), nil case flyteIdl.TaskExecution_ABORTED: - return core.PhaseInfoFailure(pluginErrors.TaskFailedWithError, "failed to run the job with aborted phase", taskInfo), nil + return core.PhaseInfoFailure(pluginErrors.TaskFailedWithError, "failed to run the job with aborted phase.\n"+resource.Message, taskInfo), nil case flyteIdl.TaskExecution_FAILED: - return core.PhaseInfoFailure(pluginErrors.TaskFailedWithError, "failed to run the job", taskInfo), nil + return core.PhaseInfoFailure(pluginErrors.TaskFailedWithError, "failed to run the job.\n"+resource.Message, taskInfo), nil } // The default phase is undefined. @@ -201,9 +201,9 @@ func (p Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phase case admin.State_RUNNING: return core.PhaseInfoRunning(core.DefaultPhaseVersion, taskInfo), nil case admin.State_PERMANENT_FAILURE: - return core.PhaseInfoFailure(pluginErrors.TaskFailedWithError, "failed to run the job", taskInfo), nil + return core.PhaseInfoFailure(pluginErrors.TaskFailedWithError, "failed to run the job.\n"+resource.Message, taskInfo), nil case admin.State_RETRYABLE_FAILURE: - return core.PhaseInfoRetryableFailure(pluginErrors.TaskFailedWithError, "failed to run the job", taskInfo), nil + return core.PhaseInfoRetryableFailure(pluginErrors.TaskFailedWithError, "failed to run the job.\n"+resource.Message, taskInfo), nil case admin.State_SUCCEEDED: err = writeOutput(ctx, taskCtx, resource) if err != nil { From 5f92f3129191e07c81654cd3755259adb8252cdb Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Fri, 23 Feb 2024 11:32:10 -0600 Subject: [PATCH 038/107] New agents guide and deployment config docs updates (#4822) * small update to start PR Signed-off-by: nikki everett * add airflow and snowflake agent pages and update existing agents docs Signed-off-by: nikki everett * small updates Signed-off-by: nikki everett * [Doc] Airflow agent deployment (#4831) Signed-off-by: Kevin Su * [Doc] Snowflake agent deployment (#4832) Signed-off-by: Kevin Su * copyedits Signed-off-by: nikki everett * move agents guide to flyte Signed-off-by: nikki everett * rename directory and add guide to toctree Signed-off-by: nikki everett * stub out async vs sync agents content Signed-off-by: nikki everett * link to list of agents Signed-off-by: nikki everett * edits for sync vs async agents Signed-off-by: nikki everett * add visible TOC table to index page Signed-off-by: nikki everett * update for async vs sync tasks Signed-off-by: nikki everett * Update async agent example (#4906) * Add sync agent example Signed-off-by: Kevin Su * nit Signed-off-by: Kevin Su --------- Signed-off-by: Kevin Su * formatting and copy updates Signed-off-by: nikki everett * fix formatting in snowflake doc, small fixes in agents procedural docs Signed-off-by: nikki everett * fix toctree Signed-off-by: nikki everett * add link Signed-off-by: nikki everett * fix links Signed-off-by: nikki everett * update link Signed-off-by: nikki everett * import blog content Signed-off-by: nikki everett * rename agent creation doc, small content updates Signed-off-by: nikki everett * fix article title Signed-off-by: nikki everett * fix link Signed-off-by: nikki everett * undo unnecessary formatting change in unrelated file Signed-off-by: nikki everett --------- Signed-off-by: nikki everett Signed-off-by: Kevin Su Co-authored-by: Kevin Su --- docs/deployment/agents/airflow.rst | 97 +++++++++++++++++ docs/deployment/agents/bigquery.rst | 4 +- docs/deployment/agents/databricks.rst | 4 +- docs/deployment/agents/index.md | 27 +++-- docs/deployment/agents/mmcloud.rst | 2 +- docs/deployment/agents/sensor.rst | 10 +- docs/deployment/agents/snowflake.rst | 103 ++++++++++++++++++ docs/flyte_agents/developing_agents.md | 85 +++++++++++++++ ...nabling_agents_in_your_flyte_deployment.md | 16 +++ docs/flyte_agents/index.md | 48 ++++++++ docs/flyte_agents/testing_agents_locally.md | 48 ++++++++ docs/index.md | 1 + 12 files changed, 426 insertions(+), 19 deletions(-) create mode 100644 docs/deployment/agents/airflow.rst create mode 100644 docs/deployment/agents/snowflake.rst create mode 100644 docs/flyte_agents/developing_agents.md create mode 100644 docs/flyte_agents/enabling_agents_in_your_flyte_deployment.md create mode 100644 docs/flyte_agents/index.md create mode 100644 docs/flyte_agents/testing_agents_locally.md diff --git a/docs/deployment/agents/airflow.rst b/docs/deployment/agents/airflow.rst new file mode 100644 index 00000000000..ad6a6dab360 --- /dev/null +++ b/docs/deployment/agents/airflow.rst @@ -0,0 +1,97 @@ +.. _deployment-agent-setup-airflow: + +Airflow agent +================= + +This guide provides an overview of how to set up the Airflow agent in your Flyte deployment. +Please note that the you don't need an Airflow cluster to run the Airflow tasks, since Flytekit will +automatically compile Airflow tasks to Flyte tasks and execute them on the Flyte cluster. + +Specify agent configuration +---------------------------- + +.. tabs:: + + .. group-tab:: Flyte binary + + Edit the relevant YAML file to specify the agent. + + .. code-block:: bash + + kubectl edit configmap flyte-sandbox-config -n flyte + + .. code-block:: yaml + :emphasize-lines: 7,11,16 + + tasks: + task-plugins: + enabled-plugins: + - container + - sidecar + - k8s-array + - agent-service + default-for-task-types: + - container: container + - container_array: k8s-array + - airflow: agent-service + + plugins: + agent-service: + supportedTaskTypes: + - airflow + + .. group-tab:: Flyte core + + Create a file named ``values-override.yaml`` and add the following configuration to it. + + .. code-block:: yaml + + configmap: + enabled_plugins: + # -- Tasks specific configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#GetConfig) + tasks: + # -- Plugins configuration, [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#TaskPluginConfig) + task-plugins: + # -- [Enabled Plugins](https://pkg.go.dev/github.com/flyteorg/flyteplugins/go/tasks/config#Config). Enable sagemaker*, athena if you install the backend + enabled-plugins: + - container + - sidecar + - k8s-array + - agent-service + default-for-task-types: + container: container + sidecar: sidecar + container_array: k8s-array + airflow: agent-service + plugins: + agent-service: + supportedTaskTypes: + - airflow + + +Upgrade the Flyte Helm release +------------------------------ + +.. tabs:: + + .. group-tab:: Flyte binary + + .. code-block:: bash + + helm upgrade flyteorg/flyte-binary -n --values + + Replace ```` with the name of your release (e.g., ``flyte-backend``), + ```` with the name of your namespace (e.g., ``flyte``), + and ```` with the name of your YAML file. + + .. group-tab:: Flyte core + + .. code-block:: bash + + helm upgrade flyte/flyte-core -n --values values-override.yaml + + Replace ```` with the name of your release (e.g., ``flyte``) + + and ```` with the name of your namespace (e.g., ``flyte``). + +For Airflow agent on the Flyte cluster, see `Airflow agent `_. diff --git a/docs/deployment/agents/bigquery.rst b/docs/deployment/agents/bigquery.rst index 9835c3d47ac..d706ac7c379 100644 --- a/docs/deployment/agents/bigquery.rst +++ b/docs/deployment/agents/bigquery.rst @@ -1,6 +1,6 @@ .. _deployment-agent-setup-bigquery: -Google BigQuery Agent +Google BigQuery agent ====================== This guide provides an overview of setting up BigQuery agent in your Flyte deployment. @@ -103,4 +103,4 @@ Upgrade the Flyte Helm release and ```` with the name of your namespace (e.g., ``flyte``). -For BigQuery plugin on the Flyte cluster, please refer to `BigQuery Plugin Example `_ +For BigQuery agent on the Flyte cluster, see `BigQuery agent `_. diff --git a/docs/deployment/agents/databricks.rst b/docs/deployment/agents/databricks.rst index 00a5e97a47a..3dbf7731c5e 100644 --- a/docs/deployment/agents/databricks.rst +++ b/docs/deployment/agents/databricks.rst @@ -1,6 +1,6 @@ .. _deployment-agent-setup-databricks: -Databricks Agent +Databricks agent ================= This guide provides an overview of how to set up Databricks agent in your Flyte deployment. @@ -291,4 +291,4 @@ Wait for the upgrade to complete. You can check the status of the deployment pod kubectl get pods -n flyte -For databricks plugin on the Flyte cluster, please refer to `Databricks Plugin Example `_ +For Databricks agent on the Flyte cluster, see `Databricks agent `_. diff --git a/docs/deployment/agents/index.md b/docs/deployment/agents/index.md index e27644570af..0e114c8d066 100644 --- a/docs/deployment/agents/index.md +++ b/docs/deployment/agents/index.md @@ -2,22 +2,29 @@ # Agent Setup -.. tags:: Agent, Integration, Data, Advanced +```{tags} Agent, Integration, Data, Advanced +``` + +To set configure your Flyte deployment for agents, see the documentation below. -Discover the process of setting up Agents for Flyte. +:::{note} +If you are using a managed deployment of Flyte, you will need to contact your deployment administrator to configure agents in your deployment. +::: ```{list-table} :header-rows: 0 :widths: 20 30 -* - {ref}`Bigquery Agent ` - - Guide to setting up the Bigquery agent. +* - {ref}`Airflow Agent ` + - Configuring your Flyte deployment for the Airflow agent +* - {ref}`Databricks Agent ` + - Configuring your Flyte deployment for the Databricks agent. +* - {ref}`Google BigQuery Agent ` + - Configuring your Flyte deployment for the BigQuery agent. * - {ref}`MMCloud Agent ` - - Guide to setting up the MMCloud agent. + - Configuring your Flyte deployment for the MMCloud agent. * - {ref}`Sensor Agent ` - - Guide to setting up the Sensor agent. -* - {ref}`Databricks Agent ` - - Guide to setting up the Databricks agent. + - Configuring your Flyte deployment for the sensor agent. ``` ```{toctree} @@ -25,8 +32,10 @@ Discover the process of setting up Agents for Flyte. :name: Agent setup :hidden: +airflow +databricks bigquery mmcloud -databricks sensor +snowflake ``` diff --git a/docs/deployment/agents/mmcloud.rst b/docs/deployment/agents/mmcloud.rst index 217beab8ed4..ac08f4fcdf2 100644 --- a/docs/deployment/agents/mmcloud.rst +++ b/docs/deployment/agents/mmcloud.rst @@ -118,4 +118,4 @@ Wait for the upgrade to complete. You can check the status of the deployment pod kubectl get pods -n flyte -For MMCloud plugin on the Flyte cluster, please refer to `Memory Machine Cloud Plugin Example `_ +For MMCloud agent on the Flyte cluster, see `MMCloud agent `_. diff --git a/docs/deployment/agents/sensor.rst b/docs/deployment/agents/sensor.rst index ecb45e426fb..958e5d896ac 100644 --- a/docs/deployment/agents/sensor.rst +++ b/docs/deployment/agents/sensor.rst @@ -1,13 +1,13 @@ .. _deployment-agent-setup-sensor: -Sensor Agent +Sensor agent ================= -Sensor enables users to continuously check for a file or a condition to be met periodically. +The `sensor agent `_ enables users to continuously check for a file or a condition to be met periodically. When the condition is met, the sensor will complete. -This guide provides an overview of how to set up Sensor in your Flyte deployment. +This guide provides an overview of how to set up the sensor agent in your Flyte deployment. Spin up a cluster ----------------- @@ -43,7 +43,7 @@ Spin up a cluster Specify agent configuration ---------------------------- -Enable the Sensor agent by adding the following config to the relevant YAML file(s): +Enable the sensor agent by adding the following config to the relevant YAML file(s): .. tabs:: @@ -77,7 +77,7 @@ Enable the Sensor agent by adding the following config to the relevant YAML file .. group-tab:: Flyte core - Create a file named ``values-override.yaml`` and add the following configuration to it. + Create a file named ``values-override.yaml`` and add the following configuration to it: .. code-block:: yaml diff --git a/docs/deployment/agents/snowflake.rst b/docs/deployment/agents/snowflake.rst new file mode 100644 index 00000000000..f4d82c0eb2b --- /dev/null +++ b/docs/deployment/agents/snowflake.rst @@ -0,0 +1,103 @@ +.. _deployment-agent-setup-snowflake: + +Snowflake agent +================= + +This guide provides an overview of how to set up the Snowflake agent in your Flyte deployment. + +1. Set up the key pair authentication in Snowflake. For more details, see the `Snowflake key-pair authentication and key-pair rotation guide `__. +2. Create a secret with the group "snowflake" and the key "private_key". For more details, see `"Using Secrets in a Task" `__. + +.. code-block:: bash + + kubectl create secret generic snowflake-private-key --namespace=flytesnacks-development --from-file=your_private_key_above + +Specify agent configuration +---------------------------- + +.. tabs:: + + .. group-tab:: Flyte binary + + Edit the relevant YAML file to specify the agent. + + .. code-block:: bash + + kubectl edit configmap flyte-sandbox-config -n flyte + + .. code-block:: yaml + :emphasize-lines: 7,11,16 + + tasks: + task-plugins: + enabled-plugins: + - container + - sidecar + - k8s-array + - agent-service + default-for-task-types: + - container: container + - container_array: k8s-array + - snowflake: agent-service + + plugins: + agent-service: + supportedTaskTypes: + - snowflake + + .. group-tab:: Flyte core + + Create a file named ``values-override.yaml`` and add the following configuration to it. + + .. code-block:: yaml + + configmap: + enabled_plugins: + # -- Tasks specific configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#GetConfig) + tasks: + # -- Plugins configuration, [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#TaskPluginConfig) + task-plugins: + # -- [Enabled Plugins](https://pkg.go.dev/github.com/flyteorg/flyteplugins/go/tasks/config#Config). Enable sagemaker*, athena if you install the backend + enabled-plugins: + - container + - sidecar + - k8s-array + - agent-service + default-for-task-types: + container: container + sidecar: sidecar + container_array: k8s-array + snowflake: agent-service + plugins: + agent-service: + supportedTaskTypes: + - snowflake + +Ensure that the propeller has the correct service account for BigQuery. + +Upgrade the Flyte Helm release +------------------------------ + +.. tabs:: + + .. group-tab:: Flyte binary + + .. code-block:: bash + + helm upgrade flyteorg/flyte-binary -n --values + + Replace ```` with the name of your release (e.g., ``flyte-backend``), + ```` with the name of your namespace (e.g., ``flyte``), + and ```` with the name of your YAML file. + + .. group-tab:: Flyte core + + .. code-block:: bash + + helm upgrade flyte/flyte-core -n --values values-override.yaml + + Replace ```` with the name of your release (e.g., ``flyte``) + + and ```` with the name of your namespace (e.g., ``flyte``). + +For Snowflake agent on the Flyte cluster, see `Snowflake agent `_. diff --git a/docs/flyte_agents/developing_agents.md b/docs/flyte_agents/developing_agents.md new file mode 100644 index 00000000000..bd7d1c76107 --- /dev/null +++ b/docs/flyte_agents/developing_agents.md @@ -0,0 +1,85 @@ +--- +jupytext: + formats: md:myst + text_representation: + extension: .md + format_name: myst +--- + +(developing_agents)= +# Developing agents + +The Flyte agent framework enables rapid agent development, since agents are decoupled from the core FlytePropeller engine. Rather than building a complete gRPC service from scratch, you can implement an agent as a Python class, easing development. Agents can be tested independently and deployed privately, making maintenance easier and giving you more flexibility and control over development. + +If you need to create a new type of task, we recommend creating a new agent to run it rather than running the task in a pod. After testing the new agent, you can update your FlytePropeller configMap to specify the type of task that the agent should run. + +There are two types of agents: **async** and **sync**. +* **Async agents** enable long-running jobs that execute on an external platform over time. They communicate with external services that have asynchronous APIs that support `create`, `get`, and `delete` operations. The vast majority of agents are async agents. +* **Sync agents** enable request/response services that return immediate outputs (e.g. calling an internal API to fetch data or communicating with the OpenAI API). + +```{note} + +While agents can be written in any programming language, we currently only support Python agents. We may support other languages in the future. + +``` + +## Async agent interface specification + +To create a new async agent, extend the `AgentBase` class in the `flytekit.backend` module and implement `create`, `get`, and `delete` methods. All calls must be idempotent. + +- `create`: This method is used to initiate a new job. Users have the flexibility to use gRPC, REST, or an SDK to create a job. +- `get`: This method retrieves the job resource (jobID or output literal) associated with the task, such as a BigQuery job ID or Databricks task ID. +- `delete`: Invoking this method will send a request to delete the corresponding job. + +```python +from flytekit.extend.backend.base_agent import AgentBase, AgentRegistry +from dataclasses import dataclass +import requests + +@dataclass +class Metadata: + # FlytePropeller will pass the metadata specified in this class to the agent. + # For example, if you add job_id to the metadata, the agent will use the job_id to get the job status. + # If you add s3 file path, the agent will check if the file exists. + job_id: str + +class CustomAsyncAgent(AsyncAgentBase): + def __init__(self, task_type: str): + # Each agent should have a unique task type. + # The Flyte agent service will use the task type + # to find the corresponding agent. + self._task_type = task_type + + def create( + self, + output_prefix: str, + task_template: TaskTemplate, + inputs: typing.Optional[LiteralMap] = None, + **kwargs, + ) -> TaskCreateResponse: + # 1. Submit the task to the external service (BigQuery, DataBricks, etc.) + # 2. Create metadata for the task, such as jobID. + # 3. Return the metadata, serialized to bytes. + res = requests.post(url, json=data) + return CreateTaskResponse(resource_meta=json.dumps(asdict(Metadata(job_id=str(res.job_id)))).encode("utf-8")) + + def get(self, resource_meta: bytes, **kwargs) -> TaskGetResponse: + # 1. Deserialize the metadata. + # 2. Use the metadata to get the job status. + # 3. Return the job status. + metadata = Metadata(**json.loads(resource_meta.decode("utf-8"))) + res = requests.get(url, json={"job_id": metadata.job_id}) + return GetTaskResponse(resource=Resource(state=res.state) + + def delete(self, resource_meta: bytes, **kwargs) -> TaskDeleteResponse: + # 1. Deserialize the metadata. + # 2. Use the metadata to delete the job. + metadata = Metadata(**json.loads(resource_meta.decode("utf-8"))) + requests.delete(url, json={"job_id": metadata.job_id}) + return DeleteTaskResponse() + +# To register the custom agent +AgentRegistry.register(CustomAsyncAgent()) +``` + +For an example implementation, see the [BigQuery agent](https://github.com/flyteorg/flytekit/blob/master/plugins/flytekit-bigquery/flytekitplugins/bigquery/agent.py#L43). diff --git a/docs/flyte_agents/enabling_agents_in_your_flyte_deployment.md b/docs/flyte_agents/enabling_agents_in_your_flyte_deployment.md new file mode 100644 index 00000000000..f50b740a218 --- /dev/null +++ b/docs/flyte_agents/enabling_agents_in_your_flyte_deployment.md @@ -0,0 +1,16 @@ +--- +jupytext: + formats: md:myst + text_representation: + extension: .md + format_name: myst +--- + +(enabling_agents_in_your_flyte_deploymen)= +# Enabling agents in your Flyte deployment + +After you have finished {ref}`testing an agent locally `, you can enable the agent in your Flyte deployment to use it in production. To enable a particular agent in your Flyte deployment, see the [Agent setup guide](https://docs.flyte.org/en/latest/deployment/agents/index.html) for the agent. + +:::{note} +If you are using a managed deployment of Flyte, you will need to contact your deployment administrator to enable agents in your deployment. +::: diff --git a/docs/flyte_agents/index.md b/docs/flyte_agents/index.md new file mode 100644 index 00000000000..d56c7fed4bf --- /dev/null +++ b/docs/flyte_agents/index.md @@ -0,0 +1,48 @@ +--- +# override the toc-determined page navigation order +prev-page: getting_started/extending_flyte +prev-page-title: Extending Flyte +--- + +(flyte_agents_guide)= +# Flyte agents + +Flyte agents are long-running, stateless services that receive execution requests via gRPC and initiate jobs with appropriate external or internal services. They enable two key workflows: asynchronously launching jobs on hosted platforms (e.g. Databbricks or Snowflake) and calling external synchronous services, such as access control, data retrieval, and model inferencing. + +Each agent service is a Kubernetes deployment that receives gRPC requests from FlytePropeller when users trigger a particular type of task (for example, the BigQuery agent handles BigQuery tasks). The agent service then initiates a job with the appropriate service. Since Agents can be spawned in process, they allow for running all services locally as long as the connection secrets are available. Moreover, Agents use a protobuf interface, thus can be implemented in any language, providing a lot of opportunity for flexibility and reuse of existing libraries, as well as simpler testing. + +You can create different agent services that host different agents, e.g., a production and a development agent service. + +:::{figure} https://i.ibb.co/vXhBDjP/Screen-Shot-2023-05-29-at-2-54-14-PM.png +:alt: Agent Service +:class: with-shadow +::: + +## Using agents in tasks + +If you need to connect to an external service in your workflow, we recommend using the corresponding agent rather than a web API plugin. Agents are designed to be scalable and can handle large workloads efficiently, and decrease load on FlytePropeller, since they run outside of it. You can also test agents locally without having to change the Flyte backend configuration, streamlining development. + +For a list of agents you can use in your tasks and example usage for each, see the [Integrations](https://docs.flyte.org/en/latest/flytesnacks/integrations.html#agents) documentation. + +## Table of contents + +```{list-table} +:header-rows: 0 +:widths: 20 30 + +* - {doc}`Developing agents ` + - If the agent you need doesn't exist, follow these steps to create it. +* - {doc}`Testing agents locally ` + - Whether using an existing agent or developing a new one, you can test the agent locally without needing to configure your Flyte deployment. +* - {doc}`Enabling agents in your Flyte deployment ` + - Once you have tested an agent locally and want to use it in production, you must configure your Flyte deployment for the agent. +``` + +```{toctree} +:maxdepth: -1 +:hidden: + +developing_agents +testing_agents_locally +enabling_agents_in_your_flyte_deployment +``` diff --git a/docs/flyte_agents/testing_agents_locally.md b/docs/flyte_agents/testing_agents_locally.md new file mode 100644 index 00000000000..7874d0bca1f --- /dev/null +++ b/docs/flyte_agents/testing_agents_locally.md @@ -0,0 +1,48 @@ +--- +jupytext: + formats: md:myst + text_representation: + extension: .md + format_name: myst +--- + +(testing_agents_locally)= +# Testing agents locally + +You can test agents locally without running the backend server, making agent development easier. + +To test an agent locally, create a class for the agent task that inherits from [AsyncAgentExecutorMixin](https://github.com/flyteorg/flytekit/blob/master/flytekit/extend/backend/base_agent.py#L155). This mixin can handle both asynchronous tasks and synchronous tasks and allows flytekit to mimic FlytePropeller's behavior in calling the agent. + +## BigQuery example + +To test the BigQuery example, copy the following code to a file called `wf.py`, modifying as needed. + +```{note} + +In some cases, you will need to store credentials in your local environment when testing locally. +For example, you need to set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable when running BigQuery tasks to test the BigQuery agent. + +``` + +```python +class BigQueryTask(AsyncAgentExecutorMixin, SQLTask[BigQueryConfig]): + def __init__(self, name: str, **kwargs): + ... + + +# Instantiate the task class. Flytekit will automatically call the agent +# to `create`, `get`, or `delete` the job. +bigquery_doge_coin = BigQueryTask( + name=f"bigquery.doge_coin", + inputs=kwtypes(version=int), + query_template="SELECT * FROM `bigquery-public-data.crypto_dogecoin.transactions` WHERE version = @version LIMIT 10;", + output_structured_dataset_type=StructuredDataset, + task_config=BigQueryConfig(ProjectID="flyte-test-340607") +) +``` + +You can run the above example task locally and test the agent with the following command: + +```bash +pyflyte run wf.py bigquery_doge_coin --version 10 +``` diff --git a/docs/index.md b/docs/index.md index cb49256803f..9df04ccd785 100644 --- a/docs/index.md +++ b/docs/index.md @@ -138,6 +138,7 @@ Introduction Quickstart guide Getting started with workflow development Flyte fundamentals +Flyte agents Core use cases ``` From 94e433be816bcca7d4dc603596e970db268c6e0d Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Fri, 23 Feb 2024 15:03:22 -0800 Subject: [PATCH 039/107] Agents protocol refactor (#4874) Signed-off-by: Haytham Abuelfutuh Signed-off-by: Kevin Su Co-authored-by: Haytham Abuelfutuh --- .../go/admin/mocks/AsyncAgentServiceClient.go | 12 +- .../go/admin/mocks/AsyncAgentServiceServer.go | 27 +- .../AsyncAgentService_CreateTaskClient.go | 296 ++++ .../AsyncAgentService_CreateTaskServer.go | 258 +++ ...AsyncAgentService_ExecuteTaskSyncClient.go | 296 ++++ ...AsyncAgentService_ExecuteTaskSyncServer.go | 258 +++ .../mocks/AsyncAgentService_GetTaskClient.go | 264 +++ .../AsyncAgentService_GetTaskLogsClient.go | 264 +++ .../AsyncAgentService_GetTaskLogsServer.go | 217 +++ .../mocks/AsyncAgentService_GetTaskServer.go | 217 +++ .../go/admin/mocks/SyncAgentServiceClient.go | 66 + .../go/admin/mocks/SyncAgentServiceServer.go | 45 + .../SyncAgentService_ExecuteTaskSyncClient.go | 296 ++++ .../SyncAgentService_ExecuteTaskSyncServer.go | 258 +++ .../mocks/UnsafeSyncAgentServiceServer.go | 15 + flyteidl/gen/pb-es/flyteidl/admin/agent_pb.ts | 499 +++++- .../pb-es/flyteidl/service/agent_connect.ts | 30 +- flyteidl/gen/pb-go/flyteidl/admin/agent.pb.go | 1441 ++++++++++++---- .../gen/pb-go/flyteidl/service/agent.pb.go | 216 ++- .../pb-go/flyteidl/service/agent_grpc.pb.go | 206 ++- .../gateway/flyteidl/service/agent.pb.gw.go | 894 +++++++++- .../flyteidl/service/agent.swagger.json | 535 +++++- flyteidl/gen/pb-js/flyteidl.d.ts | 551 ++++++- flyteidl/gen/pb-js/flyteidl.js | 1446 +++++++++++++++-- .../gen/pb_python/flyteidl/admin/agent_pb2.py | 114 +- .../pb_python/flyteidl/admin/agent_pb2.pyi | 126 +- .../pb_python/flyteidl/service/agent_pb2.py | 24 +- .../flyteidl/service/agent_pb2_grpc.py | 79 +- flyteidl/gen/pb_rust/flyteidl.admin.rs | 153 +- flyteidl/gen/pb_rust/flyteidl.core.rs | 386 ++--- flyteidl/protos/flyteidl/admin/agent.proto | 111 +- flyteidl/protos/flyteidl/service/agent.proto | 50 +- .../go/tasks/plugins/webapi/agent/client.go | 74 +- .../tasks/plugins/webapi/agent/client_test.go | 12 + .../go/tasks/plugins/webapi/agent/config.go | 12 +- .../tasks/plugins/webapi/agent/config_test.go | 2 +- .../plugins/webapi/agent/integration_test.go | 107 +- .../agent/mocks/AgentMetadataServiceClient.go | 114 -- .../agent/mocks/AsyncAgentServiceClient.go | 258 --- .../go/tasks/plugins/webapi/agent/plugin.go | 208 ++- .../tasks/plugins/webapi/agent/plugin_test.go | 46 +- 41 files changed, 8944 insertions(+), 1539 deletions(-) create mode 100644 flyteidl/clients/go/admin/mocks/AsyncAgentService_CreateTaskClient.go create mode 100644 flyteidl/clients/go/admin/mocks/AsyncAgentService_CreateTaskServer.go create mode 100644 flyteidl/clients/go/admin/mocks/AsyncAgentService_ExecuteTaskSyncClient.go create mode 100644 flyteidl/clients/go/admin/mocks/AsyncAgentService_ExecuteTaskSyncServer.go create mode 100644 flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskClient.go create mode 100644 flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go create mode 100644 flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go create mode 100644 flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskServer.go create mode 100644 flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go create mode 100644 flyteidl/clients/go/admin/mocks/SyncAgentServiceServer.go create mode 100644 flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go create mode 100644 flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go create mode 100644 flyteidl/clients/go/admin/mocks/UnsafeSyncAgentServiceServer.go delete mode 100644 flyteplugins/go/tasks/plugins/webapi/agent/mocks/AgentMetadataServiceClient.go delete mode 100644 flyteplugins/go/tasks/plugins/webapi/agent/mocks/AsyncAgentServiceClient.go diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go index f11ef1adfe7..0103e3f2937 100644 --- a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go @@ -10,6 +10,8 @@ import ( grpc "google.golang.org/grpc" mock "github.com/stretchr/testify/mock" + + service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service" ) // AsyncAgentServiceClient is an autogenerated mock type for the AsyncAgentServiceClient type @@ -165,7 +167,7 @@ type AsyncAgentServiceClient_GetTaskLogs struct { *mock.Call } -func (_m AsyncAgentServiceClient_GetTaskLogs) Return(_a0 *admin.GetTaskLogsResponse, _a1 error) *AsyncAgentServiceClient_GetTaskLogs { +func (_m AsyncAgentServiceClient_GetTaskLogs) Return(_a0 service.AsyncAgentService_GetTaskLogsClient, _a1 error) *AsyncAgentServiceClient_GetTaskLogs { return &AsyncAgentServiceClient_GetTaskLogs{Call: _m.Call.Return(_a0, _a1)} } @@ -180,7 +182,7 @@ func (_m *AsyncAgentServiceClient) OnGetTaskLogsMatch(matchers ...interface{}) * } // GetTaskLogs provides a mock function with given fields: ctx, in, opts -func (_m *AsyncAgentServiceClient) GetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) (*admin.GetTaskLogsResponse, error) { +func (_m *AsyncAgentServiceClient) GetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) (service.AsyncAgentService_GetTaskLogsClient, error) { _va := make([]interface{}, len(opts)) for _i := range opts { _va[_i] = opts[_i] @@ -190,12 +192,12 @@ func (_m *AsyncAgentServiceClient) GetTaskLogs(ctx context.Context, in *admin.Ge _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *admin.GetTaskLogsResponse - if rf, ok := ret.Get(0).(func(context.Context, *admin.GetTaskLogsRequest, ...grpc.CallOption) *admin.GetTaskLogsResponse); ok { + var r0 service.AsyncAgentService_GetTaskLogsClient + if rf, ok := ret.Get(0).(func(context.Context, *admin.GetTaskLogsRequest, ...grpc.CallOption) service.AsyncAgentService_GetTaskLogsClient); ok { r0 = rf(ctx, in, opts...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*admin.GetTaskLogsResponse) + r0 = ret.Get(0).(service.AsyncAgentService_GetTaskLogsClient) } } diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go index 1803e286eb2..76b618f7915 100644 --- a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go @@ -8,6 +8,8 @@ import ( admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" mock "github.com/stretchr/testify/mock" + + service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service" ) // AsyncAgentServiceServer is an autogenerated mock type for the AsyncAgentServiceServer type @@ -142,11 +144,11 @@ type AsyncAgentServiceServer_GetTaskLogs struct { *mock.Call } -func (_m AsyncAgentServiceServer_GetTaskLogs) Return(_a0 *admin.GetTaskLogsResponse, _a1 error) *AsyncAgentServiceServer_GetTaskLogs { - return &AsyncAgentServiceServer_GetTaskLogs{Call: _m.Call.Return(_a0, _a1)} +func (_m AsyncAgentServiceServer_GetTaskLogs) Return(_a0 error) *AsyncAgentServiceServer_GetTaskLogs { + return &AsyncAgentServiceServer_GetTaskLogs{Call: _m.Call.Return(_a0)} } -func (_m *AsyncAgentServiceServer) OnGetTaskLogs(_a0 context.Context, _a1 *admin.GetTaskLogsRequest) *AsyncAgentServiceServer_GetTaskLogs { +func (_m *AsyncAgentServiceServer) OnGetTaskLogs(_a0 *admin.GetTaskLogsRequest, _a1 service.AsyncAgentService_GetTaskLogsServer) *AsyncAgentServiceServer_GetTaskLogs { c_call := _m.On("GetTaskLogs", _a0, _a1) return &AsyncAgentServiceServer_GetTaskLogs{Call: c_call} } @@ -157,26 +159,17 @@ func (_m *AsyncAgentServiceServer) OnGetTaskLogsMatch(matchers ...interface{}) * } // GetTaskLogs provides a mock function with given fields: _a0, _a1 -func (_m *AsyncAgentServiceServer) GetTaskLogs(_a0 context.Context, _a1 *admin.GetTaskLogsRequest) (*admin.GetTaskLogsResponse, error) { +func (_m *AsyncAgentServiceServer) GetTaskLogs(_a0 *admin.GetTaskLogsRequest, _a1 service.AsyncAgentService_GetTaskLogsServer) error { ret := _m.Called(_a0, _a1) - var r0 *admin.GetTaskLogsResponse - if rf, ok := ret.Get(0).(func(context.Context, *admin.GetTaskLogsRequest) *admin.GetTaskLogsResponse); ok { + var r0 error + if rf, ok := ret.Get(0).(func(*admin.GetTaskLogsRequest, service.AsyncAgentService_GetTaskLogsServer) error); ok { r0 = rf(_a0, _a1) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*admin.GetTaskLogsResponse) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *admin.GetTaskLogsRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) + r0 = ret.Error(0) } - return r0, r1 + return r0 } type AsyncAgentServiceServer_GetTaskMetrics struct { diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_CreateTaskClient.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_CreateTaskClient.go new file mode 100644 index 00000000000..52c063d197b --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_CreateTaskClient.go @@ -0,0 +1,296 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// AsyncAgentService_CreateTaskClient is an autogenerated mock type for the AsyncAgentService_CreateTaskClient type +type AsyncAgentService_CreateTaskClient struct { + mock.Mock +} + +type AsyncAgentService_CreateTaskClient_CloseAndRecv struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskClient_CloseAndRecv) Return(_a0 *admin.CreateTaskResponse, _a1 error) *AsyncAgentService_CreateTaskClient_CloseAndRecv { + return &AsyncAgentService_CreateTaskClient_CloseAndRecv{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnCloseAndRecv() *AsyncAgentService_CreateTaskClient_CloseAndRecv { + c_call := _m.On("CloseAndRecv") + return &AsyncAgentService_CreateTaskClient_CloseAndRecv{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnCloseAndRecvMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskClient_CloseAndRecv { + c_call := _m.On("CloseAndRecv", matchers...) + return &AsyncAgentService_CreateTaskClient_CloseAndRecv{Call: c_call} +} + +// CloseAndRecv provides a mock function with given fields: +func (_m *AsyncAgentService_CreateTaskClient) CloseAndRecv() (*admin.CreateTaskResponse, error) { + ret := _m.Called() + + var r0 *admin.CreateTaskResponse + if rf, ok := ret.Get(0).(func() *admin.CreateTaskResponse); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.CreateTaskResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_CreateTaskClient_CloseSend struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskClient_CloseSend) Return(_a0 error) *AsyncAgentService_CreateTaskClient_CloseSend { + return &AsyncAgentService_CreateTaskClient_CloseSend{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnCloseSend() *AsyncAgentService_CreateTaskClient_CloseSend { + c_call := _m.On("CloseSend") + return &AsyncAgentService_CreateTaskClient_CloseSend{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnCloseSendMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskClient_CloseSend { + c_call := _m.On("CloseSend", matchers...) + return &AsyncAgentService_CreateTaskClient_CloseSend{Call: c_call} +} + +// CloseSend provides a mock function with given fields: +func (_m *AsyncAgentService_CreateTaskClient) CloseSend() error { + ret := _m.Called() + + var r0 error + if rf, ok := ret.Get(0).(func() error); ok { + r0 = rf() + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_CreateTaskClient_Context struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskClient_Context) Return(_a0 context.Context) *AsyncAgentService_CreateTaskClient_Context { + return &AsyncAgentService_CreateTaskClient_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnContext() *AsyncAgentService_CreateTaskClient_Context { + c_call := _m.On("Context") + return &AsyncAgentService_CreateTaskClient_Context{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnContextMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskClient_Context { + c_call := _m.On("Context", matchers...) + return &AsyncAgentService_CreateTaskClient_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *AsyncAgentService_CreateTaskClient) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type AsyncAgentService_CreateTaskClient_Header struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskClient_Header) Return(_a0 metadata.MD, _a1 error) *AsyncAgentService_CreateTaskClient_Header { + return &AsyncAgentService_CreateTaskClient_Header{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnHeader() *AsyncAgentService_CreateTaskClient_Header { + c_call := _m.On("Header") + return &AsyncAgentService_CreateTaskClient_Header{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnHeaderMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskClient_Header { + c_call := _m.On("Header", matchers...) + return &AsyncAgentService_CreateTaskClient_Header{Call: c_call} +} + +// Header provides a mock function with given fields: +func (_m *AsyncAgentService_CreateTaskClient) Header() (metadata.MD, error) { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_CreateTaskClient_RecvMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskClient_RecvMsg) Return(_a0 error) *AsyncAgentService_CreateTaskClient_RecvMsg { + return &AsyncAgentService_CreateTaskClient_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnRecvMsg(m interface{}) *AsyncAgentService_CreateTaskClient_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &AsyncAgentService_CreateTaskClient_RecvMsg{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnRecvMsgMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskClient_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &AsyncAgentService_CreateTaskClient_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_CreateTaskClient) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_CreateTaskClient_Send struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskClient_Send) Return(_a0 error) *AsyncAgentService_CreateTaskClient_Send { + return &AsyncAgentService_CreateTaskClient_Send{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnSend(_a0 *admin.CreateTaskRequest) *AsyncAgentService_CreateTaskClient_Send { + c_call := _m.On("Send", _a0) + return &AsyncAgentService_CreateTaskClient_Send{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnSendMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskClient_Send { + c_call := _m.On("Send", matchers...) + return &AsyncAgentService_CreateTaskClient_Send{Call: c_call} +} + +// Send provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_CreateTaskClient) Send(_a0 *admin.CreateTaskRequest) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*admin.CreateTaskRequest) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_CreateTaskClient_SendMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskClient_SendMsg) Return(_a0 error) *AsyncAgentService_CreateTaskClient_SendMsg { + return &AsyncAgentService_CreateTaskClient_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnSendMsg(m interface{}) *AsyncAgentService_CreateTaskClient_SendMsg { + c_call := _m.On("SendMsg", m) + return &AsyncAgentService_CreateTaskClient_SendMsg{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnSendMsgMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskClient_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &AsyncAgentService_CreateTaskClient_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_CreateTaskClient) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_CreateTaskClient_Trailer struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskClient_Trailer) Return(_a0 metadata.MD) *AsyncAgentService_CreateTaskClient_Trailer { + return &AsyncAgentService_CreateTaskClient_Trailer{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnTrailer() *AsyncAgentService_CreateTaskClient_Trailer { + c_call := _m.On("Trailer") + return &AsyncAgentService_CreateTaskClient_Trailer{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskClient) OnTrailerMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskClient_Trailer { + c_call := _m.On("Trailer", matchers...) + return &AsyncAgentService_CreateTaskClient_Trailer{Call: c_call} +} + +// Trailer provides a mock function with given fields: +func (_m *AsyncAgentService_CreateTaskClient) Trailer() metadata.MD { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + return r0 +} diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_CreateTaskServer.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_CreateTaskServer.go new file mode 100644 index 00000000000..68268ce939c --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_CreateTaskServer.go @@ -0,0 +1,258 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// AsyncAgentService_CreateTaskServer is an autogenerated mock type for the AsyncAgentService_CreateTaskServer type +type AsyncAgentService_CreateTaskServer struct { + mock.Mock +} + +type AsyncAgentService_CreateTaskServer_Context struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskServer_Context) Return(_a0 context.Context) *AsyncAgentService_CreateTaskServer_Context { + return &AsyncAgentService_CreateTaskServer_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnContext() *AsyncAgentService_CreateTaskServer_Context { + c_call := _m.On("Context") + return &AsyncAgentService_CreateTaskServer_Context{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnContextMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskServer_Context { + c_call := _m.On("Context", matchers...) + return &AsyncAgentService_CreateTaskServer_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *AsyncAgentService_CreateTaskServer) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type AsyncAgentService_CreateTaskServer_Recv struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskServer_Recv) Return(_a0 *admin.CreateTaskRequest, _a1 error) *AsyncAgentService_CreateTaskServer_Recv { + return &AsyncAgentService_CreateTaskServer_Recv{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnRecv() *AsyncAgentService_CreateTaskServer_Recv { + c_call := _m.On("Recv") + return &AsyncAgentService_CreateTaskServer_Recv{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnRecvMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskServer_Recv { + c_call := _m.On("Recv", matchers...) + return &AsyncAgentService_CreateTaskServer_Recv{Call: c_call} +} + +// Recv provides a mock function with given fields: +func (_m *AsyncAgentService_CreateTaskServer) Recv() (*admin.CreateTaskRequest, error) { + ret := _m.Called() + + var r0 *admin.CreateTaskRequest + if rf, ok := ret.Get(0).(func() *admin.CreateTaskRequest); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.CreateTaskRequest) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_CreateTaskServer_RecvMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskServer_RecvMsg) Return(_a0 error) *AsyncAgentService_CreateTaskServer_RecvMsg { + return &AsyncAgentService_CreateTaskServer_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnRecvMsg(m interface{}) *AsyncAgentService_CreateTaskServer_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &AsyncAgentService_CreateTaskServer_RecvMsg{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnRecvMsgMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskServer_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &AsyncAgentService_CreateTaskServer_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_CreateTaskServer) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_CreateTaskServer_SendAndClose struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskServer_SendAndClose) Return(_a0 error) *AsyncAgentService_CreateTaskServer_SendAndClose { + return &AsyncAgentService_CreateTaskServer_SendAndClose{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnSendAndClose(_a0 *admin.CreateTaskResponse) *AsyncAgentService_CreateTaskServer_SendAndClose { + c_call := _m.On("SendAndClose", _a0) + return &AsyncAgentService_CreateTaskServer_SendAndClose{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnSendAndCloseMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskServer_SendAndClose { + c_call := _m.On("SendAndClose", matchers...) + return &AsyncAgentService_CreateTaskServer_SendAndClose{Call: c_call} +} + +// SendAndClose provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_CreateTaskServer) SendAndClose(_a0 *admin.CreateTaskResponse) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*admin.CreateTaskResponse) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_CreateTaskServer_SendHeader struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskServer_SendHeader) Return(_a0 error) *AsyncAgentService_CreateTaskServer_SendHeader { + return &AsyncAgentService_CreateTaskServer_SendHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnSendHeader(_a0 metadata.MD) *AsyncAgentService_CreateTaskServer_SendHeader { + c_call := _m.On("SendHeader", _a0) + return &AsyncAgentService_CreateTaskServer_SendHeader{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnSendHeaderMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskServer_SendHeader { + c_call := _m.On("SendHeader", matchers...) + return &AsyncAgentService_CreateTaskServer_SendHeader{Call: c_call} +} + +// SendHeader provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_CreateTaskServer) SendHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_CreateTaskServer_SendMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskServer_SendMsg) Return(_a0 error) *AsyncAgentService_CreateTaskServer_SendMsg { + return &AsyncAgentService_CreateTaskServer_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnSendMsg(m interface{}) *AsyncAgentService_CreateTaskServer_SendMsg { + c_call := _m.On("SendMsg", m) + return &AsyncAgentService_CreateTaskServer_SendMsg{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnSendMsgMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskServer_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &AsyncAgentService_CreateTaskServer_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_CreateTaskServer) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_CreateTaskServer_SetHeader struct { + *mock.Call +} + +func (_m AsyncAgentService_CreateTaskServer_SetHeader) Return(_a0 error) *AsyncAgentService_CreateTaskServer_SetHeader { + return &AsyncAgentService_CreateTaskServer_SetHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnSetHeader(_a0 metadata.MD) *AsyncAgentService_CreateTaskServer_SetHeader { + c_call := _m.On("SetHeader", _a0) + return &AsyncAgentService_CreateTaskServer_SetHeader{Call: c_call} +} + +func (_m *AsyncAgentService_CreateTaskServer) OnSetHeaderMatch(matchers ...interface{}) *AsyncAgentService_CreateTaskServer_SetHeader { + c_call := _m.On("SetHeader", matchers...) + return &AsyncAgentService_CreateTaskServer_SetHeader{Call: c_call} +} + +// SetHeader provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_CreateTaskServer) SetHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SetTrailer provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_CreateTaskServer) SetTrailer(_a0 metadata.MD) { + _m.Called(_a0) +} diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_ExecuteTaskSyncClient.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_ExecuteTaskSyncClient.go new file mode 100644 index 00000000000..d75c24464e4 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_ExecuteTaskSyncClient.go @@ -0,0 +1,296 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// AsyncAgentService_ExecuteTaskSyncClient is an autogenerated mock type for the AsyncAgentService_ExecuteTaskSyncClient type +type AsyncAgentService_ExecuteTaskSyncClient struct { + mock.Mock +} + +type AsyncAgentService_ExecuteTaskSyncClient_CloseSend struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncClient_CloseSend) Return(_a0 error) *AsyncAgentService_ExecuteTaskSyncClient_CloseSend { + return &AsyncAgentService_ExecuteTaskSyncClient_CloseSend{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnCloseSend() *AsyncAgentService_ExecuteTaskSyncClient_CloseSend { + c_call := _m.On("CloseSend") + return &AsyncAgentService_ExecuteTaskSyncClient_CloseSend{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnCloseSendMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncClient_CloseSend { + c_call := _m.On("CloseSend", matchers...) + return &AsyncAgentService_ExecuteTaskSyncClient_CloseSend{Call: c_call} +} + +// CloseSend provides a mock function with given fields: +func (_m *AsyncAgentService_ExecuteTaskSyncClient) CloseSend() error { + ret := _m.Called() + + var r0 error + if rf, ok := ret.Get(0).(func() error); ok { + r0 = rf() + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncClient_Context struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncClient_Context) Return(_a0 context.Context) *AsyncAgentService_ExecuteTaskSyncClient_Context { + return &AsyncAgentService_ExecuteTaskSyncClient_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnContext() *AsyncAgentService_ExecuteTaskSyncClient_Context { + c_call := _m.On("Context") + return &AsyncAgentService_ExecuteTaskSyncClient_Context{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnContextMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncClient_Context { + c_call := _m.On("Context", matchers...) + return &AsyncAgentService_ExecuteTaskSyncClient_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *AsyncAgentService_ExecuteTaskSyncClient) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncClient_Header struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncClient_Header) Return(_a0 metadata.MD, _a1 error) *AsyncAgentService_ExecuteTaskSyncClient_Header { + return &AsyncAgentService_ExecuteTaskSyncClient_Header{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnHeader() *AsyncAgentService_ExecuteTaskSyncClient_Header { + c_call := _m.On("Header") + return &AsyncAgentService_ExecuteTaskSyncClient_Header{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnHeaderMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncClient_Header { + c_call := _m.On("Header", matchers...) + return &AsyncAgentService_ExecuteTaskSyncClient_Header{Call: c_call} +} + +// Header provides a mock function with given fields: +func (_m *AsyncAgentService_ExecuteTaskSyncClient) Header() (metadata.MD, error) { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_ExecuteTaskSyncClient_Recv struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncClient_Recv) Return(_a0 *admin.ExecuteTaskSyncResponse, _a1 error) *AsyncAgentService_ExecuteTaskSyncClient_Recv { + return &AsyncAgentService_ExecuteTaskSyncClient_Recv{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnRecv() *AsyncAgentService_ExecuteTaskSyncClient_Recv { + c_call := _m.On("Recv") + return &AsyncAgentService_ExecuteTaskSyncClient_Recv{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnRecvMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncClient_Recv { + c_call := _m.On("Recv", matchers...) + return &AsyncAgentService_ExecuteTaskSyncClient_Recv{Call: c_call} +} + +// Recv provides a mock function with given fields: +func (_m *AsyncAgentService_ExecuteTaskSyncClient) Recv() (*admin.ExecuteTaskSyncResponse, error) { + ret := _m.Called() + + var r0 *admin.ExecuteTaskSyncResponse + if rf, ok := ret.Get(0).(func() *admin.ExecuteTaskSyncResponse); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.ExecuteTaskSyncResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_ExecuteTaskSyncClient_RecvMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncClient_RecvMsg) Return(_a0 error) *AsyncAgentService_ExecuteTaskSyncClient_RecvMsg { + return &AsyncAgentService_ExecuteTaskSyncClient_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnRecvMsg(m interface{}) *AsyncAgentService_ExecuteTaskSyncClient_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &AsyncAgentService_ExecuteTaskSyncClient_RecvMsg{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnRecvMsgMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncClient_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &AsyncAgentService_ExecuteTaskSyncClient_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_ExecuteTaskSyncClient) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncClient_Send struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncClient_Send) Return(_a0 error) *AsyncAgentService_ExecuteTaskSyncClient_Send { + return &AsyncAgentService_ExecuteTaskSyncClient_Send{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnSend(_a0 *admin.ExecuteTaskSyncRequest) *AsyncAgentService_ExecuteTaskSyncClient_Send { + c_call := _m.On("Send", _a0) + return &AsyncAgentService_ExecuteTaskSyncClient_Send{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnSendMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncClient_Send { + c_call := _m.On("Send", matchers...) + return &AsyncAgentService_ExecuteTaskSyncClient_Send{Call: c_call} +} + +// Send provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_ExecuteTaskSyncClient) Send(_a0 *admin.ExecuteTaskSyncRequest) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*admin.ExecuteTaskSyncRequest) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncClient_SendMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncClient_SendMsg) Return(_a0 error) *AsyncAgentService_ExecuteTaskSyncClient_SendMsg { + return &AsyncAgentService_ExecuteTaskSyncClient_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnSendMsg(m interface{}) *AsyncAgentService_ExecuteTaskSyncClient_SendMsg { + c_call := _m.On("SendMsg", m) + return &AsyncAgentService_ExecuteTaskSyncClient_SendMsg{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnSendMsgMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncClient_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &AsyncAgentService_ExecuteTaskSyncClient_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_ExecuteTaskSyncClient) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncClient_Trailer struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncClient_Trailer) Return(_a0 metadata.MD) *AsyncAgentService_ExecuteTaskSyncClient_Trailer { + return &AsyncAgentService_ExecuteTaskSyncClient_Trailer{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnTrailer() *AsyncAgentService_ExecuteTaskSyncClient_Trailer { + c_call := _m.On("Trailer") + return &AsyncAgentService_ExecuteTaskSyncClient_Trailer{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncClient) OnTrailerMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncClient_Trailer { + c_call := _m.On("Trailer", matchers...) + return &AsyncAgentService_ExecuteTaskSyncClient_Trailer{Call: c_call} +} + +// Trailer provides a mock function with given fields: +func (_m *AsyncAgentService_ExecuteTaskSyncClient) Trailer() metadata.MD { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + return r0 +} diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_ExecuteTaskSyncServer.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_ExecuteTaskSyncServer.go new file mode 100644 index 00000000000..a42eb507a37 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_ExecuteTaskSyncServer.go @@ -0,0 +1,258 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// AsyncAgentService_ExecuteTaskSyncServer is an autogenerated mock type for the AsyncAgentService_ExecuteTaskSyncServer type +type AsyncAgentService_ExecuteTaskSyncServer struct { + mock.Mock +} + +type AsyncAgentService_ExecuteTaskSyncServer_Context struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncServer_Context) Return(_a0 context.Context) *AsyncAgentService_ExecuteTaskSyncServer_Context { + return &AsyncAgentService_ExecuteTaskSyncServer_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnContext() *AsyncAgentService_ExecuteTaskSyncServer_Context { + c_call := _m.On("Context") + return &AsyncAgentService_ExecuteTaskSyncServer_Context{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnContextMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncServer_Context { + c_call := _m.On("Context", matchers...) + return &AsyncAgentService_ExecuteTaskSyncServer_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *AsyncAgentService_ExecuteTaskSyncServer) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncServer_Recv struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncServer_Recv) Return(_a0 *admin.ExecuteTaskSyncRequest, _a1 error) *AsyncAgentService_ExecuteTaskSyncServer_Recv { + return &AsyncAgentService_ExecuteTaskSyncServer_Recv{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnRecv() *AsyncAgentService_ExecuteTaskSyncServer_Recv { + c_call := _m.On("Recv") + return &AsyncAgentService_ExecuteTaskSyncServer_Recv{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnRecvMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncServer_Recv { + c_call := _m.On("Recv", matchers...) + return &AsyncAgentService_ExecuteTaskSyncServer_Recv{Call: c_call} +} + +// Recv provides a mock function with given fields: +func (_m *AsyncAgentService_ExecuteTaskSyncServer) Recv() (*admin.ExecuteTaskSyncRequest, error) { + ret := _m.Called() + + var r0 *admin.ExecuteTaskSyncRequest + if rf, ok := ret.Get(0).(func() *admin.ExecuteTaskSyncRequest); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.ExecuteTaskSyncRequest) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_ExecuteTaskSyncServer_RecvMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncServer_RecvMsg) Return(_a0 error) *AsyncAgentService_ExecuteTaskSyncServer_RecvMsg { + return &AsyncAgentService_ExecuteTaskSyncServer_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnRecvMsg(m interface{}) *AsyncAgentService_ExecuteTaskSyncServer_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &AsyncAgentService_ExecuteTaskSyncServer_RecvMsg{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnRecvMsgMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncServer_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &AsyncAgentService_ExecuteTaskSyncServer_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_ExecuteTaskSyncServer) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncServer_Send struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncServer_Send) Return(_a0 error) *AsyncAgentService_ExecuteTaskSyncServer_Send { + return &AsyncAgentService_ExecuteTaskSyncServer_Send{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnSend(_a0 *admin.ExecuteTaskSyncResponse) *AsyncAgentService_ExecuteTaskSyncServer_Send { + c_call := _m.On("Send", _a0) + return &AsyncAgentService_ExecuteTaskSyncServer_Send{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnSendMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncServer_Send { + c_call := _m.On("Send", matchers...) + return &AsyncAgentService_ExecuteTaskSyncServer_Send{Call: c_call} +} + +// Send provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_ExecuteTaskSyncServer) Send(_a0 *admin.ExecuteTaskSyncResponse) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*admin.ExecuteTaskSyncResponse) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncServer_SendHeader struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncServer_SendHeader) Return(_a0 error) *AsyncAgentService_ExecuteTaskSyncServer_SendHeader { + return &AsyncAgentService_ExecuteTaskSyncServer_SendHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnSendHeader(_a0 metadata.MD) *AsyncAgentService_ExecuteTaskSyncServer_SendHeader { + c_call := _m.On("SendHeader", _a0) + return &AsyncAgentService_ExecuteTaskSyncServer_SendHeader{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnSendHeaderMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncServer_SendHeader { + c_call := _m.On("SendHeader", matchers...) + return &AsyncAgentService_ExecuteTaskSyncServer_SendHeader{Call: c_call} +} + +// SendHeader provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_ExecuteTaskSyncServer) SendHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncServer_SendMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncServer_SendMsg) Return(_a0 error) *AsyncAgentService_ExecuteTaskSyncServer_SendMsg { + return &AsyncAgentService_ExecuteTaskSyncServer_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnSendMsg(m interface{}) *AsyncAgentService_ExecuteTaskSyncServer_SendMsg { + c_call := _m.On("SendMsg", m) + return &AsyncAgentService_ExecuteTaskSyncServer_SendMsg{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnSendMsgMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncServer_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &AsyncAgentService_ExecuteTaskSyncServer_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_ExecuteTaskSyncServer) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_ExecuteTaskSyncServer_SetHeader struct { + *mock.Call +} + +func (_m AsyncAgentService_ExecuteTaskSyncServer_SetHeader) Return(_a0 error) *AsyncAgentService_ExecuteTaskSyncServer_SetHeader { + return &AsyncAgentService_ExecuteTaskSyncServer_SetHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnSetHeader(_a0 metadata.MD) *AsyncAgentService_ExecuteTaskSyncServer_SetHeader { + c_call := _m.On("SetHeader", _a0) + return &AsyncAgentService_ExecuteTaskSyncServer_SetHeader{Call: c_call} +} + +func (_m *AsyncAgentService_ExecuteTaskSyncServer) OnSetHeaderMatch(matchers ...interface{}) *AsyncAgentService_ExecuteTaskSyncServer_SetHeader { + c_call := _m.On("SetHeader", matchers...) + return &AsyncAgentService_ExecuteTaskSyncServer_SetHeader{Call: c_call} +} + +// SetHeader provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_ExecuteTaskSyncServer) SetHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SetTrailer provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_ExecuteTaskSyncServer) SetTrailer(_a0 metadata.MD) { + _m.Called(_a0) +} diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskClient.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskClient.go new file mode 100644 index 00000000000..d163efb0989 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskClient.go @@ -0,0 +1,264 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// AsyncAgentService_GetTaskClient is an autogenerated mock type for the AsyncAgentService_GetTaskClient type +type AsyncAgentService_GetTaskClient struct { + mock.Mock +} + +type AsyncAgentService_GetTaskClient_CloseSend struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskClient_CloseSend) Return(_a0 error) *AsyncAgentService_GetTaskClient_CloseSend { + return &AsyncAgentService_GetTaskClient_CloseSend{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskClient) OnCloseSend() *AsyncAgentService_GetTaskClient_CloseSend { + c_call := _m.On("CloseSend") + return &AsyncAgentService_GetTaskClient_CloseSend{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskClient) OnCloseSendMatch(matchers ...interface{}) *AsyncAgentService_GetTaskClient_CloseSend { + c_call := _m.On("CloseSend", matchers...) + return &AsyncAgentService_GetTaskClient_CloseSend{Call: c_call} +} + +// CloseSend provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskClient) CloseSend() error { + ret := _m.Called() + + var r0 error + if rf, ok := ret.Get(0).(func() error); ok { + r0 = rf() + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskClient_Context struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskClient_Context) Return(_a0 context.Context) *AsyncAgentService_GetTaskClient_Context { + return &AsyncAgentService_GetTaskClient_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskClient) OnContext() *AsyncAgentService_GetTaskClient_Context { + c_call := _m.On("Context") + return &AsyncAgentService_GetTaskClient_Context{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskClient) OnContextMatch(matchers ...interface{}) *AsyncAgentService_GetTaskClient_Context { + c_call := _m.On("Context", matchers...) + return &AsyncAgentService_GetTaskClient_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskClient) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type AsyncAgentService_GetTaskClient_Header struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskClient_Header) Return(_a0 metadata.MD, _a1 error) *AsyncAgentService_GetTaskClient_Header { + return &AsyncAgentService_GetTaskClient_Header{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_GetTaskClient) OnHeader() *AsyncAgentService_GetTaskClient_Header { + c_call := _m.On("Header") + return &AsyncAgentService_GetTaskClient_Header{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskClient) OnHeaderMatch(matchers ...interface{}) *AsyncAgentService_GetTaskClient_Header { + c_call := _m.On("Header", matchers...) + return &AsyncAgentService_GetTaskClient_Header{Call: c_call} +} + +// Header provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskClient) Header() (metadata.MD, error) { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_GetTaskClient_Recv struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskClient_Recv) Return(_a0 *admin.GetTaskResponse, _a1 error) *AsyncAgentService_GetTaskClient_Recv { + return &AsyncAgentService_GetTaskClient_Recv{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_GetTaskClient) OnRecv() *AsyncAgentService_GetTaskClient_Recv { + c_call := _m.On("Recv") + return &AsyncAgentService_GetTaskClient_Recv{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskClient) OnRecvMatch(matchers ...interface{}) *AsyncAgentService_GetTaskClient_Recv { + c_call := _m.On("Recv", matchers...) + return &AsyncAgentService_GetTaskClient_Recv{Call: c_call} +} + +// Recv provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskClient) Recv() (*admin.GetTaskResponse, error) { + ret := _m.Called() + + var r0 *admin.GetTaskResponse + if rf, ok := ret.Get(0).(func() *admin.GetTaskResponse); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.GetTaskResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_GetTaskClient_RecvMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskClient_RecvMsg) Return(_a0 error) *AsyncAgentService_GetTaskClient_RecvMsg { + return &AsyncAgentService_GetTaskClient_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskClient) OnRecvMsg(m interface{}) *AsyncAgentService_GetTaskClient_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &AsyncAgentService_GetTaskClient_RecvMsg{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskClient) OnRecvMsgMatch(matchers ...interface{}) *AsyncAgentService_GetTaskClient_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &AsyncAgentService_GetTaskClient_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_GetTaskClient) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskClient_SendMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskClient_SendMsg) Return(_a0 error) *AsyncAgentService_GetTaskClient_SendMsg { + return &AsyncAgentService_GetTaskClient_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskClient) OnSendMsg(m interface{}) *AsyncAgentService_GetTaskClient_SendMsg { + c_call := _m.On("SendMsg", m) + return &AsyncAgentService_GetTaskClient_SendMsg{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskClient) OnSendMsgMatch(matchers ...interface{}) *AsyncAgentService_GetTaskClient_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &AsyncAgentService_GetTaskClient_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_GetTaskClient) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskClient_Trailer struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskClient_Trailer) Return(_a0 metadata.MD) *AsyncAgentService_GetTaskClient_Trailer { + return &AsyncAgentService_GetTaskClient_Trailer{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskClient) OnTrailer() *AsyncAgentService_GetTaskClient_Trailer { + c_call := _m.On("Trailer") + return &AsyncAgentService_GetTaskClient_Trailer{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskClient) OnTrailerMatch(matchers ...interface{}) *AsyncAgentService_GetTaskClient_Trailer { + c_call := _m.On("Trailer", matchers...) + return &AsyncAgentService_GetTaskClient_Trailer{Call: c_call} +} + +// Trailer provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskClient) Trailer() metadata.MD { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + return r0 +} diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go new file mode 100644 index 00000000000..a28d4ac4979 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go @@ -0,0 +1,264 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// AsyncAgentService_GetTaskLogsClient is an autogenerated mock type for the AsyncAgentService_GetTaskLogsClient type +type AsyncAgentService_GetTaskLogsClient struct { + mock.Mock +} + +type AsyncAgentService_GetTaskLogsClient_CloseSend struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsClient_CloseSend) Return(_a0 error) *AsyncAgentService_GetTaskLogsClient_CloseSend { + return &AsyncAgentService_GetTaskLogsClient_CloseSend{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnCloseSend() *AsyncAgentService_GetTaskLogsClient_CloseSend { + c_call := _m.On("CloseSend") + return &AsyncAgentService_GetTaskLogsClient_CloseSend{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnCloseSendMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsClient_CloseSend { + c_call := _m.On("CloseSend", matchers...) + return &AsyncAgentService_GetTaskLogsClient_CloseSend{Call: c_call} +} + +// CloseSend provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskLogsClient) CloseSend() error { + ret := _m.Called() + + var r0 error + if rf, ok := ret.Get(0).(func() error); ok { + r0 = rf() + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskLogsClient_Context struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsClient_Context) Return(_a0 context.Context) *AsyncAgentService_GetTaskLogsClient_Context { + return &AsyncAgentService_GetTaskLogsClient_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnContext() *AsyncAgentService_GetTaskLogsClient_Context { + c_call := _m.On("Context") + return &AsyncAgentService_GetTaskLogsClient_Context{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnContextMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsClient_Context { + c_call := _m.On("Context", matchers...) + return &AsyncAgentService_GetTaskLogsClient_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskLogsClient) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type AsyncAgentService_GetTaskLogsClient_Header struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsClient_Header) Return(_a0 metadata.MD, _a1 error) *AsyncAgentService_GetTaskLogsClient_Header { + return &AsyncAgentService_GetTaskLogsClient_Header{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnHeader() *AsyncAgentService_GetTaskLogsClient_Header { + c_call := _m.On("Header") + return &AsyncAgentService_GetTaskLogsClient_Header{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnHeaderMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsClient_Header { + c_call := _m.On("Header", matchers...) + return &AsyncAgentService_GetTaskLogsClient_Header{Call: c_call} +} + +// Header provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskLogsClient) Header() (metadata.MD, error) { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_GetTaskLogsClient_Recv struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsClient_Recv) Return(_a0 *admin.GetTaskLogsResponse, _a1 error) *AsyncAgentService_GetTaskLogsClient_Recv { + return &AsyncAgentService_GetTaskLogsClient_Recv{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnRecv() *AsyncAgentService_GetTaskLogsClient_Recv { + c_call := _m.On("Recv") + return &AsyncAgentService_GetTaskLogsClient_Recv{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnRecvMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsClient_Recv { + c_call := _m.On("Recv", matchers...) + return &AsyncAgentService_GetTaskLogsClient_Recv{Call: c_call} +} + +// Recv provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskLogsClient) Recv() (*admin.GetTaskLogsResponse, error) { + ret := _m.Called() + + var r0 *admin.GetTaskLogsResponse + if rf, ok := ret.Get(0).(func() *admin.GetTaskLogsResponse); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.GetTaskLogsResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type AsyncAgentService_GetTaskLogsClient_RecvMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsClient_RecvMsg) Return(_a0 error) *AsyncAgentService_GetTaskLogsClient_RecvMsg { + return &AsyncAgentService_GetTaskLogsClient_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnRecvMsg(m interface{}) *AsyncAgentService_GetTaskLogsClient_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &AsyncAgentService_GetTaskLogsClient_RecvMsg{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnRecvMsgMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsClient_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &AsyncAgentService_GetTaskLogsClient_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_GetTaskLogsClient) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskLogsClient_SendMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsClient_SendMsg) Return(_a0 error) *AsyncAgentService_GetTaskLogsClient_SendMsg { + return &AsyncAgentService_GetTaskLogsClient_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnSendMsg(m interface{}) *AsyncAgentService_GetTaskLogsClient_SendMsg { + c_call := _m.On("SendMsg", m) + return &AsyncAgentService_GetTaskLogsClient_SendMsg{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnSendMsgMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsClient_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &AsyncAgentService_GetTaskLogsClient_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_GetTaskLogsClient) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskLogsClient_Trailer struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsClient_Trailer) Return(_a0 metadata.MD) *AsyncAgentService_GetTaskLogsClient_Trailer { + return &AsyncAgentService_GetTaskLogsClient_Trailer{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnTrailer() *AsyncAgentService_GetTaskLogsClient_Trailer { + c_call := _m.On("Trailer") + return &AsyncAgentService_GetTaskLogsClient_Trailer{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsClient) OnTrailerMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsClient_Trailer { + c_call := _m.On("Trailer", matchers...) + return &AsyncAgentService_GetTaskLogsClient_Trailer{Call: c_call} +} + +// Trailer provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskLogsClient) Trailer() metadata.MD { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + return r0 +} diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go new file mode 100644 index 00000000000..00d5ad6b489 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go @@ -0,0 +1,217 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// AsyncAgentService_GetTaskLogsServer is an autogenerated mock type for the AsyncAgentService_GetTaskLogsServer type +type AsyncAgentService_GetTaskLogsServer struct { + mock.Mock +} + +type AsyncAgentService_GetTaskLogsServer_Context struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsServer_Context) Return(_a0 context.Context) *AsyncAgentService_GetTaskLogsServer_Context { + return &AsyncAgentService_GetTaskLogsServer_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnContext() *AsyncAgentService_GetTaskLogsServer_Context { + c_call := _m.On("Context") + return &AsyncAgentService_GetTaskLogsServer_Context{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnContextMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsServer_Context { + c_call := _m.On("Context", matchers...) + return &AsyncAgentService_GetTaskLogsServer_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskLogsServer) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type AsyncAgentService_GetTaskLogsServer_RecvMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsServer_RecvMsg) Return(_a0 error) *AsyncAgentService_GetTaskLogsServer_RecvMsg { + return &AsyncAgentService_GetTaskLogsServer_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnRecvMsg(m interface{}) *AsyncAgentService_GetTaskLogsServer_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &AsyncAgentService_GetTaskLogsServer_RecvMsg{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnRecvMsgMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsServer_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &AsyncAgentService_GetTaskLogsServer_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_GetTaskLogsServer) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskLogsServer_Send struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsServer_Send) Return(_a0 error) *AsyncAgentService_GetTaskLogsServer_Send { + return &AsyncAgentService_GetTaskLogsServer_Send{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnSend(_a0 *admin.GetTaskLogsResponse) *AsyncAgentService_GetTaskLogsServer_Send { + c_call := _m.On("Send", _a0) + return &AsyncAgentService_GetTaskLogsServer_Send{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnSendMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsServer_Send { + c_call := _m.On("Send", matchers...) + return &AsyncAgentService_GetTaskLogsServer_Send{Call: c_call} +} + +// Send provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_GetTaskLogsServer) Send(_a0 *admin.GetTaskLogsResponse) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*admin.GetTaskLogsResponse) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskLogsServer_SendHeader struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsServer_SendHeader) Return(_a0 error) *AsyncAgentService_GetTaskLogsServer_SendHeader { + return &AsyncAgentService_GetTaskLogsServer_SendHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnSendHeader(_a0 metadata.MD) *AsyncAgentService_GetTaskLogsServer_SendHeader { + c_call := _m.On("SendHeader", _a0) + return &AsyncAgentService_GetTaskLogsServer_SendHeader{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnSendHeaderMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsServer_SendHeader { + c_call := _m.On("SendHeader", matchers...) + return &AsyncAgentService_GetTaskLogsServer_SendHeader{Call: c_call} +} + +// SendHeader provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_GetTaskLogsServer) SendHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskLogsServer_SendMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsServer_SendMsg) Return(_a0 error) *AsyncAgentService_GetTaskLogsServer_SendMsg { + return &AsyncAgentService_GetTaskLogsServer_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnSendMsg(m interface{}) *AsyncAgentService_GetTaskLogsServer_SendMsg { + c_call := _m.On("SendMsg", m) + return &AsyncAgentService_GetTaskLogsServer_SendMsg{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnSendMsgMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsServer_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &AsyncAgentService_GetTaskLogsServer_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_GetTaskLogsServer) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskLogsServer_SetHeader struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskLogsServer_SetHeader) Return(_a0 error) *AsyncAgentService_GetTaskLogsServer_SetHeader { + return &AsyncAgentService_GetTaskLogsServer_SetHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnSetHeader(_a0 metadata.MD) *AsyncAgentService_GetTaskLogsServer_SetHeader { + c_call := _m.On("SetHeader", _a0) + return &AsyncAgentService_GetTaskLogsServer_SetHeader{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskLogsServer) OnSetHeaderMatch(matchers ...interface{}) *AsyncAgentService_GetTaskLogsServer_SetHeader { + c_call := _m.On("SetHeader", matchers...) + return &AsyncAgentService_GetTaskLogsServer_SetHeader{Call: c_call} +} + +// SetHeader provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_GetTaskLogsServer) SetHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SetTrailer provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_GetTaskLogsServer) SetTrailer(_a0 metadata.MD) { + _m.Called(_a0) +} diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskServer.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskServer.go new file mode 100644 index 00000000000..e16fd3591a8 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskServer.go @@ -0,0 +1,217 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// AsyncAgentService_GetTaskServer is an autogenerated mock type for the AsyncAgentService_GetTaskServer type +type AsyncAgentService_GetTaskServer struct { + mock.Mock +} + +type AsyncAgentService_GetTaskServer_Context struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskServer_Context) Return(_a0 context.Context) *AsyncAgentService_GetTaskServer_Context { + return &AsyncAgentService_GetTaskServer_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskServer) OnContext() *AsyncAgentService_GetTaskServer_Context { + c_call := _m.On("Context") + return &AsyncAgentService_GetTaskServer_Context{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskServer) OnContextMatch(matchers ...interface{}) *AsyncAgentService_GetTaskServer_Context { + c_call := _m.On("Context", matchers...) + return &AsyncAgentService_GetTaskServer_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *AsyncAgentService_GetTaskServer) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type AsyncAgentService_GetTaskServer_RecvMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskServer_RecvMsg) Return(_a0 error) *AsyncAgentService_GetTaskServer_RecvMsg { + return &AsyncAgentService_GetTaskServer_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskServer) OnRecvMsg(m interface{}) *AsyncAgentService_GetTaskServer_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &AsyncAgentService_GetTaskServer_RecvMsg{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskServer) OnRecvMsgMatch(matchers ...interface{}) *AsyncAgentService_GetTaskServer_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &AsyncAgentService_GetTaskServer_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_GetTaskServer) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskServer_Send struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskServer_Send) Return(_a0 error) *AsyncAgentService_GetTaskServer_Send { + return &AsyncAgentService_GetTaskServer_Send{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskServer) OnSend(_a0 *admin.GetTaskResponse) *AsyncAgentService_GetTaskServer_Send { + c_call := _m.On("Send", _a0) + return &AsyncAgentService_GetTaskServer_Send{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskServer) OnSendMatch(matchers ...interface{}) *AsyncAgentService_GetTaskServer_Send { + c_call := _m.On("Send", matchers...) + return &AsyncAgentService_GetTaskServer_Send{Call: c_call} +} + +// Send provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_GetTaskServer) Send(_a0 *admin.GetTaskResponse) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*admin.GetTaskResponse) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskServer_SendHeader struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskServer_SendHeader) Return(_a0 error) *AsyncAgentService_GetTaskServer_SendHeader { + return &AsyncAgentService_GetTaskServer_SendHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskServer) OnSendHeader(_a0 metadata.MD) *AsyncAgentService_GetTaskServer_SendHeader { + c_call := _m.On("SendHeader", _a0) + return &AsyncAgentService_GetTaskServer_SendHeader{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskServer) OnSendHeaderMatch(matchers ...interface{}) *AsyncAgentService_GetTaskServer_SendHeader { + c_call := _m.On("SendHeader", matchers...) + return &AsyncAgentService_GetTaskServer_SendHeader{Call: c_call} +} + +// SendHeader provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_GetTaskServer) SendHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskServer_SendMsg struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskServer_SendMsg) Return(_a0 error) *AsyncAgentService_GetTaskServer_SendMsg { + return &AsyncAgentService_GetTaskServer_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskServer) OnSendMsg(m interface{}) *AsyncAgentService_GetTaskServer_SendMsg { + c_call := _m.On("SendMsg", m) + return &AsyncAgentService_GetTaskServer_SendMsg{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskServer) OnSendMsgMatch(matchers ...interface{}) *AsyncAgentService_GetTaskServer_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &AsyncAgentService_GetTaskServer_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *AsyncAgentService_GetTaskServer) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type AsyncAgentService_GetTaskServer_SetHeader struct { + *mock.Call +} + +func (_m AsyncAgentService_GetTaskServer_SetHeader) Return(_a0 error) *AsyncAgentService_GetTaskServer_SetHeader { + return &AsyncAgentService_GetTaskServer_SetHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *AsyncAgentService_GetTaskServer) OnSetHeader(_a0 metadata.MD) *AsyncAgentService_GetTaskServer_SetHeader { + c_call := _m.On("SetHeader", _a0) + return &AsyncAgentService_GetTaskServer_SetHeader{Call: c_call} +} + +func (_m *AsyncAgentService_GetTaskServer) OnSetHeaderMatch(matchers ...interface{}) *AsyncAgentService_GetTaskServer_SetHeader { + c_call := _m.On("SetHeader", matchers...) + return &AsyncAgentService_GetTaskServer_SetHeader{Call: c_call} +} + +// SetHeader provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_GetTaskServer) SetHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SetTrailer provides a mock function with given fields: _a0 +func (_m *AsyncAgentService_GetTaskServer) SetTrailer(_a0 metadata.MD) { + _m.Called(_a0) +} diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go b/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go new file mode 100644 index 00000000000..6faf4c2ad91 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go @@ -0,0 +1,66 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + grpc "google.golang.org/grpc" + + mock "github.com/stretchr/testify/mock" + + service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service" +) + +// SyncAgentServiceClient is an autogenerated mock type for the SyncAgentServiceClient type +type SyncAgentServiceClient struct { + mock.Mock +} + +type SyncAgentServiceClient_ExecuteTaskSync struct { + *mock.Call +} + +func (_m SyncAgentServiceClient_ExecuteTaskSync) Return(_a0 service.SyncAgentService_ExecuteTaskSyncClient, _a1 error) *SyncAgentServiceClient_ExecuteTaskSync { + return &SyncAgentServiceClient_ExecuteTaskSync{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *SyncAgentServiceClient) OnExecuteTaskSync(ctx context.Context, opts ...grpc.CallOption) *SyncAgentServiceClient_ExecuteTaskSync { + c_call := _m.On("ExecuteTaskSync", ctx, opts) + return &SyncAgentServiceClient_ExecuteTaskSync{Call: c_call} +} + +func (_m *SyncAgentServiceClient) OnExecuteTaskSyncMatch(matchers ...interface{}) *SyncAgentServiceClient_ExecuteTaskSync { + c_call := _m.On("ExecuteTaskSync", matchers...) + return &SyncAgentServiceClient_ExecuteTaskSync{Call: c_call} +} + +// ExecuteTaskSync provides a mock function with given fields: ctx, opts +func (_m *SyncAgentServiceClient) ExecuteTaskSync(ctx context.Context, opts ...grpc.CallOption) (service.SyncAgentService_ExecuteTaskSyncClient, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 service.SyncAgentService_ExecuteTaskSyncClient + if rf, ok := ret.Get(0).(func(context.Context, ...grpc.CallOption) service.SyncAgentService_ExecuteTaskSyncClient); ok { + r0 = rf(ctx, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(service.SyncAgentService_ExecuteTaskSyncClient) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, ...grpc.CallOption) error); ok { + r1 = rf(ctx, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentServiceServer.go b/flyteidl/clients/go/admin/mocks/SyncAgentServiceServer.go new file mode 100644 index 00000000000..ee7b4a78e66 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/SyncAgentServiceServer.go @@ -0,0 +1,45 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service" + mock "github.com/stretchr/testify/mock" +) + +// SyncAgentServiceServer is an autogenerated mock type for the SyncAgentServiceServer type +type SyncAgentServiceServer struct { + mock.Mock +} + +type SyncAgentServiceServer_ExecuteTaskSync struct { + *mock.Call +} + +func (_m SyncAgentServiceServer_ExecuteTaskSync) Return(_a0 error) *SyncAgentServiceServer_ExecuteTaskSync { + return &SyncAgentServiceServer_ExecuteTaskSync{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentServiceServer) OnExecuteTaskSync(_a0 service.SyncAgentService_ExecuteTaskSyncServer) *SyncAgentServiceServer_ExecuteTaskSync { + c_call := _m.On("ExecuteTaskSync", _a0) + return &SyncAgentServiceServer_ExecuteTaskSync{Call: c_call} +} + +func (_m *SyncAgentServiceServer) OnExecuteTaskSyncMatch(matchers ...interface{}) *SyncAgentServiceServer_ExecuteTaskSync { + c_call := _m.On("ExecuteTaskSync", matchers...) + return &SyncAgentServiceServer_ExecuteTaskSync{Call: c_call} +} + +// ExecuteTaskSync provides a mock function with given fields: _a0 +func (_m *SyncAgentServiceServer) ExecuteTaskSync(_a0 service.SyncAgentService_ExecuteTaskSyncServer) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(service.SyncAgentService_ExecuteTaskSyncServer) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go new file mode 100644 index 00000000000..c88068293f6 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go @@ -0,0 +1,296 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// SyncAgentService_ExecuteTaskSyncClient is an autogenerated mock type for the SyncAgentService_ExecuteTaskSyncClient type +type SyncAgentService_ExecuteTaskSyncClient struct { + mock.Mock +} + +type SyncAgentService_ExecuteTaskSyncClient_CloseSend struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncClient_CloseSend) Return(_a0 error) *SyncAgentService_ExecuteTaskSyncClient_CloseSend { + return &SyncAgentService_ExecuteTaskSyncClient_CloseSend{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnCloseSend() *SyncAgentService_ExecuteTaskSyncClient_CloseSend { + c_call := _m.On("CloseSend") + return &SyncAgentService_ExecuteTaskSyncClient_CloseSend{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnCloseSendMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncClient_CloseSend { + c_call := _m.On("CloseSend", matchers...) + return &SyncAgentService_ExecuteTaskSyncClient_CloseSend{Call: c_call} +} + +// CloseSend provides a mock function with given fields: +func (_m *SyncAgentService_ExecuteTaskSyncClient) CloseSend() error { + ret := _m.Called() + + var r0 error + if rf, ok := ret.Get(0).(func() error); ok { + r0 = rf() + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncClient_Context struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncClient_Context) Return(_a0 context.Context) *SyncAgentService_ExecuteTaskSyncClient_Context { + return &SyncAgentService_ExecuteTaskSyncClient_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnContext() *SyncAgentService_ExecuteTaskSyncClient_Context { + c_call := _m.On("Context") + return &SyncAgentService_ExecuteTaskSyncClient_Context{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnContextMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncClient_Context { + c_call := _m.On("Context", matchers...) + return &SyncAgentService_ExecuteTaskSyncClient_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *SyncAgentService_ExecuteTaskSyncClient) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncClient_Header struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncClient_Header) Return(_a0 metadata.MD, _a1 error) *SyncAgentService_ExecuteTaskSyncClient_Header { + return &SyncAgentService_ExecuteTaskSyncClient_Header{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnHeader() *SyncAgentService_ExecuteTaskSyncClient_Header { + c_call := _m.On("Header") + return &SyncAgentService_ExecuteTaskSyncClient_Header{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnHeaderMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncClient_Header { + c_call := _m.On("Header", matchers...) + return &SyncAgentService_ExecuteTaskSyncClient_Header{Call: c_call} +} + +// Header provides a mock function with given fields: +func (_m *SyncAgentService_ExecuteTaskSyncClient) Header() (metadata.MD, error) { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type SyncAgentService_ExecuteTaskSyncClient_Recv struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncClient_Recv) Return(_a0 *admin.ExecuteTaskSyncResponse, _a1 error) *SyncAgentService_ExecuteTaskSyncClient_Recv { + return &SyncAgentService_ExecuteTaskSyncClient_Recv{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnRecv() *SyncAgentService_ExecuteTaskSyncClient_Recv { + c_call := _m.On("Recv") + return &SyncAgentService_ExecuteTaskSyncClient_Recv{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnRecvMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncClient_Recv { + c_call := _m.On("Recv", matchers...) + return &SyncAgentService_ExecuteTaskSyncClient_Recv{Call: c_call} +} + +// Recv provides a mock function with given fields: +func (_m *SyncAgentService_ExecuteTaskSyncClient) Recv() (*admin.ExecuteTaskSyncResponse, error) { + ret := _m.Called() + + var r0 *admin.ExecuteTaskSyncResponse + if rf, ok := ret.Get(0).(func() *admin.ExecuteTaskSyncResponse); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.ExecuteTaskSyncResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type SyncAgentService_ExecuteTaskSyncClient_RecvMsg struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncClient_RecvMsg) Return(_a0 error) *SyncAgentService_ExecuteTaskSyncClient_RecvMsg { + return &SyncAgentService_ExecuteTaskSyncClient_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnRecvMsg(m interface{}) *SyncAgentService_ExecuteTaskSyncClient_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &SyncAgentService_ExecuteTaskSyncClient_RecvMsg{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnRecvMsgMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncClient_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &SyncAgentService_ExecuteTaskSyncClient_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *SyncAgentService_ExecuteTaskSyncClient) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncClient_Send struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncClient_Send) Return(_a0 error) *SyncAgentService_ExecuteTaskSyncClient_Send { + return &SyncAgentService_ExecuteTaskSyncClient_Send{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnSend(_a0 *admin.ExecuteTaskSyncRequest) *SyncAgentService_ExecuteTaskSyncClient_Send { + c_call := _m.On("Send", _a0) + return &SyncAgentService_ExecuteTaskSyncClient_Send{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnSendMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncClient_Send { + c_call := _m.On("Send", matchers...) + return &SyncAgentService_ExecuteTaskSyncClient_Send{Call: c_call} +} + +// Send provides a mock function with given fields: _a0 +func (_m *SyncAgentService_ExecuteTaskSyncClient) Send(_a0 *admin.ExecuteTaskSyncRequest) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*admin.ExecuteTaskSyncRequest) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncClient_SendMsg struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncClient_SendMsg) Return(_a0 error) *SyncAgentService_ExecuteTaskSyncClient_SendMsg { + return &SyncAgentService_ExecuteTaskSyncClient_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnSendMsg(m interface{}) *SyncAgentService_ExecuteTaskSyncClient_SendMsg { + c_call := _m.On("SendMsg", m) + return &SyncAgentService_ExecuteTaskSyncClient_SendMsg{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnSendMsgMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncClient_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &SyncAgentService_ExecuteTaskSyncClient_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *SyncAgentService_ExecuteTaskSyncClient) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncClient_Trailer struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncClient_Trailer) Return(_a0 metadata.MD) *SyncAgentService_ExecuteTaskSyncClient_Trailer { + return &SyncAgentService_ExecuteTaskSyncClient_Trailer{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnTrailer() *SyncAgentService_ExecuteTaskSyncClient_Trailer { + c_call := _m.On("Trailer") + return &SyncAgentService_ExecuteTaskSyncClient_Trailer{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncClient) OnTrailerMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncClient_Trailer { + c_call := _m.On("Trailer", matchers...) + return &SyncAgentService_ExecuteTaskSyncClient_Trailer{Call: c_call} +} + +// Trailer provides a mock function with given fields: +func (_m *SyncAgentService_ExecuteTaskSyncClient) Trailer() metadata.MD { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + return r0 +} diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go new file mode 100644 index 00000000000..de1579d7a84 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go @@ -0,0 +1,258 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" + + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// SyncAgentService_ExecuteTaskSyncServer is an autogenerated mock type for the SyncAgentService_ExecuteTaskSyncServer type +type SyncAgentService_ExecuteTaskSyncServer struct { + mock.Mock +} + +type SyncAgentService_ExecuteTaskSyncServer_Context struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncServer_Context) Return(_a0 context.Context) *SyncAgentService_ExecuteTaskSyncServer_Context { + return &SyncAgentService_ExecuteTaskSyncServer_Context{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnContext() *SyncAgentService_ExecuteTaskSyncServer_Context { + c_call := _m.On("Context") + return &SyncAgentService_ExecuteTaskSyncServer_Context{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnContextMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncServer_Context { + c_call := _m.On("Context", matchers...) + return &SyncAgentService_ExecuteTaskSyncServer_Context{Call: c_call} +} + +// Context provides a mock function with given fields: +func (_m *SyncAgentService_ExecuteTaskSyncServer) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncServer_Recv struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncServer_Recv) Return(_a0 *admin.ExecuteTaskSyncRequest, _a1 error) *SyncAgentService_ExecuteTaskSyncServer_Recv { + return &SyncAgentService_ExecuteTaskSyncServer_Recv{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnRecv() *SyncAgentService_ExecuteTaskSyncServer_Recv { + c_call := _m.On("Recv") + return &SyncAgentService_ExecuteTaskSyncServer_Recv{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnRecvMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncServer_Recv { + c_call := _m.On("Recv", matchers...) + return &SyncAgentService_ExecuteTaskSyncServer_Recv{Call: c_call} +} + +// Recv provides a mock function with given fields: +func (_m *SyncAgentService_ExecuteTaskSyncServer) Recv() (*admin.ExecuteTaskSyncRequest, error) { + ret := _m.Called() + + var r0 *admin.ExecuteTaskSyncRequest + if rf, ok := ret.Get(0).(func() *admin.ExecuteTaskSyncRequest); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.ExecuteTaskSyncRequest) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type SyncAgentService_ExecuteTaskSyncServer_RecvMsg struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncServer_RecvMsg) Return(_a0 error) *SyncAgentService_ExecuteTaskSyncServer_RecvMsg { + return &SyncAgentService_ExecuteTaskSyncServer_RecvMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnRecvMsg(m interface{}) *SyncAgentService_ExecuteTaskSyncServer_RecvMsg { + c_call := _m.On("RecvMsg", m) + return &SyncAgentService_ExecuteTaskSyncServer_RecvMsg{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnRecvMsgMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncServer_RecvMsg { + c_call := _m.On("RecvMsg", matchers...) + return &SyncAgentService_ExecuteTaskSyncServer_RecvMsg{Call: c_call} +} + +// RecvMsg provides a mock function with given fields: m +func (_m *SyncAgentService_ExecuteTaskSyncServer) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncServer_Send struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncServer_Send) Return(_a0 error) *SyncAgentService_ExecuteTaskSyncServer_Send { + return &SyncAgentService_ExecuteTaskSyncServer_Send{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnSend(_a0 *admin.ExecuteTaskSyncResponse) *SyncAgentService_ExecuteTaskSyncServer_Send { + c_call := _m.On("Send", _a0) + return &SyncAgentService_ExecuteTaskSyncServer_Send{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnSendMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncServer_Send { + c_call := _m.On("Send", matchers...) + return &SyncAgentService_ExecuteTaskSyncServer_Send{Call: c_call} +} + +// Send provides a mock function with given fields: _a0 +func (_m *SyncAgentService_ExecuteTaskSyncServer) Send(_a0 *admin.ExecuteTaskSyncResponse) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*admin.ExecuteTaskSyncResponse) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncServer_SendHeader struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncServer_SendHeader) Return(_a0 error) *SyncAgentService_ExecuteTaskSyncServer_SendHeader { + return &SyncAgentService_ExecuteTaskSyncServer_SendHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnSendHeader(_a0 metadata.MD) *SyncAgentService_ExecuteTaskSyncServer_SendHeader { + c_call := _m.On("SendHeader", _a0) + return &SyncAgentService_ExecuteTaskSyncServer_SendHeader{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnSendHeaderMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncServer_SendHeader { + c_call := _m.On("SendHeader", matchers...) + return &SyncAgentService_ExecuteTaskSyncServer_SendHeader{Call: c_call} +} + +// SendHeader provides a mock function with given fields: _a0 +func (_m *SyncAgentService_ExecuteTaskSyncServer) SendHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncServer_SendMsg struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncServer_SendMsg) Return(_a0 error) *SyncAgentService_ExecuteTaskSyncServer_SendMsg { + return &SyncAgentService_ExecuteTaskSyncServer_SendMsg{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnSendMsg(m interface{}) *SyncAgentService_ExecuteTaskSyncServer_SendMsg { + c_call := _m.On("SendMsg", m) + return &SyncAgentService_ExecuteTaskSyncServer_SendMsg{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnSendMsgMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncServer_SendMsg { + c_call := _m.On("SendMsg", matchers...) + return &SyncAgentService_ExecuteTaskSyncServer_SendMsg{Call: c_call} +} + +// SendMsg provides a mock function with given fields: m +func (_m *SyncAgentService_ExecuteTaskSyncServer) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +type SyncAgentService_ExecuteTaskSyncServer_SetHeader struct { + *mock.Call +} + +func (_m SyncAgentService_ExecuteTaskSyncServer_SetHeader) Return(_a0 error) *SyncAgentService_ExecuteTaskSyncServer_SetHeader { + return &SyncAgentService_ExecuteTaskSyncServer_SetHeader{Call: _m.Call.Return(_a0)} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnSetHeader(_a0 metadata.MD) *SyncAgentService_ExecuteTaskSyncServer_SetHeader { + c_call := _m.On("SetHeader", _a0) + return &SyncAgentService_ExecuteTaskSyncServer_SetHeader{Call: c_call} +} + +func (_m *SyncAgentService_ExecuteTaskSyncServer) OnSetHeaderMatch(matchers ...interface{}) *SyncAgentService_ExecuteTaskSyncServer_SetHeader { + c_call := _m.On("SetHeader", matchers...) + return &SyncAgentService_ExecuteTaskSyncServer_SetHeader{Call: c_call} +} + +// SetHeader provides a mock function with given fields: _a0 +func (_m *SyncAgentService_ExecuteTaskSyncServer) SetHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SetTrailer provides a mock function with given fields: _a0 +func (_m *SyncAgentService_ExecuteTaskSyncServer) SetTrailer(_a0 metadata.MD) { + _m.Called(_a0) +} diff --git a/flyteidl/clients/go/admin/mocks/UnsafeSyncAgentServiceServer.go b/flyteidl/clients/go/admin/mocks/UnsafeSyncAgentServiceServer.go new file mode 100644 index 00000000000..c4f4b4099c9 --- /dev/null +++ b/flyteidl/clients/go/admin/mocks/UnsafeSyncAgentServiceServer.go @@ -0,0 +1,15 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import mock "github.com/stretchr/testify/mock" + +// UnsafeSyncAgentServiceServer is an autogenerated mock type for the UnsafeSyncAgentServiceServer type +type UnsafeSyncAgentServiceServer struct { + mock.Mock +} + +// mustEmbedUnimplementedSyncAgentServiceServer provides a mock function with given fields: +func (_m *UnsafeSyncAgentServiceServer) mustEmbedUnimplementedSyncAgentServiceServer() { + _m.Called() +} diff --git a/flyteidl/gen/pb-es/flyteidl/admin/agent_pb.ts b/flyteidl/gen/pb-es/flyteidl/admin/agent_pb.ts index 834197a299b..deb36012024 100644 --- a/flyteidl/gen/pb-es/flyteidl/admin/agent_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/admin/agent_pb.ts @@ -4,8 +4,9 @@ // @ts-nocheck import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Duration, Message, proto3, protoInt64, Timestamp } from "@bufbuild/protobuf"; +import { Duration, Message, proto3, protoInt64, Struct, Timestamp } from "@bufbuild/protobuf"; import { TaskExecutionIdentifier } from "../core/identifier_pb.js"; +import { TaskNodeOverrides } from "../core/workflow_pb.js"; import { LiteralMap } from "../core/literals_pb.js"; import { TaskTemplate } from "../core/tasks_pb.js"; import { TaskExecution_Phase, TaskLog } from "../core/execution_pb.js"; @@ -15,6 +16,7 @@ import { ExecutionMetricResult } from "../core/metrics_pb.js"; * The state of the execution is used to control its visibility in the UI/CLI. * * @generated from enum flyteidl.admin.State + * @deprecated */ export enum State { /** @@ -99,6 +101,39 @@ export class TaskExecutionMetadata extends Message { */ environmentVariables: { [key: string]: string } = {}; + /** + * Represents the maximum number of attempts allowed for a task. + * If a task fails, it can be retried up to this maximum number of attempts. + * + * @generated from field: int32 max_attempts = 7; + */ + maxAttempts = 0; + + /** + * Indicates whether the task execution can be interrupted. + * If set to true, the task can be stopped before completion. + * + * @generated from field: bool interruptible = 8; + */ + interruptible = false; + + /** + * Specifies the threshold for failure count at which the interruptible property + * will take effect. If the number of consecutive task failures exceeds this threshold, + * interruptible behavior will be activated. + * + * @generated from field: int32 interruptible_failure_threshold = 9; + */ + interruptibleFailureThreshold = 0; + + /** + * Overrides for specific properties of the task node. + * These overrides can be used to customize the behavior of the task node. + * + * @generated from field: flyteidl.core.TaskNodeOverrides overrides = 10; + */ + overrides?: TaskNodeOverrides; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -113,6 +148,10 @@ export class TaskExecutionMetadata extends Message { { no: 4, name: "annotations", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, { no: 5, name: "k8s_service_account", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 6, name: "environment_variables", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, + { no: 7, name: "max_attempts", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 8, name: "interruptible", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 9, name: "interruptible_failure_threshold", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 10, name: "overrides", kind: "message", T: TaskNodeOverrides }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): TaskExecutionMetadata { @@ -206,24 +245,11 @@ export class CreateTaskRequest extends Message { */ export class CreateTaskResponse extends Message { /** - * Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). - * Resource is for synchronous task execution. + * ResourceMeta is created by the agent. It could be a string (jobId) or a dict (more complex metadata). * - * @generated from oneof flyteidl.admin.CreateTaskResponse.res + * @generated from field: bytes resource_meta = 1; */ - res: { - /** - * @generated from field: bytes resource_meta = 1; - */ - value: Uint8Array; - case: "resourceMeta"; - } | { - /** - * @generated from field: flyteidl.admin.Resource resource = 2; - */ - value: Resource; - case: "resource"; - } | { case: undefined; value?: undefined } = { case: undefined }; + resourceMeta = new Uint8Array(0); constructor(data?: PartialMessage) { super(); @@ -233,8 +259,7 @@ export class CreateTaskResponse extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "flyteidl.admin.CreateTaskResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "resource_meta", kind: "scalar", T: 12 /* ScalarType.BYTES */, oneof: "res" }, - { no: 2, name: "resource", kind: "message", T: Resource, oneof: "res" }, + { no: 1, name: "resource_meta", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): CreateTaskResponse { @@ -254,6 +279,209 @@ export class CreateTaskResponse extends Message { } } +/** + * @generated from message flyteidl.admin.CreateRequestHeader + */ +export class CreateRequestHeader extends Message { + /** + * Template of the task that encapsulates all the metadata of the task. + * + * @generated from field: flyteidl.core.TaskTemplate template = 1; + */ + template?: TaskTemplate; + + /** + * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) + * + * @generated from field: string output_prefix = 2; + */ + outputPrefix = ""; + + /** + * subset of runtime task execution metadata. + * + * @generated from field: flyteidl.admin.TaskExecutionMetadata task_execution_metadata = 3; + */ + taskExecutionMetadata?: TaskExecutionMetadata; + + /** + * MaxDatasetSizeBytes is the maximum size of the dataset that can be generated by the task. + * + * @generated from field: int64 max_dataset_size_bytes = 4; + */ + maxDatasetSizeBytes = protoInt64.zero; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.admin.CreateRequestHeader"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "template", kind: "message", T: TaskTemplate }, + { no: 2, name: "output_prefix", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "task_execution_metadata", kind: "message", T: TaskExecutionMetadata }, + { no: 4, name: "max_dataset_size_bytes", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CreateRequestHeader { + return new CreateRequestHeader().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CreateRequestHeader { + return new CreateRequestHeader().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CreateRequestHeader { + return new CreateRequestHeader().fromJsonString(jsonString, options); + } + + static equals(a: CreateRequestHeader | PlainMessage | undefined, b: CreateRequestHeader | PlainMessage | undefined): boolean { + return proto3.util.equals(CreateRequestHeader, a, b); + } +} + +/** + * @generated from message flyteidl.admin.ExecuteTaskSyncRequest + */ +export class ExecuteTaskSyncRequest extends Message { + /** + * @generated from oneof flyteidl.admin.ExecuteTaskSyncRequest.part + */ + part: { + /** + * @generated from field: flyteidl.admin.CreateRequestHeader header = 1; + */ + value: CreateRequestHeader; + case: "header"; + } | { + /** + * @generated from field: flyteidl.core.LiteralMap inputs = 2; + */ + value: LiteralMap; + case: "inputs"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.admin.ExecuteTaskSyncRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "header", kind: "message", T: CreateRequestHeader, oneof: "part" }, + { no: 2, name: "inputs", kind: "message", T: LiteralMap, oneof: "part" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ExecuteTaskSyncRequest { + return new ExecuteTaskSyncRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ExecuteTaskSyncRequest { + return new ExecuteTaskSyncRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ExecuteTaskSyncRequest { + return new ExecuteTaskSyncRequest().fromJsonString(jsonString, options); + } + + static equals(a: ExecuteTaskSyncRequest | PlainMessage | undefined, b: ExecuteTaskSyncRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ExecuteTaskSyncRequest, a, b); + } +} + +/** + * @generated from message flyteidl.admin.ExecuteTaskSyncResponseHeader + */ +export class ExecuteTaskSyncResponseHeader extends Message { + /** + * @generated from field: flyteidl.admin.Resource resource = 1; + */ + resource?: Resource; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.admin.ExecuteTaskSyncResponseHeader"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "resource", kind: "message", T: Resource }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ExecuteTaskSyncResponseHeader { + return new ExecuteTaskSyncResponseHeader().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ExecuteTaskSyncResponseHeader { + return new ExecuteTaskSyncResponseHeader().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ExecuteTaskSyncResponseHeader { + return new ExecuteTaskSyncResponseHeader().fromJsonString(jsonString, options); + } + + static equals(a: ExecuteTaskSyncResponseHeader | PlainMessage | undefined, b: ExecuteTaskSyncResponseHeader | PlainMessage | undefined): boolean { + return proto3.util.equals(ExecuteTaskSyncResponseHeader, a, b); + } +} + +/** + * @generated from message flyteidl.admin.ExecuteTaskSyncResponse + */ +export class ExecuteTaskSyncResponse extends Message { + /** + * Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). + * Resource is for synchronous task execution. + * + * @generated from oneof flyteidl.admin.ExecuteTaskSyncResponse.res + */ + res: { + /** + * @generated from field: flyteidl.admin.ExecuteTaskSyncResponseHeader header = 1; + */ + value: ExecuteTaskSyncResponseHeader; + case: "header"; + } | { + /** + * @generated from field: flyteidl.core.LiteralMap outputs = 2; + */ + value: LiteralMap; + case: "outputs"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.admin.ExecuteTaskSyncResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "header", kind: "message", T: ExecuteTaskSyncResponseHeader, oneof: "res" }, + { no: 2, name: "outputs", kind: "message", T: LiteralMap, oneof: "res" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ExecuteTaskSyncResponse { + return new ExecuteTaskSyncResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ExecuteTaskSyncResponse { + return new ExecuteTaskSyncResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ExecuteTaskSyncResponse { + return new ExecuteTaskSyncResponse().fromJsonString(jsonString, options); + } + + static equals(a: ExecuteTaskSyncResponse | PlainMessage | undefined, b: ExecuteTaskSyncResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ExecuteTaskSyncResponse, a, b); + } +} + /** * A message used to fetch a job resource from flyte agent server. * @@ -263,7 +491,8 @@ export class GetTaskRequest extends Message { /** * A predefined yet extensible Task type identifier. * - * @generated from field: string task_type = 1; + * @generated from field: string task_type = 1 [deprecated = true]; + * @deprecated */ taskType = ""; @@ -274,6 +503,13 @@ export class GetTaskRequest extends Message { */ resourceMeta = new Uint8Array(0); + /** + * A predefined yet extensible Task type identifier. + * + * @generated from field: flyteidl.admin.TaskCategory task_category = 3; + */ + taskCategory?: TaskCategory; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -284,6 +520,7 @@ export class GetTaskRequest extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "task_type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "resource_meta", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, + { no: 3, name: "task_category", kind: "message", T: TaskCategory }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskRequest { @@ -314,13 +551,6 @@ export class GetTaskResponse extends Message { */ resource?: Resource; - /** - * log information for the task execution - * - * @generated from field: repeated flyteidl.core.TaskLog log_links = 2; - */ - logLinks: TaskLog[] = []; - constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -330,7 +560,6 @@ export class GetTaskResponse extends Message { static readonly typeName = "flyteidl.admin.GetTaskResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "resource", kind: "message", T: Resource }, - { no: 2, name: "log_links", kind: "message", T: TaskLog, repeated: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskResponse { @@ -392,6 +621,13 @@ export class Resource extends Message { */ phase = TaskExecution_Phase.UNDEFINED; + /** + * Custom data specific to the agent. + * + * @generated from field: google.protobuf.Struct custom_info = 6; + */ + customInfo?: Struct; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -405,6 +641,7 @@ export class Resource extends Message { { 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 }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Resource { @@ -433,7 +670,8 @@ export class DeleteTaskRequest extends Message { /** * A predefined yet extensible Task type identifier. * - * @generated from field: string task_type = 1; + * @generated from field: string task_type = 1 [deprecated = true]; + * @deprecated */ taskType = ""; @@ -444,6 +682,13 @@ export class DeleteTaskRequest extends Message { */ resourceMeta = new Uint8Array(0); + /** + * A predefined yet extensible Task type identifier. + * + * @generated from field: flyteidl.admin.TaskCategory task_category = 3; + */ + taskCategory?: TaskCategory; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -454,6 +699,7 @@ export class DeleteTaskRequest extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "task_type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "resource_meta", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, + { no: 3, name: "task_category", kind: "message", T: TaskCategory }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): DeleteTaskRequest { @@ -522,10 +768,29 @@ export class Agent extends Message { /** * SupportedTaskTypes are the types of the tasks that the agent can handle. * - * @generated from field: repeated string supported_task_types = 2; + * @generated from field: repeated string supported_task_types = 2 [deprecated = true]; + * @deprecated */ supportedTaskTypes: string[] = []; + /** + * IsSync indicates whether this agent is a sync agent. Sync agents are expected to return their + * results synchronously when called by propeller. Given that sync agents can affect the performance + * of the system, it's important to enforce strict timeout policies. + * An Async agent, on the other hand, is required to be able to identify jobs by an + * identifier and query for job statuses as jobs progress. + * + * @generated from field: bool is_sync = 3; + */ + isSync = false; + + /** + * Supported_task_categories are the categories of the tasks that the agent can handle. + * + * @generated from field: repeated flyteidl.admin.TaskCategory supported_task_categories = 4; + */ + supportedTaskCategories: TaskCategory[] = []; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -536,6 +801,8 @@ export class Agent extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "supported_task_types", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 3, name: "is_sync", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "supported_task_categories", kind: "message", T: TaskCategory, repeated: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Agent { @@ -555,6 +822,53 @@ export class Agent extends Message { } } +/** + * @generated from message flyteidl.admin.TaskCategory + */ +export class TaskCategory extends Message { + /** + * The name of the task type. + * + * @generated from field: string name = 1; + */ + name = ""; + + /** + * The version of the task type. + * + * @generated from field: int32 version = 2; + */ + version = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.admin.TaskCategory"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "version", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): TaskCategory { + return new TaskCategory().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): TaskCategory { + return new TaskCategory().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): TaskCategory { + return new TaskCategory().fromJsonString(jsonString, options); + } + + static equals(a: TaskCategory | PlainMessage | undefined, b: TaskCategory | PlainMessage | undefined): boolean { + return proto3.util.equals(TaskCategory, a, b); + } +} + /** * A request to get an agent. * @@ -716,7 +1030,8 @@ export class GetTaskMetricsRequest extends Message { /** * A predefined yet extensible Task type identifier. * - * @generated from field: string task_type = 1; + * @generated from field: string task_type = 1 [deprecated = true]; + * @deprecated */ taskType = ""; @@ -756,6 +1071,13 @@ export class GetTaskMetricsRequest extends Message { */ step?: Duration; + /** + * A predefined yet extensible Task type identifier. + * + * @generated from field: flyteidl.admin.TaskCategory task_category = 7; + */ + taskCategory?: TaskCategory; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -770,6 +1092,7 @@ export class GetTaskMetricsRequest extends Message { { no: 4, name: "start_time", kind: "message", T: Timestamp }, { no: 5, name: "end_time", kind: "message", T: Timestamp }, { no: 6, name: "step", kind: "message", T: Duration }, + { no: 7, name: "task_category", kind: "message", T: TaskCategory }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskMetricsRequest { @@ -839,7 +1162,8 @@ export class GetTaskLogsRequest extends Message { /** * A predefined yet extensible Task type identifier. * - * @generated from field: string task_type = 1; + * @generated from field: string task_type = 1 [deprecated = true]; + * @deprecated */ taskType = ""; @@ -865,6 +1189,13 @@ export class GetTaskLogsRequest extends Message { */ token = ""; + /** + * A predefined yet extensible Task type identifier. + * + * @generated from field: flyteidl.admin.TaskCategory task_category = 5; + */ + taskCategory?: TaskCategory; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -877,6 +1208,7 @@ export class GetTaskLogsRequest extends Message { { no: 2, name: "resource_meta", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, { no: 3, name: "lines", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, { no: 4, name: "token", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "task_category", kind: "message", T: TaskCategory }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskLogsRequest { @@ -897,11 +1229,49 @@ export class GetTaskLogsRequest extends Message { } /** - * A response containing the logs for a task execution. - * - * @generated from message flyteidl.admin.GetTaskLogsResponse + * @generated from message flyteidl.admin.GetTaskLogsResponseHeader */ -export class GetTaskLogsResponse extends Message { +export class GetTaskLogsResponseHeader extends Message { + /** + * In the case of multiple pages of results, the server-provided token can be used to fetch the next page + * in a query. If there are no more results, this value will be empty. + * + * @generated from field: string token = 1; + */ + token = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.admin.GetTaskLogsResponseHeader"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "token", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskLogsResponseHeader { + return new GetTaskLogsResponseHeader().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetTaskLogsResponseHeader { + return new GetTaskLogsResponseHeader().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetTaskLogsResponseHeader { + return new GetTaskLogsResponseHeader().fromJsonString(jsonString, options); + } + + static equals(a: GetTaskLogsResponseHeader | PlainMessage | undefined, b: GetTaskLogsResponseHeader | PlainMessage | undefined): boolean { + return proto3.util.equals(GetTaskLogsResponseHeader, a, b); + } +} + +/** + * @generated from message flyteidl.admin.GetTaskLogsResponseBody + */ +export class GetTaskLogsResponseBody extends Message { /** * The execution log results. * @@ -909,13 +1279,56 @@ export class GetTaskLogsResponse extends Message { */ results: string[] = []; + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.admin.GetTaskLogsResponseBody"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "results", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskLogsResponseBody { + return new GetTaskLogsResponseBody().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetTaskLogsResponseBody { + return new GetTaskLogsResponseBody().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetTaskLogsResponseBody { + return new GetTaskLogsResponseBody().fromJsonString(jsonString, options); + } + + static equals(a: GetTaskLogsResponseBody | PlainMessage | undefined, b: GetTaskLogsResponseBody | PlainMessage | undefined): boolean { + return proto3.util.equals(GetTaskLogsResponseBody, a, b); + } +} + +/** + * A response containing the logs for a task execution. + * + * @generated from message flyteidl.admin.GetTaskLogsResponse + */ +export class GetTaskLogsResponse extends Message { /** - * In the case of multiple pages of results, the server-provided token can be used to fetch the next page - * in a query. If there are no more results, this value will be empty. - * - * @generated from field: string token = 2; + * @generated from oneof flyteidl.admin.GetTaskLogsResponse.part */ - token = ""; + part: { + /** + * @generated from field: flyteidl.admin.GetTaskLogsResponseHeader header = 1; + */ + value: GetTaskLogsResponseHeader; + case: "header"; + } | { + /** + * @generated from field: flyteidl.admin.GetTaskLogsResponseBody body = 2; + */ + value: GetTaskLogsResponseBody; + case: "body"; + } | { case: undefined; value?: undefined } = { case: undefined }; constructor(data?: PartialMessage) { super(); @@ -925,8 +1338,8 @@ export class GetTaskLogsResponse extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "flyteidl.admin.GetTaskLogsResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "results", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - { no: 2, name: "token", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 1, name: "header", kind: "message", T: GetTaskLogsResponseHeader, oneof: "part" }, + { no: 2, name: "body", kind: "message", T: GetTaskLogsResponseBody, oneof: "part" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskLogsResponse { diff --git a/flyteidl/gen/pb-es/flyteidl/service/agent_connect.ts b/flyteidl/gen/pb-es/flyteidl/service/agent_connect.ts index 3068a3181a8..cec0c0aabc1 100644 --- a/flyteidl/gen/pb-es/flyteidl/service/agent_connect.ts +++ b/flyteidl/gen/pb-es/flyteidl/service/agent_connect.ts @@ -3,11 +3,33 @@ /* eslint-disable */ // @ts-nocheck -import { CreateTaskRequest, CreateTaskResponse, DeleteTaskRequest, DeleteTaskResponse, GetAgentRequest, GetAgentResponse, GetTaskLogsRequest, GetTaskLogsResponse, GetTaskMetricsRequest, GetTaskMetricsResponse, GetTaskRequest, GetTaskResponse, ListAgentsRequest, ListAgentsResponse } from "../admin/agent_pb.js"; +import { CreateTaskRequest, CreateTaskResponse, DeleteTaskRequest, DeleteTaskResponse, ExecuteTaskSyncRequest, ExecuteTaskSyncResponse, GetAgentRequest, GetAgentResponse, GetTaskLogsRequest, GetTaskLogsResponse, GetTaskMetricsRequest, GetTaskMetricsResponse, GetTaskRequest, GetTaskResponse, ListAgentsRequest, ListAgentsResponse } from "../admin/agent_pb.js"; import { MethodKind } from "@bufbuild/protobuf"; /** - * AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server. + * SyncAgentService defines an RPC Service that allows propeller to send the request to the agent server synchronously. + * + * @generated from service flyteidl.service.SyncAgentService + */ +export const SyncAgentService = { + typeName: "flyteidl.service.SyncAgentService", + methods: { + /** + * ExecuteTaskSync streams the create request and inputs to the agent service and streams the outputs back. + * + * @generated from rpc flyteidl.service.SyncAgentService.ExecuteTaskSync + */ + executeTaskSync: { + name: "ExecuteTaskSync", + I: ExecuteTaskSyncRequest, + O: ExecuteTaskSyncResponse, + kind: MethodKind.BiDiStreaming, + }, + } +} as const; + +/** + * AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server asynchronously. * * @generated from service flyteidl.service.AsyncAgentService */ @@ -15,7 +37,7 @@ export const AsyncAgentService = { typeName: "flyteidl.service.AsyncAgentService", methods: { /** - * Send a task create request to the agent server. + * CreateTask sends a task create request to the agent service. * * @generated from rpc flyteidl.service.AsyncAgentService.CreateTask */ @@ -71,7 +93,7 @@ export const AsyncAgentService = { name: "GetTaskLogs", I: GetTaskLogsRequest, O: GetTaskLogsResponse, - kind: MethodKind.Unary, + kind: MethodKind.ServerStreaming, }, } } as const; diff --git a/flyteidl/gen/pb-go/flyteidl/admin/agent.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/agent.pb.go index de0a0f02445..01aee40e95c 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/agent.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/agent.pb.go @@ -11,6 +11,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" @@ -24,6 +25,8 @@ const ( ) // The state of the execution is used to control its visibility in the UI/CLI. +// +// Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. type State int32 const ( @@ -97,6 +100,19 @@ type TaskExecutionMetadata struct { K8SServiceAccount string `protobuf:"bytes,5,opt,name=k8s_service_account,json=k8sServiceAccount,proto3" json:"k8s_service_account,omitempty"` // Environment variables attached to the task execution EnvironmentVariables map[string]string `protobuf:"bytes,6,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Represents the maximum number of attempts allowed for a task. + // If a task fails, it can be retried up to this maximum number of attempts. + MaxAttempts int32 `protobuf:"varint,7,opt,name=max_attempts,json=maxAttempts,proto3" json:"max_attempts,omitempty"` + // Indicates whether the task execution can be interrupted. + // If set to true, the task can be stopped before completion. + Interruptible bool `protobuf:"varint,8,opt,name=interruptible,proto3" json:"interruptible,omitempty"` + // Specifies the threshold for failure count at which the interruptible property + // will take effect. If the number of consecutive task failures exceeds this threshold, + // interruptible behavior will be activated. + InterruptibleFailureThreshold int32 `protobuf:"varint,9,opt,name=interruptible_failure_threshold,json=interruptibleFailureThreshold,proto3" json:"interruptible_failure_threshold,omitempty"` + // Overrides for specific properties of the task node. + // These overrides can be used to customize the behavior of the task node. + Overrides *core.TaskNodeOverrides `protobuf:"bytes,10,opt,name=overrides,proto3" json:"overrides,omitempty"` } func (x *TaskExecutionMetadata) Reset() { @@ -173,6 +189,34 @@ func (x *TaskExecutionMetadata) GetEnvironmentVariables() map[string]string { return nil } +func (x *TaskExecutionMetadata) GetMaxAttempts() int32 { + if x != nil { + return x.MaxAttempts + } + return 0 +} + +func (x *TaskExecutionMetadata) GetInterruptible() bool { + if x != nil { + return x.Interruptible + } + return false +} + +func (x *TaskExecutionMetadata) GetInterruptibleFailureThreshold() int32 { + if x != nil { + return x.InterruptibleFailureThreshold + } + return 0 +} + +func (x *TaskExecutionMetadata) GetOverrides() *core.TaskNodeOverrides { + if x != nil { + return x.Overrides + } + return nil +} + // Represents a request structure to create task. type CreateTaskRequest struct { state protoimpl.MessageState @@ -257,14 +301,8 @@ type CreateTaskResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). - // Resource is for synchronous task execution. - // - // Types that are assignable to Res: - // - // *CreateTaskResponse_ResourceMeta - // *CreateTaskResponse_Resource - Res isCreateTaskResponse_Res `protobuf_oneof:"res"` + // ResourceMeta is created by the agent. It could be a string (jobId) or a dict (more complex metadata). + ResourceMeta []byte `protobuf:"bytes,1,opt,name=resource_meta,json=resourceMeta,proto3" json:"resource_meta,omitempty"` } func (x *CreateTaskResponse) Reset() { @@ -299,42 +337,299 @@ func (*CreateTaskResponse) Descriptor() ([]byte, []int) { return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{2} } -func (m *CreateTaskResponse) GetRes() isCreateTaskResponse_Res { +func (x *CreateTaskResponse) GetResourceMeta() []byte { + if x != nil { + return x.ResourceMeta + } + return nil +} + +type CreateRequestHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Template of the task that encapsulates all the metadata of the task. + Template *core.TaskTemplate `protobuf:"bytes,1,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,2,opt,name=output_prefix,json=outputPrefix,proto3" json:"output_prefix,omitempty"` + // subset of runtime task execution metadata. + TaskExecutionMetadata *TaskExecutionMetadata `protobuf:"bytes,3,opt,name=task_execution_metadata,json=taskExecutionMetadata,proto3" json:"task_execution_metadata,omitempty"` + // MaxDatasetSizeBytes is the maximum size of the dataset that can be generated by the task. + MaxDatasetSizeBytes int64 `protobuf:"varint,4,opt,name=max_dataset_size_bytes,json=maxDatasetSizeBytes,proto3" json:"max_dataset_size_bytes,omitempty"` +} + +func (x *CreateRequestHeader) Reset() { + *x = CreateRequestHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_admin_agent_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateRequestHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateRequestHeader) ProtoMessage() {} + +func (x *CreateRequestHeader) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_admin_agent_proto_msgTypes[3] + 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 CreateRequestHeader.ProtoReflect.Descriptor instead. +func (*CreateRequestHeader) Descriptor() ([]byte, []int) { + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{3} +} + +func (x *CreateRequestHeader) GetTemplate() *core.TaskTemplate { + if x != nil { + return x.Template + } + return nil +} + +func (x *CreateRequestHeader) GetOutputPrefix() string { + if x != nil { + return x.OutputPrefix + } + return "" +} + +func (x *CreateRequestHeader) GetTaskExecutionMetadata() *TaskExecutionMetadata { + if x != nil { + return x.TaskExecutionMetadata + } + return nil +} + +func (x *CreateRequestHeader) GetMaxDatasetSizeBytes() int64 { + if x != nil { + return x.MaxDatasetSizeBytes + } + return 0 +} + +type ExecuteTaskSyncRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Part: + // + // *ExecuteTaskSyncRequest_Header + // *ExecuteTaskSyncRequest_Inputs + Part isExecuteTaskSyncRequest_Part `protobuf_oneof:"part"` +} + +func (x *ExecuteTaskSyncRequest) Reset() { + *x = ExecuteTaskSyncRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_admin_agent_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecuteTaskSyncRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteTaskSyncRequest) ProtoMessage() {} + +func (x *ExecuteTaskSyncRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_admin_agent_proto_msgTypes[4] + 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 ExecuteTaskSyncRequest.ProtoReflect.Descriptor instead. +func (*ExecuteTaskSyncRequest) Descriptor() ([]byte, []int) { + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{4} +} + +func (m *ExecuteTaskSyncRequest) GetPart() isExecuteTaskSyncRequest_Part { if m != nil { - return m.Res + return m.Part } return nil } -func (x *CreateTaskResponse) GetResourceMeta() []byte { - if x, ok := x.GetRes().(*CreateTaskResponse_ResourceMeta); ok { - return x.ResourceMeta +func (x *ExecuteTaskSyncRequest) GetHeader() *CreateRequestHeader { + if x, ok := x.GetPart().(*ExecuteTaskSyncRequest_Header); ok { + return x.Header + } + return nil +} + +func (x *ExecuteTaskSyncRequest) GetInputs() *core.LiteralMap { + if x, ok := x.GetPart().(*ExecuteTaskSyncRequest_Inputs); ok { + return x.Inputs } return nil } -func (x *CreateTaskResponse) GetResource() *Resource { - if x, ok := x.GetRes().(*CreateTaskResponse_Resource); ok { +type isExecuteTaskSyncRequest_Part interface { + isExecuteTaskSyncRequest_Part() +} + +type ExecuteTaskSyncRequest_Header struct { + Header *CreateRequestHeader `protobuf:"bytes,1,opt,name=header,proto3,oneof"` +} + +type ExecuteTaskSyncRequest_Inputs struct { + Inputs *core.LiteralMap `protobuf:"bytes,2,opt,name=inputs,proto3,oneof"` +} + +func (*ExecuteTaskSyncRequest_Header) isExecuteTaskSyncRequest_Part() {} + +func (*ExecuteTaskSyncRequest_Inputs) isExecuteTaskSyncRequest_Part() {} + +type ExecuteTaskSyncResponseHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Resource *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` +} + +func (x *ExecuteTaskSyncResponseHeader) Reset() { + *x = ExecuteTaskSyncResponseHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_admin_agent_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecuteTaskSyncResponseHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteTaskSyncResponseHeader) ProtoMessage() {} + +func (x *ExecuteTaskSyncResponseHeader) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_admin_agent_proto_msgTypes[5] + 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 ExecuteTaskSyncResponseHeader.ProtoReflect.Descriptor instead. +func (*ExecuteTaskSyncResponseHeader) Descriptor() ([]byte, []int) { + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{5} +} + +func (x *ExecuteTaskSyncResponseHeader) GetResource() *Resource { + if x != nil { return x.Resource } return nil } -type isCreateTaskResponse_Res interface { - isCreateTaskResponse_Res() +type ExecuteTaskSyncResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). + // Resource is for synchronous task execution. + // + // Types that are assignable to Res: + // + // *ExecuteTaskSyncResponse_Header + // *ExecuteTaskSyncResponse_Outputs + Res isExecuteTaskSyncResponse_Res `protobuf_oneof:"res"` +} + +func (x *ExecuteTaskSyncResponse) Reset() { + *x = ExecuteTaskSyncResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_admin_agent_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecuteTaskSyncResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteTaskSyncResponse) ProtoMessage() {} + +func (x *ExecuteTaskSyncResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_admin_agent_proto_msgTypes[6] + 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 ExecuteTaskSyncResponse.ProtoReflect.Descriptor instead. +func (*ExecuteTaskSyncResponse) Descriptor() ([]byte, []int) { + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{6} +} + +func (m *ExecuteTaskSyncResponse) GetRes() isExecuteTaskSyncResponse_Res { + if m != nil { + return m.Res + } + return nil +} + +func (x *ExecuteTaskSyncResponse) GetHeader() *ExecuteTaskSyncResponseHeader { + if x, ok := x.GetRes().(*ExecuteTaskSyncResponse_Header); ok { + return x.Header + } + return nil +} + +func (x *ExecuteTaskSyncResponse) GetOutputs() *core.LiteralMap { + if x, ok := x.GetRes().(*ExecuteTaskSyncResponse_Outputs); ok { + return x.Outputs + } + return nil +} + +type isExecuteTaskSyncResponse_Res interface { + isExecuteTaskSyncResponse_Res() } -type CreateTaskResponse_ResourceMeta struct { - ResourceMeta []byte `protobuf:"bytes,1,opt,name=resource_meta,json=resourceMeta,proto3,oneof"` +type ExecuteTaskSyncResponse_Header struct { + Header *ExecuteTaskSyncResponseHeader `protobuf:"bytes,1,opt,name=header,proto3,oneof"` } -type CreateTaskResponse_Resource struct { - Resource *Resource `protobuf:"bytes,2,opt,name=resource,proto3,oneof"` +type ExecuteTaskSyncResponse_Outputs struct { + Outputs *core.LiteralMap `protobuf:"bytes,2,opt,name=outputs,proto3,oneof"` } -func (*CreateTaskResponse_ResourceMeta) isCreateTaskResponse_Res() {} +func (*ExecuteTaskSyncResponse_Header) isExecuteTaskSyncResponse_Res() {} -func (*CreateTaskResponse_Resource) isCreateTaskResponse_Res() {} +func (*ExecuteTaskSyncResponse_Outputs) isExecuteTaskSyncResponse_Res() {} // A message used to fetch a job resource from flyte agent server. type GetTaskRequest struct { @@ -343,15 +638,19 @@ type GetTaskRequest struct { unknownFields protoimpl.UnknownFields // A predefined yet extensible Task type identifier. + // + // Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. TaskType string `protobuf:"bytes,1,opt,name=task_type,json=taskType,proto3" json:"task_type,omitempty"` // Metadata about the resource to be pass to the agent. ResourceMeta []byte `protobuf:"bytes,2,opt,name=resource_meta,json=resourceMeta,proto3" json:"resource_meta,omitempty"` + // A predefined yet extensible Task type identifier. + TaskCategory *TaskCategory `protobuf:"bytes,3,opt,name=task_category,json=taskCategory,proto3" json:"task_category,omitempty"` } func (x *GetTaskRequest) Reset() { *x = GetTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[3] + mi := &file_flyteidl_admin_agent_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -364,7 +663,7 @@ func (x *GetTaskRequest) String() string { func (*GetTaskRequest) ProtoMessage() {} func (x *GetTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[3] + mi := &file_flyteidl_admin_agent_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -377,9 +676,10 @@ func (x *GetTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskRequest.ProtoReflect.Descriptor instead. func (*GetTaskRequest) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{3} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{7} } +// Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. func (x *GetTaskRequest) GetTaskType() string { if x != nil { return x.TaskType @@ -394,6 +694,13 @@ func (x *GetTaskRequest) GetResourceMeta() []byte { return nil } +func (x *GetTaskRequest) GetTaskCategory() *TaskCategory { + if x != nil { + return x.TaskCategory + } + return nil +} + // Response to get an individual task resource. type GetTaskResponse struct { state protoimpl.MessageState @@ -401,14 +708,12 @@ type GetTaskResponse struct { unknownFields protoimpl.UnknownFields Resource *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` - // log information for the task execution - LogLinks []*core.TaskLog `protobuf:"bytes,2,rep,name=log_links,json=logLinks,proto3" json:"log_links,omitempty"` } func (x *GetTaskResponse) Reset() { *x = GetTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[4] + mi := &file_flyteidl_admin_agent_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -421,7 +726,7 @@ func (x *GetTaskResponse) String() string { func (*GetTaskResponse) ProtoMessage() {} func (x *GetTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[4] + mi := &file_flyteidl_admin_agent_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -434,7 +739,7 @@ func (x *GetTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskResponse.ProtoReflect.Descriptor instead. func (*GetTaskResponse) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{4} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{8} } func (x *GetTaskResponse) GetResource() *Resource { @@ -444,13 +749,6 @@ func (x *GetTaskResponse) GetResource() *Resource { return nil } -func (x *GetTaskResponse) GetLogLinks() []*core.TaskLog { - if x != nil { - return x.LogLinks - } - return nil -} - type Resource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -470,12 +768,14 @@ type Resource struct { LogLinks []*core.TaskLog `protobuf:"bytes,4,rep,name=log_links,json=logLinks,proto3" json:"log_links,omitempty"` // The phase of the execution is used to determine the phase of the plugin's execution. 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"` } func (x *Resource) Reset() { *x = Resource{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[5] + mi := &file_flyteidl_admin_agent_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -488,7 +788,7 @@ func (x *Resource) String() string { func (*Resource) ProtoMessage() {} func (x *Resource) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[5] + mi := &file_flyteidl_admin_agent_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -501,7 +801,7 @@ func (x *Resource) ProtoReflect() protoreflect.Message { // Deprecated: Use Resource.ProtoReflect.Descriptor instead. func (*Resource) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{5} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{9} } // Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. @@ -540,6 +840,13 @@ func (x *Resource) GetPhase() core.TaskExecution_Phase { return core.TaskExecution_Phase(0) } +func (x *Resource) GetCustomInfo() *structpb.Struct { + if x != nil { + return x.CustomInfo + } + return nil +} + // A message used to delete a task. type DeleteTaskRequest struct { state protoimpl.MessageState @@ -547,15 +854,19 @@ type DeleteTaskRequest struct { unknownFields protoimpl.UnknownFields // A predefined yet extensible Task type identifier. + // + // Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. TaskType string `protobuf:"bytes,1,opt,name=task_type,json=taskType,proto3" json:"task_type,omitempty"` // Metadata about the resource to be pass to the agent. ResourceMeta []byte `protobuf:"bytes,2,opt,name=resource_meta,json=resourceMeta,proto3" json:"resource_meta,omitempty"` + // A predefined yet extensible Task type identifier. + TaskCategory *TaskCategory `protobuf:"bytes,3,opt,name=task_category,json=taskCategory,proto3" json:"task_category,omitempty"` } func (x *DeleteTaskRequest) Reset() { *x = DeleteTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[6] + mi := &file_flyteidl_admin_agent_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -568,7 +879,7 @@ func (x *DeleteTaskRequest) String() string { func (*DeleteTaskRequest) ProtoMessage() {} func (x *DeleteTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[6] + mi := &file_flyteidl_admin_agent_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -581,9 +892,10 @@ func (x *DeleteTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTaskRequest.ProtoReflect.Descriptor instead. func (*DeleteTaskRequest) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{6} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{10} } +// Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. func (x *DeleteTaskRequest) GetTaskType() string { if x != nil { return x.TaskType @@ -598,6 +910,13 @@ func (x *DeleteTaskRequest) GetResourceMeta() []byte { return nil } +func (x *DeleteTaskRequest) GetTaskCategory() *TaskCategory { + if x != nil { + return x.TaskCategory + } + return nil +} + // Response to delete a task. type DeleteTaskResponse struct { state protoimpl.MessageState @@ -608,7 +927,7 @@ type DeleteTaskResponse struct { func (x *DeleteTaskResponse) Reset() { *x = DeleteTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[7] + mi := &file_flyteidl_admin_agent_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -621,7 +940,7 @@ func (x *DeleteTaskResponse) String() string { func (*DeleteTaskResponse) ProtoMessage() {} func (x *DeleteTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[7] + mi := &file_flyteidl_admin_agent_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -634,7 +953,7 @@ func (x *DeleteTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTaskResponse.ProtoReflect.Descriptor instead. func (*DeleteTaskResponse) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{7} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{11} } // A message containing the agent metadata. @@ -646,13 +965,23 @@ type Agent struct { // Name is the developer-assigned name of the agent. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // SupportedTaskTypes are the types of the tasks that the agent can handle. + // + // Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. SupportedTaskTypes []string `protobuf:"bytes,2,rep,name=supported_task_types,json=supportedTaskTypes,proto3" json:"supported_task_types,omitempty"` + // IsSync indicates whether this agent is a sync agent. Sync agents are expected to return their + // results synchronously when called by propeller. Given that sync agents can affect the performance + // of the system, it's important to enforce strict timeout policies. + // An Async agent, on the other hand, is required to be able to identify jobs by an + // identifier and query for job statuses as jobs progress. + IsSync bool `protobuf:"varint,3,opt,name=is_sync,json=isSync,proto3" json:"is_sync,omitempty"` + // Supported_task_categories are the categories of the tasks that the agent can handle. + SupportedTaskCategories []*TaskCategory `protobuf:"bytes,4,rep,name=supported_task_categories,json=supportedTaskCategories,proto3" json:"supported_task_categories,omitempty"` } func (x *Agent) Reset() { *x = Agent{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[8] + mi := &file_flyteidl_admin_agent_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -665,7 +994,7 @@ func (x *Agent) String() string { func (*Agent) ProtoMessage() {} func (x *Agent) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[8] + mi := &file_flyteidl_admin_agent_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -678,21 +1007,93 @@ func (x *Agent) ProtoReflect() protoreflect.Message { // Deprecated: Use Agent.ProtoReflect.Descriptor instead. func (*Agent) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{8} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{12} +} + +func (x *Agent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. +func (x *Agent) GetSupportedTaskTypes() []string { + if x != nil { + return x.SupportedTaskTypes + } + return nil +} + +func (x *Agent) GetIsSync() bool { + if x != nil { + return x.IsSync + } + return false +} + +func (x *Agent) GetSupportedTaskCategories() []*TaskCategory { + if x != nil { + return x.SupportedTaskCategories + } + return nil +} + +type TaskCategory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the task type. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The version of the task type. + Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *TaskCategory) Reset() { + *x = TaskCategory{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_admin_agent_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskCategory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskCategory) ProtoMessage() {} + +func (x *TaskCategory) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_admin_agent_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 TaskCategory.ProtoReflect.Descriptor instead. +func (*TaskCategory) Descriptor() ([]byte, []int) { + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{13} } -func (x *Agent) GetName() string { +func (x *TaskCategory) GetName() string { if x != nil { return x.Name } return "" } -func (x *Agent) GetSupportedTaskTypes() []string { +func (x *TaskCategory) GetVersion() int32 { if x != nil { - return x.SupportedTaskTypes + return x.Version } - return nil + return 0 } // A request to get an agent. @@ -708,7 +1109,7 @@ type GetAgentRequest struct { func (x *GetAgentRequest) Reset() { *x = GetAgentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[9] + mi := &file_flyteidl_admin_agent_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -721,7 +1122,7 @@ func (x *GetAgentRequest) String() string { func (*GetAgentRequest) ProtoMessage() {} func (x *GetAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[9] + mi := &file_flyteidl_admin_agent_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -734,7 +1135,7 @@ func (x *GetAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentRequest.ProtoReflect.Descriptor instead. func (*GetAgentRequest) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{9} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{14} } func (x *GetAgentRequest) GetName() string { @@ -756,7 +1157,7 @@ type GetAgentResponse struct { func (x *GetAgentResponse) Reset() { *x = GetAgentResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[10] + mi := &file_flyteidl_admin_agent_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -769,7 +1170,7 @@ func (x *GetAgentResponse) String() string { func (*GetAgentResponse) ProtoMessage() {} func (x *GetAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[10] + mi := &file_flyteidl_admin_agent_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -782,7 +1183,7 @@ func (x *GetAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentResponse.ProtoReflect.Descriptor instead. func (*GetAgentResponse) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{10} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{15} } func (x *GetAgentResponse) GetAgent() *Agent { @@ -802,7 +1203,7 @@ type ListAgentsRequest struct { func (x *ListAgentsRequest) Reset() { *x = ListAgentsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[11] + mi := &file_flyteidl_admin_agent_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -815,7 +1216,7 @@ func (x *ListAgentsRequest) String() string { func (*ListAgentsRequest) ProtoMessage() {} func (x *ListAgentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[11] + mi := &file_flyteidl_admin_agent_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -828,7 +1229,7 @@ func (x *ListAgentsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAgentsRequest.ProtoReflect.Descriptor instead. func (*ListAgentsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{11} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{16} } // A response containing a list of agents. @@ -843,7 +1244,7 @@ type ListAgentsResponse struct { func (x *ListAgentsResponse) Reset() { *x = ListAgentsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[12] + mi := &file_flyteidl_admin_agent_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -856,7 +1257,7 @@ func (x *ListAgentsResponse) String() string { func (*ListAgentsResponse) ProtoMessage() {} func (x *ListAgentsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[12] + mi := &file_flyteidl_admin_agent_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -869,7 +1270,7 @@ func (x *ListAgentsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAgentsResponse.ProtoReflect.Descriptor instead. func (*ListAgentsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{12} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{17} } func (x *ListAgentsResponse) GetAgents() []*Agent { @@ -886,6 +1287,8 @@ type GetTaskMetricsRequest struct { unknownFields protoimpl.UnknownFields // A predefined yet extensible Task type identifier. + // + // Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. TaskType string `protobuf:"bytes,1,opt,name=task_type,json=taskType,proto3" json:"task_type,omitempty"` // Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). ResourceMeta []byte `protobuf:"bytes,2,opt,name=resource_meta,json=resourceMeta,proto3" json:"resource_meta,omitempty"` @@ -898,12 +1301,14 @@ type GetTaskMetricsRequest struct { EndTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // Query resolution step width in duration format or float number of seconds. Step *durationpb.Duration `protobuf:"bytes,6,opt,name=step,proto3" json:"step,omitempty"` + // A predefined yet extensible Task type identifier. + TaskCategory *TaskCategory `protobuf:"bytes,7,opt,name=task_category,json=taskCategory,proto3" json:"task_category,omitempty"` } func (x *GetTaskMetricsRequest) Reset() { *x = GetTaskMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[13] + mi := &file_flyteidl_admin_agent_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -916,7 +1321,7 @@ func (x *GetTaskMetricsRequest) String() string { func (*GetTaskMetricsRequest) ProtoMessage() {} func (x *GetTaskMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[13] + mi := &file_flyteidl_admin_agent_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -929,9 +1334,10 @@ func (x *GetTaskMetricsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskMetricsRequest.ProtoReflect.Descriptor instead. func (*GetTaskMetricsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{13} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{18} } +// Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. func (x *GetTaskMetricsRequest) GetTaskType() string { if x != nil { return x.TaskType @@ -974,6 +1380,13 @@ func (x *GetTaskMetricsRequest) GetStep() *durationpb.Duration { return nil } +func (x *GetTaskMetricsRequest) GetTaskCategory() *TaskCategory { + if x != nil { + return x.TaskCategory + } + return nil +} + // A response containing a list of metrics for a task execution. type GetTaskMetricsResponse struct { state protoimpl.MessageState @@ -987,7 +1400,7 @@ type GetTaskMetricsResponse struct { func (x *GetTaskMetricsResponse) Reset() { *x = GetTaskMetricsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[14] + mi := &file_flyteidl_admin_agent_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1000,7 +1413,7 @@ func (x *GetTaskMetricsResponse) String() string { func (*GetTaskMetricsResponse) ProtoMessage() {} func (x *GetTaskMetricsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[14] + mi := &file_flyteidl_admin_agent_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1013,7 +1426,7 @@ func (x *GetTaskMetricsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskMetricsResponse.ProtoReflect.Descriptor instead. func (*GetTaskMetricsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{14} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{19} } func (x *GetTaskMetricsResponse) GetResults() []*core.ExecutionMetricResult { @@ -1030,6 +1443,8 @@ type GetTaskLogsRequest struct { unknownFields protoimpl.UnknownFields // A predefined yet extensible Task type identifier. + // + // Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. TaskType string `protobuf:"bytes,1,opt,name=task_type,json=taskType,proto3" json:"task_type,omitempty"` // Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). ResourceMeta []byte `protobuf:"bytes,2,opt,name=resource_meta,json=resourceMeta,proto3" json:"resource_meta,omitempty"` @@ -1038,12 +1453,14 @@ type GetTaskLogsRequest struct { // In the case of multiple pages of results, the server-provided token can be used to fetch the next page // in a query. If there are no more results, this value will be empty. Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` + // A predefined yet extensible Task type identifier. + TaskCategory *TaskCategory `protobuf:"bytes,5,opt,name=task_category,json=taskCategory,proto3" json:"task_category,omitempty"` } func (x *GetTaskLogsRequest) Reset() { *x = GetTaskLogsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[15] + mi := &file_flyteidl_admin_agent_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1056,7 +1473,7 @@ func (x *GetTaskLogsRequest) String() string { func (*GetTaskLogsRequest) ProtoMessage() {} func (x *GetTaskLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[15] + mi := &file_flyteidl_admin_agent_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1069,9 +1486,10 @@ func (x *GetTaskLogsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskLogsRequest.ProtoReflect.Descriptor instead. func (*GetTaskLogsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{15} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{20} } +// Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. func (x *GetTaskLogsRequest) GetTaskType() string { if x != nil { return x.TaskType @@ -1100,23 +1518,127 @@ func (x *GetTaskLogsRequest) GetToken() string { return "" } -// A response containing the logs for a task execution. -type GetTaskLogsResponse struct { +func (x *GetTaskLogsRequest) GetTaskCategory() *TaskCategory { + if x != nil { + return x.TaskCategory + } + return nil +} + +type GetTaskLogsResponseHeader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The execution log results. - Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` // In the case of multiple pages of results, the server-provided token can be used to fetch the next page // in a query. If there are no more results, this value will be empty. - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` +} + +func (x *GetTaskLogsResponseHeader) Reset() { + *x = GetTaskLogsResponseHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_admin_agent_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTaskLogsResponseHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTaskLogsResponseHeader) ProtoMessage() {} + +func (x *GetTaskLogsResponseHeader) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_admin_agent_proto_msgTypes[21] + 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 GetTaskLogsResponseHeader.ProtoReflect.Descriptor instead. +func (*GetTaskLogsResponseHeader) Descriptor() ([]byte, []int) { + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{21} +} + +func (x *GetTaskLogsResponseHeader) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +type GetTaskLogsResponseBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The execution log results. + Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *GetTaskLogsResponseBody) Reset() { + *x = GetTaskLogsResponseBody{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_admin_agent_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTaskLogsResponseBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTaskLogsResponseBody) ProtoMessage() {} + +func (x *GetTaskLogsResponseBody) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_admin_agent_proto_msgTypes[22] + 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 GetTaskLogsResponseBody.ProtoReflect.Descriptor instead. +func (*GetTaskLogsResponseBody) Descriptor() ([]byte, []int) { + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{22} +} + +func (x *GetTaskLogsResponseBody) GetResults() []string { + if x != nil { + return x.Results + } + return nil +} + +// A response containing the logs for a task execution. +type GetTaskLogsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Part: + // + // *GetTaskLogsResponse_Header + // *GetTaskLogsResponse_Body + Part isGetTaskLogsResponse_Part `protobuf_oneof:"part"` } func (x *GetTaskLogsResponse) Reset() { *x = GetTaskLogsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_admin_agent_proto_msgTypes[16] + mi := &file_flyteidl_admin_agent_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1129,7 +1651,7 @@ func (x *GetTaskLogsResponse) String() string { func (*GetTaskLogsResponse) ProtoMessage() {} func (x *GetTaskLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_admin_agent_proto_msgTypes[16] + mi := &file_flyteidl_admin_agent_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1142,23 +1664,46 @@ func (x *GetTaskLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskLogsResponse.ProtoReflect.Descriptor instead. func (*GetTaskLogsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{16} + return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{23} } -func (x *GetTaskLogsResponse) GetResults() []string { - if x != nil { - return x.Results +func (m *GetTaskLogsResponse) GetPart() isGetTaskLogsResponse_Part { + if m != nil { + return m.Part } return nil } -func (x *GetTaskLogsResponse) GetToken() string { - if x != nil { - return x.Token +func (x *GetTaskLogsResponse) GetHeader() *GetTaskLogsResponseHeader { + if x, ok := x.GetPart().(*GetTaskLogsResponse_Header); ok { + return x.Header } - return "" + return nil +} + +func (x *GetTaskLogsResponse) GetBody() *GetTaskLogsResponseBody { + if x, ok := x.GetPart().(*GetTaskLogsResponse_Body); ok { + return x.Body + } + return nil } +type isGetTaskLogsResponse_Part interface { + isGetTaskLogsResponse_Part() +} + +type GetTaskLogsResponse_Header struct { + Header *GetTaskLogsResponseHeader `protobuf:"bytes,1,opt,name=header,proto3,oneof"` +} + +type GetTaskLogsResponse_Body struct { + Body *GetTaskLogsResponseBody `protobuf:"bytes,2,opt,name=body,proto3,oneof"` +} + +func (*GetTaskLogsResponse_Header) isGetTaskLogsResponse_Part() {} + +func (*GetTaskLogsResponse_Body) isGetTaskLogsResponse_Part() {} + var File_flyteidl_admin_agent_proto protoreflect.FileDescriptor var file_flyteidl_admin_agent_proto_rawDesc = []byte{ @@ -1168,189 +1713,286 @@ var file_flyteidl_admin_agent_proto_rawDesc = []byte{ 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, 0x1a, 0x1e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, - 0x6f, 0x72, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x98, 0x05, 0x0a, 0x15, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x52, 0x0a, 0x11, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 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, - 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 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, 0x12, 0x49, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, + 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, + 0x72, 0x65, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, + 0x72, 0x65, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, + 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 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, 0xe9, + 0x06, 0x0a, 0x15, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x52, 0x0a, 0x11, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 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, 0x0f, 0x74, 0x61, 0x73, + 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 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, 0x12, 0x49, 0x0a, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 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, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 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, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x2e, 0x0a, 0x13, 0x6b, 0x38, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x38, + 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x74, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 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, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, - 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, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6b, 0x38, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x6b, 0x38, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x74, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3f, 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, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 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, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 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, 0x1a, 0x47, 0x0a, 0x19, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 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, - 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, 0x7a, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 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, 0x48, 0x00, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x72, 0x65, 0x73, 0x22, - 0x52, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 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, 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, 0x22, 0x7c, 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, 0x12, 0x33, 0x0a, 0x09, - 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 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, 0x22, 0xf9, 0x01, 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, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, + 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, + 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x46, + 0x0a, 0x1f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, + 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, + 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, + 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x09, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1a, 0x47, 0x0a, 0x19, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 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, 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, 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, 0x22, 0x55, 0x0a, - 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 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, - 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, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 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, 0x30, 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, 0x52, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x73, 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, 0x94, 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, 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, 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, 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, 0x82, 0x01, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 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, 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, 0x22, 0x45, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2a, 0x5e, 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, 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, + 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, 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, 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 ( @@ -1366,64 +2008,87 @@ func file_flyteidl_admin_agent_proto_rawDescGZIP() []byte { } var file_flyteidl_admin_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_flyteidl_admin_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_flyteidl_admin_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_flyteidl_admin_agent_proto_goTypes = []interface{}{ - (State)(0), // 0: flyteidl.admin.State - (*TaskExecutionMetadata)(nil), // 1: flyteidl.admin.TaskExecutionMetadata - (*CreateTaskRequest)(nil), // 2: flyteidl.admin.CreateTaskRequest - (*CreateTaskResponse)(nil), // 3: flyteidl.admin.CreateTaskResponse - (*GetTaskRequest)(nil), // 4: flyteidl.admin.GetTaskRequest - (*GetTaskResponse)(nil), // 5: flyteidl.admin.GetTaskResponse - (*Resource)(nil), // 6: flyteidl.admin.Resource - (*DeleteTaskRequest)(nil), // 7: flyteidl.admin.DeleteTaskRequest - (*DeleteTaskResponse)(nil), // 8: flyteidl.admin.DeleteTaskResponse - (*Agent)(nil), // 9: flyteidl.admin.Agent - (*GetAgentRequest)(nil), // 10: flyteidl.admin.GetAgentRequest - (*GetAgentResponse)(nil), // 11: flyteidl.admin.GetAgentResponse - (*ListAgentsRequest)(nil), // 12: flyteidl.admin.ListAgentsRequest - (*ListAgentsResponse)(nil), // 13: flyteidl.admin.ListAgentsResponse - (*GetTaskMetricsRequest)(nil), // 14: flyteidl.admin.GetTaskMetricsRequest - (*GetTaskMetricsResponse)(nil), // 15: flyteidl.admin.GetTaskMetricsResponse - (*GetTaskLogsRequest)(nil), // 16: flyteidl.admin.GetTaskLogsRequest - (*GetTaskLogsResponse)(nil), // 17: flyteidl.admin.GetTaskLogsResponse - nil, // 18: flyteidl.admin.TaskExecutionMetadata.LabelsEntry - nil, // 19: flyteidl.admin.TaskExecutionMetadata.AnnotationsEntry - nil, // 20: flyteidl.admin.TaskExecutionMetadata.EnvironmentVariablesEntry - (*core.TaskExecutionIdentifier)(nil), // 21: flyteidl.core.TaskExecutionIdentifier - (*core.LiteralMap)(nil), // 22: flyteidl.core.LiteralMap - (*core.TaskTemplate)(nil), // 23: flyteidl.core.TaskTemplate - (*core.TaskLog)(nil), // 24: flyteidl.core.TaskLog - (core.TaskExecution_Phase)(0), // 25: flyteidl.core.TaskExecution.Phase - (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 27: google.protobuf.Duration - (*core.ExecutionMetricResult)(nil), // 28: flyteidl.core.ExecutionMetricResult + (State)(0), // 0: flyteidl.admin.State + (*TaskExecutionMetadata)(nil), // 1: flyteidl.admin.TaskExecutionMetadata + (*CreateTaskRequest)(nil), // 2: flyteidl.admin.CreateTaskRequest + (*CreateTaskResponse)(nil), // 3: flyteidl.admin.CreateTaskResponse + (*CreateRequestHeader)(nil), // 4: flyteidl.admin.CreateRequestHeader + (*ExecuteTaskSyncRequest)(nil), // 5: flyteidl.admin.ExecuteTaskSyncRequest + (*ExecuteTaskSyncResponseHeader)(nil), // 6: flyteidl.admin.ExecuteTaskSyncResponseHeader + (*ExecuteTaskSyncResponse)(nil), // 7: flyteidl.admin.ExecuteTaskSyncResponse + (*GetTaskRequest)(nil), // 8: flyteidl.admin.GetTaskRequest + (*GetTaskResponse)(nil), // 9: flyteidl.admin.GetTaskResponse + (*Resource)(nil), // 10: flyteidl.admin.Resource + (*DeleteTaskRequest)(nil), // 11: flyteidl.admin.DeleteTaskRequest + (*DeleteTaskResponse)(nil), // 12: flyteidl.admin.DeleteTaskResponse + (*Agent)(nil), // 13: flyteidl.admin.Agent + (*TaskCategory)(nil), // 14: flyteidl.admin.TaskCategory + (*GetAgentRequest)(nil), // 15: flyteidl.admin.GetAgentRequest + (*GetAgentResponse)(nil), // 16: flyteidl.admin.GetAgentResponse + (*ListAgentsRequest)(nil), // 17: flyteidl.admin.ListAgentsRequest + (*ListAgentsResponse)(nil), // 18: flyteidl.admin.ListAgentsResponse + (*GetTaskMetricsRequest)(nil), // 19: flyteidl.admin.GetTaskMetricsRequest + (*GetTaskMetricsResponse)(nil), // 20: flyteidl.admin.GetTaskMetricsResponse + (*GetTaskLogsRequest)(nil), // 21: flyteidl.admin.GetTaskLogsRequest + (*GetTaskLogsResponseHeader)(nil), // 22: flyteidl.admin.GetTaskLogsResponseHeader + (*GetTaskLogsResponseBody)(nil), // 23: flyteidl.admin.GetTaskLogsResponseBody + (*GetTaskLogsResponse)(nil), // 24: flyteidl.admin.GetTaskLogsResponse + nil, // 25: flyteidl.admin.TaskExecutionMetadata.LabelsEntry + nil, // 26: flyteidl.admin.TaskExecutionMetadata.AnnotationsEntry + nil, // 27: flyteidl.admin.TaskExecutionMetadata.EnvironmentVariablesEntry + (*core.TaskExecutionIdentifier)(nil), // 28: flyteidl.core.TaskExecutionIdentifier + (*core.TaskNodeOverrides)(nil), // 29: flyteidl.core.TaskNodeOverrides + (*core.LiteralMap)(nil), // 30: flyteidl.core.LiteralMap + (*core.TaskTemplate)(nil), // 31: flyteidl.core.TaskTemplate + (*core.TaskLog)(nil), // 32: flyteidl.core.TaskLog + (core.TaskExecution_Phase)(0), // 33: flyteidl.core.TaskExecution.Phase + (*structpb.Struct)(nil), // 34: google.protobuf.Struct + (*timestamppb.Timestamp)(nil), // 35: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 36: google.protobuf.Duration + (*core.ExecutionMetricResult)(nil), // 37: flyteidl.core.ExecutionMetricResult } var file_flyteidl_admin_agent_proto_depIdxs = []int32{ - 21, // 0: flyteidl.admin.TaskExecutionMetadata.task_execution_id:type_name -> flyteidl.core.TaskExecutionIdentifier - 18, // 1: flyteidl.admin.TaskExecutionMetadata.labels:type_name -> flyteidl.admin.TaskExecutionMetadata.LabelsEntry - 19, // 2: flyteidl.admin.TaskExecutionMetadata.annotations:type_name -> flyteidl.admin.TaskExecutionMetadata.AnnotationsEntry - 20, // 3: flyteidl.admin.TaskExecutionMetadata.environment_variables:type_name -> flyteidl.admin.TaskExecutionMetadata.EnvironmentVariablesEntry - 22, // 4: flyteidl.admin.CreateTaskRequest.inputs:type_name -> flyteidl.core.LiteralMap - 23, // 5: flyteidl.admin.CreateTaskRequest.template:type_name -> flyteidl.core.TaskTemplate - 1, // 6: flyteidl.admin.CreateTaskRequest.task_execution_metadata:type_name -> flyteidl.admin.TaskExecutionMetadata - 6, // 7: flyteidl.admin.CreateTaskResponse.resource:type_name -> flyteidl.admin.Resource - 6, // 8: flyteidl.admin.GetTaskResponse.resource:type_name -> flyteidl.admin.Resource - 24, // 9: flyteidl.admin.GetTaskResponse.log_links:type_name -> flyteidl.core.TaskLog - 0, // 10: flyteidl.admin.Resource.state:type_name -> flyteidl.admin.State - 22, // 11: flyteidl.admin.Resource.outputs:type_name -> flyteidl.core.LiteralMap - 24, // 12: flyteidl.admin.Resource.log_links:type_name -> flyteidl.core.TaskLog - 25, // 13: flyteidl.admin.Resource.phase:type_name -> flyteidl.core.TaskExecution.Phase - 9, // 14: flyteidl.admin.GetAgentResponse.agent:type_name -> flyteidl.admin.Agent - 9, // 15: flyteidl.admin.ListAgentsResponse.agents:type_name -> flyteidl.admin.Agent - 26, // 16: flyteidl.admin.GetTaskMetricsRequest.start_time:type_name -> google.protobuf.Timestamp - 26, // 17: flyteidl.admin.GetTaskMetricsRequest.end_time:type_name -> google.protobuf.Timestamp - 27, // 18: flyteidl.admin.GetTaskMetricsRequest.step:type_name -> google.protobuf.Duration - 28, // 19: flyteidl.admin.GetTaskMetricsResponse.results:type_name -> flyteidl.core.ExecutionMetricResult - 20, // [20:20] is the sub-list for method output_type - 20, // [20:20] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 28, // 0: flyteidl.admin.TaskExecutionMetadata.task_execution_id:type_name -> flyteidl.core.TaskExecutionIdentifier + 25, // 1: flyteidl.admin.TaskExecutionMetadata.labels:type_name -> flyteidl.admin.TaskExecutionMetadata.LabelsEntry + 26, // 2: flyteidl.admin.TaskExecutionMetadata.annotations:type_name -> flyteidl.admin.TaskExecutionMetadata.AnnotationsEntry + 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.CreateTaskRequest.inputs:type_name -> flyteidl.core.LiteralMap + 31, // 6: flyteidl.admin.CreateTaskRequest.template:type_name -> flyteidl.core.TaskTemplate + 1, // 7: flyteidl.admin.CreateTaskRequest.task_execution_metadata:type_name -> flyteidl.admin.TaskExecutionMetadata + 31, // 8: flyteidl.admin.CreateRequestHeader.template:type_name -> flyteidl.core.TaskTemplate + 1, // 9: flyteidl.admin.CreateRequestHeader.task_execution_metadata:type_name -> flyteidl.admin.TaskExecutionMetadata + 4, // 10: flyteidl.admin.ExecuteTaskSyncRequest.header:type_name -> flyteidl.admin.CreateRequestHeader + 30, // 11: flyteidl.admin.ExecuteTaskSyncRequest.inputs:type_name -> flyteidl.core.LiteralMap + 10, // 12: flyteidl.admin.ExecuteTaskSyncResponseHeader.resource:type_name -> flyteidl.admin.Resource + 6, // 13: flyteidl.admin.ExecuteTaskSyncResponse.header:type_name -> flyteidl.admin.ExecuteTaskSyncResponseHeader + 30, // 14: flyteidl.admin.ExecuteTaskSyncResponse.outputs:type_name -> flyteidl.core.LiteralMap + 14, // 15: flyteidl.admin.GetTaskRequest.task_category:type_name -> flyteidl.admin.TaskCategory + 10, // 16: flyteidl.admin.GetTaskResponse.resource:type_name -> flyteidl.admin.Resource + 0, // 17: flyteidl.admin.Resource.state:type_name -> flyteidl.admin.State + 30, // 18: flyteidl.admin.Resource.outputs:type_name -> flyteidl.core.LiteralMap + 32, // 19: flyteidl.admin.Resource.log_links:type_name -> flyteidl.core.TaskLog + 33, // 20: flyteidl.admin.Resource.phase:type_name -> flyteidl.core.TaskExecution.Phase + 34, // 21: flyteidl.admin.Resource.custom_info:type_name -> google.protobuf.Struct + 14, // 22: flyteidl.admin.DeleteTaskRequest.task_category:type_name -> flyteidl.admin.TaskCategory + 14, // 23: flyteidl.admin.Agent.supported_task_categories:type_name -> flyteidl.admin.TaskCategory + 13, // 24: flyteidl.admin.GetAgentResponse.agent:type_name -> flyteidl.admin.Agent + 13, // 25: flyteidl.admin.ListAgentsResponse.agents:type_name -> flyteidl.admin.Agent + 35, // 26: flyteidl.admin.GetTaskMetricsRequest.start_time:type_name -> google.protobuf.Timestamp + 35, // 27: flyteidl.admin.GetTaskMetricsRequest.end_time:type_name -> google.protobuf.Timestamp + 36, // 28: flyteidl.admin.GetTaskMetricsRequest.step:type_name -> google.protobuf.Duration + 14, // 29: flyteidl.admin.GetTaskMetricsRequest.task_category:type_name -> flyteidl.admin.TaskCategory + 37, // 30: flyteidl.admin.GetTaskMetricsResponse.results:type_name -> flyteidl.core.ExecutionMetricResult + 14, // 31: flyteidl.admin.GetTaskLogsRequest.task_category:type_name -> flyteidl.admin.TaskCategory + 22, // 32: flyteidl.admin.GetTaskLogsResponse.header:type_name -> flyteidl.admin.GetTaskLogsResponseHeader + 23, // 33: flyteidl.admin.GetTaskLogsResponse.body:type_name -> flyteidl.admin.GetTaskLogsResponseBody + 34, // [34:34] is the sub-list for method output_type + 34, // [34:34] is the sub-list for method input_type + 34, // [34:34] is the sub-list for extension type_name + 34, // [34:34] is the sub-list for extension extendee + 0, // [0:34] is the sub-list for field type_name } func init() { file_flyteidl_admin_agent_proto_init() } @@ -1469,7 +2134,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTaskRequest); i { + switch v := v.(*CreateRequestHeader); i { case 0: return &v.state case 1: @@ -1481,7 +2146,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTaskResponse); i { + switch v := v.(*ExecuteTaskSyncRequest); i { case 0: return &v.state case 1: @@ -1493,7 +2158,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resource); i { + switch v := v.(*ExecuteTaskSyncResponseHeader); i { case 0: return &v.state case 1: @@ -1505,7 +2170,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTaskRequest); i { + switch v := v.(*ExecuteTaskSyncResponse); i { case 0: return &v.state case 1: @@ -1517,7 +2182,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTaskResponse); i { + switch v := v.(*GetTaskRequest); i { case 0: return &v.state case 1: @@ -1529,7 +2194,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Agent); i { + switch v := v.(*GetTaskResponse); i { case 0: return &v.state case 1: @@ -1541,7 +2206,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAgentRequest); i { + switch v := v.(*Resource); i { case 0: return &v.state case 1: @@ -1553,7 +2218,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAgentResponse); i { + switch v := v.(*DeleteTaskRequest); i { case 0: return &v.state case 1: @@ -1565,7 +2230,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAgentsRequest); i { + switch v := v.(*DeleteTaskResponse); i { case 0: return &v.state case 1: @@ -1577,7 +2242,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAgentsResponse); i { + switch v := v.(*Agent); i { case 0: return &v.state case 1: @@ -1589,7 +2254,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTaskMetricsRequest); i { + switch v := v.(*TaskCategory); i { case 0: return &v.state case 1: @@ -1601,7 +2266,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTaskMetricsResponse); i { + switch v := v.(*GetAgentRequest); i { case 0: return &v.state case 1: @@ -1613,7 +2278,7 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTaskLogsRequest); i { + switch v := v.(*GetAgentResponse); i { case 0: return &v.state case 1: @@ -1625,6 +2290,90 @@ func file_flyteidl_admin_agent_proto_init() { } } file_flyteidl_admin_agent_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAgentsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_admin_agent_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAgentsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_admin_agent_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTaskMetricsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_admin_agent_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTaskMetricsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_admin_agent_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTaskLogsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_admin_agent_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTaskLogsResponseHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_admin_agent_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTaskLogsResponseBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_admin_agent_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTaskLogsResponse); i { case 0: return &v.state @@ -1637,9 +2386,17 @@ func file_flyteidl_admin_agent_proto_init() { } } } - file_flyteidl_admin_agent_proto_msgTypes[2].OneofWrappers = []interface{}{ - (*CreateTaskResponse_ResourceMeta)(nil), - (*CreateTaskResponse_Resource)(nil), + file_flyteidl_admin_agent_proto_msgTypes[4].OneofWrappers = []interface{}{ + (*ExecuteTaskSyncRequest_Header)(nil), + (*ExecuteTaskSyncRequest_Inputs)(nil), + } + file_flyteidl_admin_agent_proto_msgTypes[6].OneofWrappers = []interface{}{ + (*ExecuteTaskSyncResponse_Header)(nil), + (*ExecuteTaskSyncResponse_Outputs)(nil), + } + file_flyteidl_admin_agent_proto_msgTypes[23].OneofWrappers = []interface{}{ + (*GetTaskLogsResponse_Header)(nil), + (*GetTaskLogsResponse_Body)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -1647,7 +2404,7 @@ func file_flyteidl_admin_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_admin_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 20, + NumMessages: 27, NumExtensions: 0, NumServices: 0, }, diff --git a/flyteidl/gen/pb-go/flyteidl/service/agent.pb.go b/flyteidl/gen/pb-go/flyteidl/service/agent.pb.go index c9ffc4fa682..078dc9dd8a3 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/agent.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/agent.pb.go @@ -30,99 +30,139 @@ var file_flyteidl_service_agent_proto_rawDesc = []byte{ 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xcc, 0x03, 0x0a, 0x11, 0x41, - 0x73, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x55, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x58, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x22, - 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, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x23, 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, 0x22, 0x00, 0x32, 0xf0, 0x01, 0x0a, 0x14, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1f, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, - 0x6b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xa1, 0x01, 0x0a, 0x10, 0x53, + 0x79, 0x6e, 0x63, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x8c, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, + 0x79, 0x6e, 0x63, 0x12, 0x26, 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, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 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, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, + 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x74, + 0x61, 0x73, 0x6b, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x28, 0x01, 0x30, 0x01, 0x32, 0xe3, + 0x06, 0x0a, 0x11, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x72, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x12, 0xa3, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x12, 0x4f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x74, 0x61, 0x73, + 0x6b, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x7d, 0x12, 0xb7, + 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x42, 0xc2, 0x01, 0x0a, - 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, + 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x62, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5c, 0x2a, 0x5a, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x7d, 0x12, 0xc0, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x59, 0x12, 0x57, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x7b, + 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x7d, 0x12, 0xb6, 0x01, 0x0a, 0x0b, + 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x22, 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, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 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, 0x22, 0x5c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x12, 0x54, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x74, 0x61, 0x73, 0x6b, + 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x7d, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x7d, 0x30, 0x01, 0x32, 0xf0, 0x01, 0x0a, 0x14, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6b, 0x0a, + 0x08, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x6b, 0x0a, 0x0a, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x42, 0xc2, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 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 file_flyteidl_service_agent_proto_goTypes = []interface{}{ - (*admin.CreateTaskRequest)(nil), // 0: flyteidl.admin.CreateTaskRequest - (*admin.GetTaskRequest)(nil), // 1: flyteidl.admin.GetTaskRequest - (*admin.DeleteTaskRequest)(nil), // 2: flyteidl.admin.DeleteTaskRequest - (*admin.GetTaskMetricsRequest)(nil), // 3: flyteidl.admin.GetTaskMetricsRequest - (*admin.GetTaskLogsRequest)(nil), // 4: flyteidl.admin.GetTaskLogsRequest - (*admin.GetAgentRequest)(nil), // 5: flyteidl.admin.GetAgentRequest - (*admin.ListAgentsRequest)(nil), // 6: flyteidl.admin.ListAgentsRequest - (*admin.CreateTaskResponse)(nil), // 7: flyteidl.admin.CreateTaskResponse - (*admin.GetTaskResponse)(nil), // 8: flyteidl.admin.GetTaskResponse - (*admin.DeleteTaskResponse)(nil), // 9: flyteidl.admin.DeleteTaskResponse - (*admin.GetTaskMetricsResponse)(nil), // 10: flyteidl.admin.GetTaskMetricsResponse - (*admin.GetTaskLogsResponse)(nil), // 11: flyteidl.admin.GetTaskLogsResponse - (*admin.GetAgentResponse)(nil), // 12: flyteidl.admin.GetAgentResponse - (*admin.ListAgentsResponse)(nil), // 13: flyteidl.admin.ListAgentsResponse + (*admin.ExecuteTaskSyncRequest)(nil), // 0: flyteidl.admin.ExecuteTaskSyncRequest + (*admin.CreateTaskRequest)(nil), // 1: flyteidl.admin.CreateTaskRequest + (*admin.GetTaskRequest)(nil), // 2: flyteidl.admin.GetTaskRequest + (*admin.DeleteTaskRequest)(nil), // 3: flyteidl.admin.DeleteTaskRequest + (*admin.GetTaskMetricsRequest)(nil), // 4: flyteidl.admin.GetTaskMetricsRequest + (*admin.GetTaskLogsRequest)(nil), // 5: flyteidl.admin.GetTaskLogsRequest + (*admin.GetAgentRequest)(nil), // 6: flyteidl.admin.GetAgentRequest + (*admin.ListAgentsRequest)(nil), // 7: flyteidl.admin.ListAgentsRequest + (*admin.ExecuteTaskSyncResponse)(nil), // 8: flyteidl.admin.ExecuteTaskSyncResponse + (*admin.CreateTaskResponse)(nil), // 9: flyteidl.admin.CreateTaskResponse + (*admin.GetTaskResponse)(nil), // 10: flyteidl.admin.GetTaskResponse + (*admin.DeleteTaskResponse)(nil), // 11: flyteidl.admin.DeleteTaskResponse + (*admin.GetTaskMetricsResponse)(nil), // 12: flyteidl.admin.GetTaskMetricsResponse + (*admin.GetTaskLogsResponse)(nil), // 13: flyteidl.admin.GetTaskLogsResponse + (*admin.GetAgentResponse)(nil), // 14: flyteidl.admin.GetAgentResponse + (*admin.ListAgentsResponse)(nil), // 15: flyteidl.admin.ListAgentsResponse } var file_flyteidl_service_agent_proto_depIdxs = []int32{ - 0, // 0: flyteidl.service.AsyncAgentService.CreateTask:input_type -> flyteidl.admin.CreateTaskRequest - 1, // 1: flyteidl.service.AsyncAgentService.GetTask:input_type -> flyteidl.admin.GetTaskRequest - 2, // 2: flyteidl.service.AsyncAgentService.DeleteTask:input_type -> flyteidl.admin.DeleteTaskRequest - 3, // 3: flyteidl.service.AsyncAgentService.GetTaskMetrics:input_type -> flyteidl.admin.GetTaskMetricsRequest - 4, // 4: flyteidl.service.AsyncAgentService.GetTaskLogs:input_type -> flyteidl.admin.GetTaskLogsRequest - 5, // 5: flyteidl.service.AgentMetadataService.GetAgent:input_type -> flyteidl.admin.GetAgentRequest - 6, // 6: flyteidl.service.AgentMetadataService.ListAgents:input_type -> flyteidl.admin.ListAgentsRequest - 7, // 7: flyteidl.service.AsyncAgentService.CreateTask:output_type -> flyteidl.admin.CreateTaskResponse - 8, // 8: flyteidl.service.AsyncAgentService.GetTask:output_type -> flyteidl.admin.GetTaskResponse - 9, // 9: flyteidl.service.AsyncAgentService.DeleteTask:output_type -> flyteidl.admin.DeleteTaskResponse - 10, // 10: flyteidl.service.AsyncAgentService.GetTaskMetrics:output_type -> flyteidl.admin.GetTaskMetricsResponse - 11, // 11: flyteidl.service.AsyncAgentService.GetTaskLogs:output_type -> flyteidl.admin.GetTaskLogsResponse - 12, // 12: flyteidl.service.AgentMetadataService.GetAgent:output_type -> flyteidl.admin.GetAgentResponse - 13, // 13: flyteidl.service.AgentMetadataService.ListAgents:output_type -> flyteidl.admin.ListAgentsResponse - 7, // [7:14] is the sub-list for method output_type - 0, // [0:7] is the sub-list for method input_type + 0, // 0: flyteidl.service.SyncAgentService.ExecuteTaskSync:input_type -> flyteidl.admin.ExecuteTaskSyncRequest + 1, // 1: flyteidl.service.AsyncAgentService.CreateTask:input_type -> flyteidl.admin.CreateTaskRequest + 2, // 2: flyteidl.service.AsyncAgentService.GetTask:input_type -> flyteidl.admin.GetTaskRequest + 3, // 3: flyteidl.service.AsyncAgentService.DeleteTask:input_type -> flyteidl.admin.DeleteTaskRequest + 4, // 4: flyteidl.service.AsyncAgentService.GetTaskMetrics:input_type -> flyteidl.admin.GetTaskMetricsRequest + 5, // 5: flyteidl.service.AsyncAgentService.GetTaskLogs:input_type -> flyteidl.admin.GetTaskLogsRequest + 6, // 6: flyteidl.service.AgentMetadataService.GetAgent:input_type -> flyteidl.admin.GetAgentRequest + 7, // 7: flyteidl.service.AgentMetadataService.ListAgents:input_type -> flyteidl.admin.ListAgentsRequest + 8, // 8: flyteidl.service.SyncAgentService.ExecuteTaskSync:output_type -> flyteidl.admin.ExecuteTaskSyncResponse + 9, // 9: flyteidl.service.AsyncAgentService.CreateTask:output_type -> flyteidl.admin.CreateTaskResponse + 10, // 10: flyteidl.service.AsyncAgentService.GetTask:output_type -> flyteidl.admin.GetTaskResponse + 11, // 11: flyteidl.service.AsyncAgentService.DeleteTask:output_type -> flyteidl.admin.DeleteTaskResponse + 12, // 12: flyteidl.service.AsyncAgentService.GetTaskMetrics:output_type -> flyteidl.admin.GetTaskMetricsResponse + 13, // 13: flyteidl.service.AsyncAgentService.GetTaskLogs:output_type -> flyteidl.admin.GetTaskLogsResponse + 14, // 14: flyteidl.service.AgentMetadataService.GetAgent:output_type -> flyteidl.admin.GetAgentResponse + 15, // 15: flyteidl.service.AgentMetadataService.ListAgents:output_type -> flyteidl.admin.ListAgentsResponse + 8, // [8:16] is the sub-list for method output_type + 0, // [0:8] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -141,7 +181,7 @@ func file_flyteidl_service_agent_proto_init() { NumEnums: 0, NumMessages: 0, NumExtensions: 0, - NumServices: 2, + NumServices: 3, }, GoTypes: file_flyteidl_service_agent_proto_goTypes, DependencyIndexes: file_flyteidl_service_agent_proto_depIdxs, diff --git a/flyteidl/gen/pb-go/flyteidl/service/agent_grpc.pb.go b/flyteidl/gen/pb-go/flyteidl/service/agent_grpc.pb.go index 67ebe7b012d..98f057da121 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/agent_grpc.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/agent_grpc.pb.go @@ -19,6 +19,128 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 +const ( + SyncAgentService_ExecuteTaskSync_FullMethodName = "/flyteidl.service.SyncAgentService/ExecuteTaskSync" +) + +// SyncAgentServiceClient is the client API for SyncAgentService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type SyncAgentServiceClient interface { + // ExecuteTaskSync streams the create request and inputs to the agent service and streams the outputs back. + ExecuteTaskSync(ctx context.Context, opts ...grpc.CallOption) (SyncAgentService_ExecuteTaskSyncClient, error) +} + +type syncAgentServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewSyncAgentServiceClient(cc grpc.ClientConnInterface) SyncAgentServiceClient { + return &syncAgentServiceClient{cc} +} + +func (c *syncAgentServiceClient) ExecuteTaskSync(ctx context.Context, opts ...grpc.CallOption) (SyncAgentService_ExecuteTaskSyncClient, error) { + stream, err := c.cc.NewStream(ctx, &SyncAgentService_ServiceDesc.Streams[0], SyncAgentService_ExecuteTaskSync_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &syncAgentServiceExecuteTaskSyncClient{stream} + return x, nil +} + +type SyncAgentService_ExecuteTaskSyncClient interface { + Send(*admin.ExecuteTaskSyncRequest) error + Recv() (*admin.ExecuteTaskSyncResponse, error) + grpc.ClientStream +} + +type syncAgentServiceExecuteTaskSyncClient struct { + grpc.ClientStream +} + +func (x *syncAgentServiceExecuteTaskSyncClient) Send(m *admin.ExecuteTaskSyncRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *syncAgentServiceExecuteTaskSyncClient) Recv() (*admin.ExecuteTaskSyncResponse, error) { + m := new(admin.ExecuteTaskSyncResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// SyncAgentServiceServer is the server API for SyncAgentService service. +// All implementations should embed UnimplementedSyncAgentServiceServer +// for forward compatibility +type SyncAgentServiceServer interface { + // ExecuteTaskSync streams the create request and inputs to the agent service and streams the outputs back. + ExecuteTaskSync(SyncAgentService_ExecuteTaskSyncServer) error +} + +// UnimplementedSyncAgentServiceServer should be embedded to have forward compatible implementations. +type UnimplementedSyncAgentServiceServer struct { +} + +func (UnimplementedSyncAgentServiceServer) ExecuteTaskSync(SyncAgentService_ExecuteTaskSyncServer) error { + return status.Errorf(codes.Unimplemented, "method ExecuteTaskSync not implemented") +} + +// UnsafeSyncAgentServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to SyncAgentServiceServer will +// result in compilation errors. +type UnsafeSyncAgentServiceServer interface { + mustEmbedUnimplementedSyncAgentServiceServer() +} + +func RegisterSyncAgentServiceServer(s grpc.ServiceRegistrar, srv SyncAgentServiceServer) { + s.RegisterService(&SyncAgentService_ServiceDesc, srv) +} + +func _SyncAgentService_ExecuteTaskSync_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(SyncAgentServiceServer).ExecuteTaskSync(&syncAgentServiceExecuteTaskSyncServer{stream}) +} + +type SyncAgentService_ExecuteTaskSyncServer interface { + Send(*admin.ExecuteTaskSyncResponse) error + Recv() (*admin.ExecuteTaskSyncRequest, error) + grpc.ServerStream +} + +type syncAgentServiceExecuteTaskSyncServer struct { + grpc.ServerStream +} + +func (x *syncAgentServiceExecuteTaskSyncServer) Send(m *admin.ExecuteTaskSyncResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *syncAgentServiceExecuteTaskSyncServer) Recv() (*admin.ExecuteTaskSyncRequest, error) { + m := new(admin.ExecuteTaskSyncRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// SyncAgentService_ServiceDesc is the grpc.ServiceDesc for SyncAgentService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var SyncAgentService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "flyteidl.service.SyncAgentService", + HandlerType: (*SyncAgentServiceServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "ExecuteTaskSync", + Handler: _SyncAgentService_ExecuteTaskSync_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "flyteidl/service/agent.proto", +} + const ( AsyncAgentService_CreateTask_FullMethodName = "/flyteidl.service.AsyncAgentService/CreateTask" AsyncAgentService_GetTask_FullMethodName = "/flyteidl.service.AsyncAgentService/GetTask" @@ -31,7 +153,7 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type AsyncAgentServiceClient interface { - // Send a task create request to the agent server. + // CreateTask sends a task create request to the agent service. CreateTask(ctx context.Context, in *admin.CreateTaskRequest, opts ...grpc.CallOption) (*admin.CreateTaskResponse, error) // Get job status. GetTask(ctx context.Context, in *admin.GetTaskRequest, opts ...grpc.CallOption) (*admin.GetTaskResponse, error) @@ -44,7 +166,7 @@ type AsyncAgentServiceClient interface { // - various other errors GetTaskMetrics(ctx context.Context, in *admin.GetTaskMetricsRequest, opts ...grpc.CallOption) (*admin.GetTaskMetricsResponse, error) // GetTaskLogs returns task execution logs, if available. - GetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) (*admin.GetTaskLogsResponse, error) + GetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) (AsyncAgentService_GetTaskLogsClient, error) } type asyncAgentServiceClient struct { @@ -91,20 +213,43 @@ func (c *asyncAgentServiceClient) GetTaskMetrics(ctx context.Context, in *admin. return out, nil } -func (c *asyncAgentServiceClient) GetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) (*admin.GetTaskLogsResponse, error) { - out := new(admin.GetTaskLogsResponse) - err := c.cc.Invoke(ctx, AsyncAgentService_GetTaskLogs_FullMethodName, in, out, opts...) +func (c *asyncAgentServiceClient) GetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) (AsyncAgentService_GetTaskLogsClient, error) { + stream, err := c.cc.NewStream(ctx, &AsyncAgentService_ServiceDesc.Streams[0], AsyncAgentService_GetTaskLogs_FullMethodName, opts...) if err != nil { return nil, err } - return out, nil + x := &asyncAgentServiceGetTaskLogsClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type AsyncAgentService_GetTaskLogsClient interface { + Recv() (*admin.GetTaskLogsResponse, error) + grpc.ClientStream +} + +type asyncAgentServiceGetTaskLogsClient struct { + grpc.ClientStream +} + +func (x *asyncAgentServiceGetTaskLogsClient) Recv() (*admin.GetTaskLogsResponse, error) { + m := new(admin.GetTaskLogsResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil } // AsyncAgentServiceServer is the server API for AsyncAgentService service. // All implementations should embed UnimplementedAsyncAgentServiceServer // for forward compatibility type AsyncAgentServiceServer interface { - // Send a task create request to the agent server. + // CreateTask sends a task create request to the agent service. CreateTask(context.Context, *admin.CreateTaskRequest) (*admin.CreateTaskResponse, error) // Get job status. GetTask(context.Context, *admin.GetTaskRequest) (*admin.GetTaskResponse, error) @@ -117,7 +262,7 @@ type AsyncAgentServiceServer interface { // - various other errors GetTaskMetrics(context.Context, *admin.GetTaskMetricsRequest) (*admin.GetTaskMetricsResponse, error) // GetTaskLogs returns task execution logs, if available. - GetTaskLogs(context.Context, *admin.GetTaskLogsRequest) (*admin.GetTaskLogsResponse, error) + GetTaskLogs(*admin.GetTaskLogsRequest, AsyncAgentService_GetTaskLogsServer) error } // UnimplementedAsyncAgentServiceServer should be embedded to have forward compatible implementations. @@ -136,8 +281,8 @@ func (UnimplementedAsyncAgentServiceServer) DeleteTask(context.Context, *admin.D func (UnimplementedAsyncAgentServiceServer) GetTaskMetrics(context.Context, *admin.GetTaskMetricsRequest) (*admin.GetTaskMetricsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTaskMetrics not implemented") } -func (UnimplementedAsyncAgentServiceServer) GetTaskLogs(context.Context, *admin.GetTaskLogsRequest) (*admin.GetTaskLogsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetTaskLogs not implemented") +func (UnimplementedAsyncAgentServiceServer) GetTaskLogs(*admin.GetTaskLogsRequest, AsyncAgentService_GetTaskLogsServer) error { + return status.Errorf(codes.Unimplemented, "method GetTaskLogs not implemented") } // UnsafeAsyncAgentServiceServer may be embedded to opt out of forward compatibility for this service. @@ -223,22 +368,25 @@ func _AsyncAgentService_GetTaskMetrics_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } -func _AsyncAgentService_GetTaskLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(admin.GetTaskLogsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsyncAgentServiceServer).GetTaskLogs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: AsyncAgentService_GetTaskLogs_FullMethodName, +func _AsyncAgentService_GetTaskLogs_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(admin.GetTaskLogsRequest) + if err := stream.RecvMsg(m); err != nil { + return err } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsyncAgentServiceServer).GetTaskLogs(ctx, req.(*admin.GetTaskLogsRequest)) - } - return interceptor(ctx, in, info, handler) + return srv.(AsyncAgentServiceServer).GetTaskLogs(m, &asyncAgentServiceGetTaskLogsServer{stream}) +} + +type AsyncAgentService_GetTaskLogsServer interface { + Send(*admin.GetTaskLogsResponse) error + grpc.ServerStream +} + +type asyncAgentServiceGetTaskLogsServer struct { + grpc.ServerStream +} + +func (x *asyncAgentServiceGetTaskLogsServer) Send(m *admin.GetTaskLogsResponse) error { + return x.ServerStream.SendMsg(m) } // AsyncAgentService_ServiceDesc is the grpc.ServiceDesc for AsyncAgentService service. @@ -264,12 +412,14 @@ var AsyncAgentService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetTaskMetrics", Handler: _AsyncAgentService_GetTaskMetrics_Handler, }, + }, + Streams: []grpc.StreamDesc{ { - MethodName: "GetTaskLogs", - Handler: _AsyncAgentService_GetTaskLogs_Handler, + StreamName: "GetTaskLogs", + Handler: _AsyncAgentService_GetTaskLogs_Handler, + ServerStreams: true, }, }, - Streams: []grpc.StreamDesc{}, Metadata: "flyteidl/service/agent.proto", } diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.pb.gw.go b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.pb.gw.go index a5fec7e0f7c..06ae8800abf 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.pb.gw.go +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.pb.gw.go @@ -33,6 +33,478 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var _ = metadata.Join +func request_SyncAgentService_ExecuteTaskSync_0(ctx context.Context, marshaler runtime.Marshaler, client extService.SyncAgentServiceClient, req *http.Request, pathParams map[string]string) (extService.SyncAgentService_ExecuteTaskSyncClient, runtime.ServerMetadata, error) { + var metadata runtime.ServerMetadata + stream, err := client.ExecuteTaskSync(ctx) + if err != nil { + grpclog.Infof("Failed to start streaming: %v", err) + return nil, metadata, err + } + dec := marshaler.NewDecoder(req.Body) + handleSend := func() error { + var protoReq extAdmin.ExecuteTaskSyncRequest + err := dec.Decode(&protoReq) + if err == io.EOF { + return err + } + if err != nil { + grpclog.Infof("Failed to decode request: %v", err) + return err + } + if err := stream.Send(&protoReq); err != nil { + grpclog.Infof("Failed to send request: %v", err) + return err + } + return nil + } + go func() { + for { + if err := handleSend(); err != nil { + break + } + } + if err := stream.CloseSend(); err != nil { + grpclog.Infof("Failed to terminate client stream: %v", err) + } + }() + header, err := stream.Header() + if err != nil { + grpclog.Infof("Failed to get header from client: %v", err) + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil +} + +func request_AsyncAgentService_CreateTask_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AsyncAgentServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.CreateTaskRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.CreateTask(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AsyncAgentService_CreateTask_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AsyncAgentServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.CreateTaskRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.CreateTask(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_AsyncAgentService_GetTask_0 = &utilities.DoubleArray{Encoding: map[string]int{"task_category": 0, "name": 1, "version": 2, "resource_meta": 3, "resourceMeta": 4}, Base: []int{1, 6, 5, 6, 7, 8, 2, 0, 4, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 3, 4, 5, 6}} +) + +func request_AsyncAgentService_GetTask_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AsyncAgentServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.GetTaskRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["task_category.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.name", err) + } + + val, ok = pathParams["task_category.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.version", err) + } + + val, ok = pathParams["resource_meta"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_meta") + } + + protoReq.ResourceMeta, err = runtime.Bytes(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_meta", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AsyncAgentService_GetTask_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetTask(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AsyncAgentService_GetTask_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AsyncAgentServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.GetTaskRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["task_category.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.name", err) + } + + val, ok = pathParams["task_category.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.version", err) + } + + val, ok = pathParams["resource_meta"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_meta") + } + + protoReq.ResourceMeta, err = runtime.Bytes(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_meta", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AsyncAgentService_GetTask_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetTask(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_AsyncAgentService_DeleteTask_0 = &utilities.DoubleArray{Encoding: map[string]int{"task_category": 0, "name": 1, "version": 2, "resource_meta": 3, "resourceMeta": 4}, Base: []int{1, 6, 5, 6, 7, 8, 2, 0, 4, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 3, 4, 5, 6}} +) + +func request_AsyncAgentService_DeleteTask_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AsyncAgentServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.DeleteTaskRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["task_category.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.name", err) + } + + val, ok = pathParams["task_category.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.version", err) + } + + val, ok = pathParams["resource_meta"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_meta") + } + + protoReq.ResourceMeta, err = runtime.Bytes(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_meta", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AsyncAgentService_DeleteTask_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.DeleteTask(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AsyncAgentService_DeleteTask_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AsyncAgentServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.DeleteTaskRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["task_category.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.name", err) + } + + val, ok = pathParams["task_category.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.version", err) + } + + val, ok = pathParams["resource_meta"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_meta") + } + + protoReq.ResourceMeta, err = runtime.Bytes(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_meta", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AsyncAgentService_DeleteTask_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.DeleteTask(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_AsyncAgentService_GetTaskMetrics_0 = &utilities.DoubleArray{Encoding: map[string]int{"task_category": 0, "name": 1, "version": 2, "resource_meta": 3, "resourceMeta": 4}, Base: []int{1, 6, 5, 6, 7, 8, 2, 0, 4, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 3, 4, 5, 6}} +) + +func request_AsyncAgentService_GetTaskMetrics_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AsyncAgentServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.GetTaskMetricsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["task_category.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.name", err) + } + + val, ok = pathParams["task_category.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.version", err) + } + + val, ok = pathParams["resource_meta"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_meta") + } + + protoReq.ResourceMeta, err = runtime.Bytes(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_meta", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AsyncAgentService_GetTaskMetrics_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetTaskMetrics(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AsyncAgentService_GetTaskMetrics_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AsyncAgentServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.GetTaskMetricsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["task_category.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.name", err) + } + + val, ok = pathParams["task_category.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.version", err) + } + + val, ok = pathParams["resource_meta"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_meta") + } + + protoReq.ResourceMeta, err = runtime.Bytes(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_meta", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AsyncAgentService_GetTaskMetrics_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetTaskMetrics(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_AsyncAgentService_GetTaskLogs_0 = &utilities.DoubleArray{Encoding: map[string]int{"task_category": 0, "name": 1, "version": 2, "resource_meta": 3, "resourceMeta": 4}, Base: []int{1, 6, 5, 6, 7, 8, 2, 0, 4, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 2, 7, 2, 9, 3, 4, 5, 6}} +) + +func request_AsyncAgentService_GetTaskLogs_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AsyncAgentServiceClient, req *http.Request, pathParams map[string]string) (extService.AsyncAgentService_GetTaskLogsClient, runtime.ServerMetadata, error) { + var protoReq extAdmin.GetTaskLogsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["task_category.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.name", err) + } + + val, ok = pathParams["task_category.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "task_category.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "task_category.version", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "task_category.version", err) + } + + val, ok = pathParams["resource_meta"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "resource_meta") + } + + protoReq.ResourceMeta, err = runtime.Bytes(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "resource_meta", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AsyncAgentService_GetTaskLogs_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.GetTaskLogs(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + func request_AgentMetadataService_GetAgent_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AgentMetadataServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extAdmin.GetAgentRequest var metadata runtime.ServerMetadata @@ -70,37 +542,169 @@ func local_request_AgentMetadataService_GetAgent_0(ctx context.Context, marshale _ = err ) - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := server.GetAgent(ctx, &protoReq) + return msg, metadata, err + +} + +func request_AgentMetadataService_ListAgents_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AgentMetadataServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ListAgentsRequest + var metadata runtime.ServerMetadata + + msg, err := client.ListAgents(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AgentMetadataService_ListAgents_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AgentMetadataServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ListAgentsRequest + var metadata runtime.ServerMetadata + + msg, err := server.ListAgents(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterSyncAgentServiceHandlerServer registers the http handlers for service SyncAgentService to "mux". +// UnaryRPC :call SyncAgentServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSyncAgentServiceHandlerFromEndpoint instead. +func RegisterSyncAgentServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server extService.SyncAgentServiceServer) error { + + mux.Handle("POST", pattern_SyncAgentService_ExecuteTaskSync_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + + return nil +} + +// RegisterAsyncAgentServiceHandlerServer registers the http handlers for service AsyncAgentService to "mux". +// UnaryRPC :call AsyncAgentServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAsyncAgentServiceHandlerFromEndpoint instead. +func RegisterAsyncAgentServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server extService.AsyncAgentServiceServer) error { + + mux.Handle("POST", pattern_AsyncAgentService_CreateTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AsyncAgentService/CreateTask", runtime.WithHTTPPathPattern("/api/v1/agent/task")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AsyncAgentService_CreateTask_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AsyncAgentService_CreateTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AsyncAgentService_GetTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AsyncAgentService/GetTask", runtime.WithHTTPPathPattern("/api/v1/agent/task/{task_category.name}/{task_category.version}/{resource_meta}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AsyncAgentService_GetTask_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AsyncAgentService_GetTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } + }) - msg, err := server.GetAgent(ctx, &protoReq) - return msg, metadata, err + mux.Handle("DELETE", pattern_AsyncAgentService_DeleteTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AsyncAgentService/DeleteTask", runtime.WithHTTPPathPattern("/api/v1/agent/task_executions/{task_category.name}/{task_category.version}/{resource_meta}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AsyncAgentService_DeleteTask_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } -} + forward_AsyncAgentService_DeleteTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) -func request_AgentMetadataService_ListAgents_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AgentMetadataServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ListAgentsRequest - var metadata runtime.ServerMetadata + }) - msg, err := client.ListAgents(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err + mux.Handle("GET", pattern_AsyncAgentService_GetTaskMetrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AsyncAgentService/GetTaskMetrics", runtime.WithHTTPPathPattern("/api/v1/agent/task/metrics/{task_category.name}/{task_category.version}/{resource_meta}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AsyncAgentService_GetTaskMetrics_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } -} + forward_AsyncAgentService_GetTaskMetrics_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) -func local_request_AgentMetadataService_ListAgents_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AgentMetadataServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq extAdmin.ListAgentsRequest - var metadata runtime.ServerMetadata + }) - msg, err := server.ListAgents(ctx, &protoReq) - return msg, metadata, err + mux.Handle("GET", pattern_AsyncAgentService_GetTaskLogs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + return nil } // RegisterAgentMetadataServiceHandlerServer registers the http handlers for service AgentMetadataService to "mux". @@ -162,6 +766,252 @@ func RegisterAgentMetadataServiceHandlerServer(ctx context.Context, mux *runtime return nil } +// RegisterSyncAgentServiceHandlerFromEndpoint is same as RegisterSyncAgentServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterSyncAgentServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.DialContext(ctx, endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterSyncAgentServiceHandler(ctx, mux, conn) +} + +// RegisterSyncAgentServiceHandler registers the http handlers for service SyncAgentService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterSyncAgentServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterSyncAgentServiceHandlerClient(ctx, mux, extService.NewSyncAgentServiceClient(conn)) +} + +// RegisterSyncAgentServiceHandlerClient registers the http handlers for service SyncAgentService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "extService.SyncAgentServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "extService.SyncAgentServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "extService.SyncAgentServiceClient" to call the correct interceptors. +func RegisterSyncAgentServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client extService.SyncAgentServiceClient) error { + + mux.Handle("POST", pattern_SyncAgentService_ExecuteTaskSync_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.SyncAgentService/ExecuteTaskSync", runtime.WithHTTPPathPattern("/api/v1/agent/task/stream")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SyncAgentService_ExecuteTaskSync_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SyncAgentService_ExecuteTaskSync_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_SyncAgentService_ExecuteTaskSync_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"api", "v1", "agent", "task", "stream"}, "")) +) + +var ( + forward_SyncAgentService_ExecuteTaskSync_0 = runtime.ForwardResponseStream +) + +// RegisterAsyncAgentServiceHandlerFromEndpoint is same as RegisterAsyncAgentServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterAsyncAgentServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.DialContext(ctx, endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterAsyncAgentServiceHandler(ctx, mux, conn) +} + +// RegisterAsyncAgentServiceHandler registers the http handlers for service AsyncAgentService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterAsyncAgentServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterAsyncAgentServiceHandlerClient(ctx, mux, extService.NewAsyncAgentServiceClient(conn)) +} + +// RegisterAsyncAgentServiceHandlerClient registers the http handlers for service AsyncAgentService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "extService.AsyncAgentServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "extService.AsyncAgentServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "extService.AsyncAgentServiceClient" to call the correct interceptors. +func RegisterAsyncAgentServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client extService.AsyncAgentServiceClient) error { + + mux.Handle("POST", pattern_AsyncAgentService_CreateTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AsyncAgentService/CreateTask", runtime.WithHTTPPathPattern("/api/v1/agent/task")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AsyncAgentService_CreateTask_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AsyncAgentService_CreateTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AsyncAgentService_GetTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AsyncAgentService/GetTask", runtime.WithHTTPPathPattern("/api/v1/agent/task/{task_category.name}/{task_category.version}/{resource_meta}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AsyncAgentService_GetTask_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AsyncAgentService_GetTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_AsyncAgentService_DeleteTask_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AsyncAgentService/DeleteTask", runtime.WithHTTPPathPattern("/api/v1/agent/task_executions/{task_category.name}/{task_category.version}/{resource_meta}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AsyncAgentService_DeleteTask_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AsyncAgentService_DeleteTask_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AsyncAgentService_GetTaskMetrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AsyncAgentService/GetTaskMetrics", runtime.WithHTTPPathPattern("/api/v1/agent/task/metrics/{task_category.name}/{task_category.version}/{resource_meta}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AsyncAgentService_GetTaskMetrics_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AsyncAgentService_GetTaskMetrics_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AsyncAgentService_GetTaskLogs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AsyncAgentService/GetTaskLogs", runtime.WithHTTPPathPattern("/api/v1/agent/task/logs/{task_category.name}/{task_category.version}/{resource_meta}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AsyncAgentService_GetTaskLogs_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AsyncAgentService_GetTaskLogs_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_AsyncAgentService_CreateTask_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "agent", "task"}, "")) + + pattern_AsyncAgentService_GetTask_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "agent", "task", "task_category.name", "task_category.version", "resource_meta"}, "")) + + pattern_AsyncAgentService_DeleteTask_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "agent", "task_executions", "task_category.name", "task_category.version", "resource_meta"}, "")) + + pattern_AsyncAgentService_GetTaskMetrics_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "agent", "task", "metrics", "task_category.name", "task_category.version", "resource_meta"}, "")) + + pattern_AsyncAgentService_GetTaskLogs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"api", "v1", "agent", "task", "logs", "task_category.name", "task_category.version", "resource_meta"}, "")) +) + +var ( + forward_AsyncAgentService_CreateTask_0 = runtime.ForwardResponseMessage + + forward_AsyncAgentService_GetTask_0 = runtime.ForwardResponseMessage + + forward_AsyncAgentService_DeleteTask_0 = runtime.ForwardResponseMessage + + forward_AsyncAgentService_GetTaskMetrics_0 = runtime.ForwardResponseMessage + + forward_AsyncAgentService_GetTaskLogs_0 = runtime.ForwardResponseStream +) + // RegisterAgentMetadataServiceHandlerFromEndpoint is same as RegisterAgentMetadataServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAgentMetadataServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { 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 5ce68f3e615..985b8acb99e 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -5,6 +5,9 @@ "version": "version not set" }, "tags": [ + { + "name": "SyncAgentService" + }, { "name": "AsyncAgentService" }, @@ -19,6 +22,362 @@ "application/json" ], "paths": { + "/api/v1/agent/task": { + "post": { + "summary": "CreateTask sends a task create request to the agent service.", + "operationId": "AsyncAgentService_CreateTask", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminCreateTaskResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "description": "Represents a request structure to create task.", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/adminCreateTaskRequest" + } + } + ], + "tags": [ + "AsyncAgentService" + ] + } + }, + "/api/v1/agent/task/logs/{task_category.name}/{task_category.version}/{resource_meta}": { + "get": { + "summary": "GetTaskLogs returns task execution logs, if available.", + "operationId": "AsyncAgentService_GetTaskLogs", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/adminGetTaskLogsResponse" + }, + "error": { + "$ref": "#/definitions/googlerpcStatus" + } + }, + "title": "Stream result of adminGetTaskLogsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "task_category.name", + "description": "The name of the task type.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_category.version", + "description": "The version of the task type.", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "resource_meta", + "description": "Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata).", + "in": "path", + "required": true, + "type": "string", + "format": "byte" + }, + { + "name": "task_type", + "description": "A predefined yet extensible Task type identifier.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "lines", + "description": "Number of lines to return.", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query. If there are no more results, this value will be empty.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AsyncAgentService" + ] + } + }, + "/api/v1/agent/task/metrics/{task_category.name}/{task_category.version}/{resource_meta}": { + "get": { + "summary": "GetTaskMetrics returns one or more task execution metrics, if available.", + "description": "Errors include\n * OutOfRange if metrics are not available for the specified task time range\n * various other errors", + "operationId": "AsyncAgentService_GetTaskMetrics", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminGetTaskMetricsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "task_category.name", + "description": "The name of the task type.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_category.version", + "description": "The version of the task type.", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "resource_meta", + "description": "Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata).", + "in": "path", + "required": true, + "type": "string", + "format": "byte" + }, + { + "name": "task_type", + "description": "A predefined yet extensible Task type identifier.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "queries", + "description": "The metrics to query. If empty, will return a default set of metrics.\ne.g. EXECUTION_METRIC_USED_CPU_AVG or EXECUTION_METRIC_USED_MEMORY_BYTES_AVG", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "start_time", + "description": "Start timestamp, inclusive.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "end_time", + "description": "End timestamp, inclusive..", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "step", + "description": "Query resolution step width in duration format or float number of seconds.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AsyncAgentService" + ] + } + }, + "/api/v1/agent/task/stream": { + "post": { + "summary": "ExecuteTaskSync streams the create request and inputs to the agent service and streams the outputs back.", + "operationId": "SyncAgentService_ExecuteTaskSync", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/adminExecuteTaskSyncResponse" + }, + "error": { + "$ref": "#/definitions/googlerpcStatus" + } + }, + "title": "Stream result of adminExecuteTaskSyncResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "description": " (streaming inputs)", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/adminExecuteTaskSyncRequest" + } + } + ], + "tags": [ + "SyncAgentService" + ] + } + }, + "/api/v1/agent/task/{task_category.name}/{task_category.version}/{resource_meta}": { + "get": { + "summary": "Get job status.", + "operationId": "AsyncAgentService_GetTask", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminGetTaskResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "task_category.name", + "description": "The name of the task type.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_category.version", + "description": "The version of the task type.", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "resource_meta", + "description": "Metadata about the resource to be pass to the agent.", + "in": "path", + "required": true, + "type": "string", + "format": "byte" + }, + { + "name": "task_type", + "description": "A predefined yet extensible Task type identifier.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AsyncAgentService" + ] + } + }, + "/api/v1/agent/task_executions/{task_category.name}/{task_category.version}/{resource_meta}": { + "delete": { + "summary": "Delete the task resource.", + "operationId": "AsyncAgentService_DeleteTask", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminDeleteTaskResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "task_category.name", + "description": "The name of the task type.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_category.version", + "description": "The version of the task type.", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "resource_meta", + "description": "Metadata about the resource to be pass to the agent.", + "in": "path", + "required": true, + "type": "string", + "format": "byte" + }, + { + "name": "task_type", + "description": "A predefined yet extensible Task type identifier.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AsyncAgentService" + ] + } + }, "/api/v1/agent/{name}": { "get": { "summary": "Fetch a :ref:`ref_flyteidl.admin.Agent` definition.", @@ -245,19 +604,73 @@ "type": "string" }, "description": "SupportedTaskTypes are the types of the tasks that the agent can handle." + }, + "is_sync": { + "type": "boolean", + "description": "IsSync indicates whether this agent is a sync agent. Sync agents are expected to return their\nresults synchronously when called by propeller. Given that sync agents can affect the performance\nof the system, it's important to enforce strict timeout policies.\nAn Async agent, on the other hand, is required to be able to identify jobs by an\nidentifier and query for job statuses as jobs progress." + }, + "supported_task_categories": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/adminTaskCategory" + }, + "description": "Supported_task_categories are the categories of the tasks that the agent can handle." } }, "description": "A message containing the agent metadata." }, + "adminCreateRequestHeader": { + "type": "object", + "properties": { + "template": { + "$ref": "#/definitions/coreTaskTemplate", + "description": "Template of the task that encapsulates all the metadata of the task." + }, + "output_prefix": { + "type": "string", + "title": "Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)" + }, + "task_execution_metadata": { + "$ref": "#/definitions/flyteidladminTaskExecutionMetadata", + "description": "subset of runtime task execution metadata." + }, + "max_dataset_size_bytes": { + "type": "string", + "format": "int64", + "description": "MaxDatasetSizeBytes is the maximum size of the dataset that can be generated by the task." + } + } + }, + "adminCreateTaskRequest": { + "type": "object", + "properties": { + "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" + }, + "template": { + "$ref": "#/definitions/coreTaskTemplate", + "description": "Template of the task that encapsulates all the metadata of the task." + }, + "output_prefix": { + "type": "string", + "title": "Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)" + }, + "task_execution_metadata": { + "$ref": "#/definitions/flyteidladminTaskExecutionMetadata", + "description": "subset of runtime task execution metadata." + } + }, + "description": "Represents a request structure to create task." + }, "adminCreateTaskResponse": { "type": "object", "properties": { "resource_meta": { "type": "string", - "format": "byte" - }, - "resource": { - "$ref": "#/definitions/adminResource" + "format": "byte", + "description": "ResourceMeta is created by the agent. It could be a string (jobId) or a dict (more complex metadata)." } }, "description": "Represents a create response structure." @@ -266,6 +679,36 @@ "type": "object", "description": "Response to delete a task." }, + "adminExecuteTaskSyncRequest": { + "type": "object", + "properties": { + "header": { + "$ref": "#/definitions/adminCreateRequestHeader" + }, + "inputs": { + "$ref": "#/definitions/coreLiteralMap" + } + } + }, + "adminExecuteTaskSyncResponse": { + "type": "object", + "properties": { + "header": { + "$ref": "#/definitions/adminExecuteTaskSyncResponseHeader" + }, + "outputs": { + "$ref": "#/definitions/coreLiteralMap" + } + } + }, + "adminExecuteTaskSyncResponseHeader": { + "type": "object", + "properties": { + "resource": { + "$ref": "#/definitions/adminResource" + } + } + }, "adminGetAgentResponse": { "type": "object", "properties": { @@ -276,6 +719,18 @@ "description": "A response containing an agent." }, "adminGetTaskLogsResponse": { + "type": "object", + "properties": { + "header": { + "$ref": "#/definitions/adminGetTaskLogsResponseHeader" + }, + "body": { + "$ref": "#/definitions/adminGetTaskLogsResponseBody" + } + }, + "description": "A response containing the logs for a task execution." + }, + "adminGetTaskLogsResponseBody": { "type": "object", "properties": { "results": { @@ -284,13 +739,17 @@ "type": "string" }, "description": "The execution log results." - }, + } + } + }, + "adminGetTaskLogsResponseHeader": { + "type": "object", + "properties": { "token": { "type": "string", "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query. If there are no more results, this value will be empty." } - }, - "description": "A response containing the logs for a task execution." + } }, "adminGetTaskMetricsResponse": { "type": "object", @@ -311,14 +770,6 @@ "properties": { "resource": { "$ref": "#/definitions/adminResource" - }, - "log_links": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/coreTaskLog" - }, - "title": "log information for the task execution" } }, "description": "Response to get an individual task resource." @@ -362,6 +813,24 @@ "phase": { "$ref": "#/definitions/coreTaskExecutionPhase", "description": "The phase of the execution is used to determine the phase of the plugin's execution." + }, + "custom_info": { + "type": "object", + "description": "Custom data specific to the agent." + } + } + }, + "adminTaskCategory": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the task type." + }, + "version": { + "type": "integer", + "format": "int32", + "description": "The version of the task type." } } }, @@ -1304,6 +1773,24 @@ }, "title": "Task Metadata" }, + "coreTaskNodeOverrides": { + "type": "object", + "properties": { + "resources": { + "$ref": "#/definitions/coreResources", + "description": "A customizable interface to convey resources requested for a task container." + }, + "extended_resources": { + "$ref": "#/definitions/coreExtendedResources", + "description": "Overrides for all non-standard resources, not captured by\nv1.ResourceRequirements, to allocate to a task." + }, + "container_image": { + "type": "string", + "description": "Override for the image used by task pods." + } + }, + "description": "Optional task node overrides that will be applied at task execution time." + }, "coreTaskTemplate": { "type": "object", "properties": { @@ -1539,6 +2026,24 @@ "type": "string" }, "title": "Environment variables attached to the task execution" + }, + "max_attempts": { + "type": "integer", + "format": "int32", + "description": "Represents the maximum number of attempts allowed for a task.\nIf a task fails, it can be retried up to this maximum number of attempts." + }, + "interruptible": { + "type": "boolean", + "description": "Indicates whether the task execution can be interrupted.\nIf set to true, the task can be stopped before completion." + }, + "interruptible_failure_threshold": { + "type": "integer", + "format": "int32", + "description": "Specifies the threshold for failure count at which the interruptible property\nwill take effect. If the number of consecutive task failures exceeds this threshold,\ninterruptible behavior will be activated." + }, + "overrides": { + "$ref": "#/definitions/coreTaskNodeOverrides", + "description": "Overrides for specific properties of the task node.\nThese overrides can be used to customize the behavior of the task node." } }, "description": "Represents a subset of runtime task execution metadata that are relevant to external plugins." diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index d8a2711961d..03d2ac7c2f3 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -9018,6 +9018,18 @@ export namespace flyteidl { /** TaskExecutionMetadata environmentVariables */ environmentVariables?: ({ [k: string]: string }|null); + + /** TaskExecutionMetadata maxAttempts */ + maxAttempts?: (number|null); + + /** TaskExecutionMetadata interruptible */ + interruptible?: (boolean|null); + + /** TaskExecutionMetadata interruptibleFailureThreshold */ + interruptibleFailureThreshold?: (number|null); + + /** TaskExecutionMetadata overrides */ + overrides?: (flyteidl.core.ITaskNodeOverrides|null); } /** Represents a TaskExecutionMetadata. */ @@ -9047,6 +9059,18 @@ export namespace flyteidl { /** TaskExecutionMetadata environmentVariables. */ public environmentVariables: { [k: string]: string }; + /** TaskExecutionMetadata maxAttempts. */ + public maxAttempts: number; + + /** TaskExecutionMetadata interruptible. */ + public interruptible: boolean; + + /** TaskExecutionMetadata interruptibleFailureThreshold. */ + public interruptibleFailureThreshold: number; + + /** TaskExecutionMetadata overrides. */ + public overrides?: (flyteidl.core.ITaskNodeOverrides|null); + /** * Creates a new TaskExecutionMetadata instance using the specified properties. * @param [properties] Properties to set @@ -9155,9 +9179,6 @@ export namespace flyteidl { /** CreateTaskResponse resourceMeta */ resourceMeta?: (Uint8Array|null); - - /** CreateTaskResponse resource */ - resource?: (flyteidl.admin.IResource|null); } /** Represents a CreateTaskResponse. */ @@ -9172,12 +9193,6 @@ export namespace flyteidl { /** CreateTaskResponse resourceMeta. */ public resourceMeta: Uint8Array; - /** CreateTaskResponse resource. */ - public resource?: (flyteidl.admin.IResource|null); - - /** CreateTaskResponse res. */ - public res?: ("resourceMeta"|"resource"); - /** * Creates a new CreateTaskResponse instance using the specified properties. * @param [properties] Properties to set @@ -9211,6 +9226,250 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a CreateRequestHeader. */ + interface ICreateRequestHeader { + + /** CreateRequestHeader template */ + template?: (flyteidl.core.ITaskTemplate|null); + + /** CreateRequestHeader outputPrefix */ + outputPrefix?: (string|null); + + /** CreateRequestHeader taskExecutionMetadata */ + taskExecutionMetadata?: (flyteidl.admin.ITaskExecutionMetadata|null); + + /** CreateRequestHeader maxDatasetSizeBytes */ + maxDatasetSizeBytes?: (Long|null); + } + + /** Represents a CreateRequestHeader. */ + class CreateRequestHeader implements ICreateRequestHeader { + + /** + * Constructs a new CreateRequestHeader. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.ICreateRequestHeader); + + /** CreateRequestHeader template. */ + public template?: (flyteidl.core.ITaskTemplate|null); + + /** CreateRequestHeader outputPrefix. */ + public outputPrefix: string; + + /** CreateRequestHeader taskExecutionMetadata. */ + public taskExecutionMetadata?: (flyteidl.admin.ITaskExecutionMetadata|null); + + /** CreateRequestHeader maxDatasetSizeBytes. */ + public maxDatasetSizeBytes: Long; + + /** + * Creates a new CreateRequestHeader instance using the specified properties. + * @param [properties] Properties to set + * @returns CreateRequestHeader instance + */ + public static create(properties?: flyteidl.admin.ICreateRequestHeader): flyteidl.admin.CreateRequestHeader; + + /** + * Encodes the specified CreateRequestHeader message. Does not implicitly {@link flyteidl.admin.CreateRequestHeader.verify|verify} messages. + * @param message CreateRequestHeader message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.ICreateRequestHeader, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CreateRequestHeader message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CreateRequestHeader + * @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.admin.CreateRequestHeader; + + /** + * Verifies a CreateRequestHeader 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 ExecuteTaskSyncRequest. */ + interface IExecuteTaskSyncRequest { + + /** ExecuteTaskSyncRequest header */ + header?: (flyteidl.admin.ICreateRequestHeader|null); + + /** ExecuteTaskSyncRequest inputs */ + inputs?: (flyteidl.core.ILiteralMap|null); + } + + /** Represents an ExecuteTaskSyncRequest. */ + class ExecuteTaskSyncRequest implements IExecuteTaskSyncRequest { + + /** + * Constructs a new ExecuteTaskSyncRequest. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.IExecuteTaskSyncRequest); + + /** ExecuteTaskSyncRequest header. */ + public header?: (flyteidl.admin.ICreateRequestHeader|null); + + /** ExecuteTaskSyncRequest inputs. */ + public inputs?: (flyteidl.core.ILiteralMap|null); + + /** ExecuteTaskSyncRequest part. */ + public part?: ("header"|"inputs"); + + /** + * Creates a new ExecuteTaskSyncRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ExecuteTaskSyncRequest instance + */ + public static create(properties?: flyteidl.admin.IExecuteTaskSyncRequest): flyteidl.admin.ExecuteTaskSyncRequest; + + /** + * Encodes the specified ExecuteTaskSyncRequest message. Does not implicitly {@link flyteidl.admin.ExecuteTaskSyncRequest.verify|verify} messages. + * @param message ExecuteTaskSyncRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.IExecuteTaskSyncRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExecuteTaskSyncRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExecuteTaskSyncRequest + * @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.admin.ExecuteTaskSyncRequest; + + /** + * Verifies an ExecuteTaskSyncRequest 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 ExecuteTaskSyncResponseHeader. */ + interface IExecuteTaskSyncResponseHeader { + + /** ExecuteTaskSyncResponseHeader resource */ + resource?: (flyteidl.admin.IResource|null); + } + + /** Represents an ExecuteTaskSyncResponseHeader. */ + class ExecuteTaskSyncResponseHeader implements IExecuteTaskSyncResponseHeader { + + /** + * Constructs a new ExecuteTaskSyncResponseHeader. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.IExecuteTaskSyncResponseHeader); + + /** ExecuteTaskSyncResponseHeader resource. */ + public resource?: (flyteidl.admin.IResource|null); + + /** + * Creates a new ExecuteTaskSyncResponseHeader instance using the specified properties. + * @param [properties] Properties to set + * @returns ExecuteTaskSyncResponseHeader instance + */ + public static create(properties?: flyteidl.admin.IExecuteTaskSyncResponseHeader): flyteidl.admin.ExecuteTaskSyncResponseHeader; + + /** + * Encodes the specified ExecuteTaskSyncResponseHeader message. Does not implicitly {@link flyteidl.admin.ExecuteTaskSyncResponseHeader.verify|verify} messages. + * @param message ExecuteTaskSyncResponseHeader message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.IExecuteTaskSyncResponseHeader, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExecuteTaskSyncResponseHeader message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExecuteTaskSyncResponseHeader + * @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.admin.ExecuteTaskSyncResponseHeader; + + /** + * Verifies an ExecuteTaskSyncResponseHeader 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 ExecuteTaskSyncResponse. */ + interface IExecuteTaskSyncResponse { + + /** ExecuteTaskSyncResponse header */ + header?: (flyteidl.admin.IExecuteTaskSyncResponseHeader|null); + + /** ExecuteTaskSyncResponse outputs */ + outputs?: (flyteidl.core.ILiteralMap|null); + } + + /** Represents an ExecuteTaskSyncResponse. */ + class ExecuteTaskSyncResponse implements IExecuteTaskSyncResponse { + + /** + * Constructs a new ExecuteTaskSyncResponse. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.IExecuteTaskSyncResponse); + + /** ExecuteTaskSyncResponse header. */ + public header?: (flyteidl.admin.IExecuteTaskSyncResponseHeader|null); + + /** ExecuteTaskSyncResponse outputs. */ + public outputs?: (flyteidl.core.ILiteralMap|null); + + /** ExecuteTaskSyncResponse res. */ + public res?: ("header"|"outputs"); + + /** + * Creates a new ExecuteTaskSyncResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns ExecuteTaskSyncResponse instance + */ + public static create(properties?: flyteidl.admin.IExecuteTaskSyncResponse): flyteidl.admin.ExecuteTaskSyncResponse; + + /** + * Encodes the specified ExecuteTaskSyncResponse message. Does not implicitly {@link flyteidl.admin.ExecuteTaskSyncResponse.verify|verify} messages. + * @param message ExecuteTaskSyncResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.IExecuteTaskSyncResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExecuteTaskSyncResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExecuteTaskSyncResponse + * @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.admin.ExecuteTaskSyncResponse; + + /** + * Verifies an ExecuteTaskSyncResponse 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 GetTaskRequest. */ interface IGetTaskRequest { @@ -9219,6 +9478,9 @@ export namespace flyteidl { /** GetTaskRequest resourceMeta */ resourceMeta?: (Uint8Array|null); + + /** GetTaskRequest taskCategory */ + taskCategory?: (flyteidl.admin.ITaskCategory|null); } /** Represents a GetTaskRequest. */ @@ -9236,6 +9498,9 @@ export namespace flyteidl { /** GetTaskRequest resourceMeta. */ public resourceMeta: Uint8Array; + /** GetTaskRequest taskCategory. */ + public taskCategory?: (flyteidl.admin.ITaskCategory|null); + /** * Creates a new GetTaskRequest instance using the specified properties. * @param [properties] Properties to set @@ -9274,9 +9539,6 @@ export namespace flyteidl { /** GetTaskResponse resource */ resource?: (flyteidl.admin.IResource|null); - - /** GetTaskResponse logLinks */ - logLinks?: (flyteidl.core.ITaskLog[]|null); } /** Represents a GetTaskResponse. */ @@ -9291,9 +9553,6 @@ export namespace flyteidl { /** GetTaskResponse resource. */ public resource?: (flyteidl.admin.IResource|null); - /** GetTaskResponse logLinks. */ - public logLinks: flyteidl.core.ITaskLog[]; - /** * Creates a new GetTaskResponse instance using the specified properties. * @param [properties] Properties to set @@ -9344,6 +9603,9 @@ export namespace flyteidl { /** Resource phase */ phase?: (flyteidl.core.TaskExecution.Phase|null); + + /** Resource customInfo */ + customInfo?: (google.protobuf.IStruct|null); } /** Represents a Resource. */ @@ -9370,6 +9632,9 @@ export namespace flyteidl { /** Resource phase. */ public phase: flyteidl.core.TaskExecution.Phase; + /** Resource customInfo. */ + public customInfo?: (google.protobuf.IStruct|null); + /** * Creates a new Resource instance using the specified properties. * @param [properties] Properties to set @@ -9411,6 +9676,9 @@ export namespace flyteidl { /** DeleteTaskRequest resourceMeta */ resourceMeta?: (Uint8Array|null); + + /** DeleteTaskRequest taskCategory */ + taskCategory?: (flyteidl.admin.ITaskCategory|null); } /** Represents a DeleteTaskRequest. */ @@ -9428,6 +9696,9 @@ export namespace flyteidl { /** DeleteTaskRequest resourceMeta. */ public resourceMeta: Uint8Array; + /** DeleteTaskRequest taskCategory. */ + public taskCategory?: (flyteidl.admin.ITaskCategory|null); + /** * Creates a new DeleteTaskRequest instance using the specified properties. * @param [properties] Properties to set @@ -9515,6 +9786,12 @@ export namespace flyteidl { /** Agent supportedTaskTypes */ supportedTaskTypes?: (string[]|null); + + /** Agent isSync */ + isSync?: (boolean|null); + + /** Agent supportedTaskCategories */ + supportedTaskCategories?: (flyteidl.admin.ITaskCategory[]|null); } /** Represents an Agent. */ @@ -9532,6 +9809,12 @@ export namespace flyteidl { /** Agent supportedTaskTypes. */ public supportedTaskTypes: string[]; + /** Agent isSync. */ + public isSync: boolean; + + /** Agent supportedTaskCategories. */ + public supportedTaskCategories: flyteidl.admin.ITaskCategory[]; + /** * Creates a new Agent instance using the specified properties. * @param [properties] Properties to set @@ -9565,6 +9848,64 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a TaskCategory. */ + interface ITaskCategory { + + /** TaskCategory name */ + name?: (string|null); + + /** TaskCategory version */ + version?: (number|null); + } + + /** Represents a TaskCategory. */ + class TaskCategory implements ITaskCategory { + + /** + * Constructs a new TaskCategory. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.ITaskCategory); + + /** TaskCategory name. */ + public name: string; + + /** TaskCategory version. */ + public version: number; + + /** + * Creates a new TaskCategory instance using the specified properties. + * @param [properties] Properties to set + * @returns TaskCategory instance + */ + public static create(properties?: flyteidl.admin.ITaskCategory): flyteidl.admin.TaskCategory; + + /** + * Encodes the specified TaskCategory message. Does not implicitly {@link flyteidl.admin.TaskCategory.verify|verify} messages. + * @param message TaskCategory message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.ITaskCategory, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TaskCategory message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TaskCategory + * @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.admin.TaskCategory; + + /** + * Verifies a TaskCategory 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 GetAgentRequest. */ interface IGetAgentRequest { @@ -9787,6 +10128,9 @@ export namespace flyteidl { /** GetTaskMetricsRequest step */ step?: (google.protobuf.IDuration|null); + + /** GetTaskMetricsRequest taskCategory */ + taskCategory?: (flyteidl.admin.ITaskCategory|null); } /** Represents a GetTaskMetricsRequest. */ @@ -9816,6 +10160,9 @@ export namespace flyteidl { /** GetTaskMetricsRequest step. */ public step?: (google.protobuf.IDuration|null); + /** GetTaskMetricsRequest taskCategory. */ + public taskCategory?: (flyteidl.admin.ITaskCategory|null); + /** * Creates a new GetTaskMetricsRequest instance using the specified properties. * @param [properties] Properties to set @@ -9915,6 +10262,9 @@ export namespace flyteidl { /** GetTaskLogsRequest token */ token?: (string|null); + + /** GetTaskLogsRequest taskCategory */ + taskCategory?: (flyteidl.admin.ITaskCategory|null); } /** Represents a GetTaskLogsRequest. */ @@ -9938,6 +10288,9 @@ export namespace flyteidl { /** GetTaskLogsRequest token. */ public token: string; + /** GetTaskLogsRequest taskCategory. */ + public taskCategory?: (flyteidl.admin.ITaskCategory|null); + /** * Creates a new GetTaskLogsRequest instance using the specified properties. * @param [properties] Properties to set @@ -9971,14 +10324,118 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a GetTaskLogsResponseHeader. */ + interface IGetTaskLogsResponseHeader { + + /** GetTaskLogsResponseHeader token */ + token?: (string|null); + } + + /** Represents a GetTaskLogsResponseHeader. */ + class GetTaskLogsResponseHeader implements IGetTaskLogsResponseHeader { + + /** + * Constructs a new GetTaskLogsResponseHeader. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.IGetTaskLogsResponseHeader); + + /** GetTaskLogsResponseHeader token. */ + public token: string; + + /** + * Creates a new GetTaskLogsResponseHeader instance using the specified properties. + * @param [properties] Properties to set + * @returns GetTaskLogsResponseHeader instance + */ + public static create(properties?: flyteidl.admin.IGetTaskLogsResponseHeader): flyteidl.admin.GetTaskLogsResponseHeader; + + /** + * Encodes the specified GetTaskLogsResponseHeader message. Does not implicitly {@link flyteidl.admin.GetTaskLogsResponseHeader.verify|verify} messages. + * @param message GetTaskLogsResponseHeader message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.IGetTaskLogsResponseHeader, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GetTaskLogsResponseHeader message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GetTaskLogsResponseHeader + * @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.admin.GetTaskLogsResponseHeader; + + /** + * Verifies a GetTaskLogsResponseHeader 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 GetTaskLogsResponseBody. */ + interface IGetTaskLogsResponseBody { + + /** GetTaskLogsResponseBody results */ + results?: (string[]|null); + } + + /** Represents a GetTaskLogsResponseBody. */ + class GetTaskLogsResponseBody implements IGetTaskLogsResponseBody { + + /** + * Constructs a new GetTaskLogsResponseBody. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.IGetTaskLogsResponseBody); + + /** GetTaskLogsResponseBody results. */ + public results: string[]; + + /** + * Creates a new GetTaskLogsResponseBody instance using the specified properties. + * @param [properties] Properties to set + * @returns GetTaskLogsResponseBody instance + */ + public static create(properties?: flyteidl.admin.IGetTaskLogsResponseBody): flyteidl.admin.GetTaskLogsResponseBody; + + /** + * Encodes the specified GetTaskLogsResponseBody message. Does not implicitly {@link flyteidl.admin.GetTaskLogsResponseBody.verify|verify} messages. + * @param message GetTaskLogsResponseBody message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.IGetTaskLogsResponseBody, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GetTaskLogsResponseBody message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GetTaskLogsResponseBody + * @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.admin.GetTaskLogsResponseBody; + + /** + * Verifies a GetTaskLogsResponseBody 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 GetTaskLogsResponse. */ interface IGetTaskLogsResponse { - /** GetTaskLogsResponse results */ - results?: (string[]|null); + /** GetTaskLogsResponse header */ + header?: (flyteidl.admin.IGetTaskLogsResponseHeader|null); - /** GetTaskLogsResponse token */ - token?: (string|null); + /** GetTaskLogsResponse body */ + body?: (flyteidl.admin.IGetTaskLogsResponseBody|null); } /** Represents a GetTaskLogsResponse. */ @@ -9990,11 +10447,14 @@ export namespace flyteidl { */ constructor(properties?: flyteidl.admin.IGetTaskLogsResponse); - /** GetTaskLogsResponse results. */ - public results: string[]; + /** GetTaskLogsResponse header. */ + public header?: (flyteidl.admin.IGetTaskLogsResponseHeader|null); - /** GetTaskLogsResponse token. */ - public token: string; + /** GetTaskLogsResponse body. */ + public body?: (flyteidl.admin.IGetTaskLogsResponseBody|null); + + /** GetTaskLogsResponse part. */ + public part?: ("header"|"body"); /** * Creates a new GetTaskLogsResponse instance using the specified properties. @@ -21564,6 +22024,51 @@ export namespace flyteidl { type GetExecutionMetricsCallback = (error: (Error|null), response?: flyteidl.admin.WorkflowExecutionGetMetricsResponse) => void; } + /** Represents a SyncAgentService */ + class SyncAgentService extends $protobuf.rpc.Service { + + /** + * Constructs a new SyncAgentService service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + */ + constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); + + /** + * Creates new SyncAgentService service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. + */ + public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): SyncAgentService; + + /** + * Calls ExecuteTaskSync. + * @param request ExecuteTaskSyncRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ExecuteTaskSyncResponse + */ + public executeTaskSync(request: flyteidl.admin.IExecuteTaskSyncRequest, callback: flyteidl.service.SyncAgentService.ExecuteTaskSyncCallback): void; + + /** + * Calls ExecuteTaskSync. + * @param request ExecuteTaskSyncRequest message or plain object + * @returns Promise + */ + public executeTaskSync(request: flyteidl.admin.IExecuteTaskSyncRequest): Promise; + } + + namespace SyncAgentService { + + /** + * Callback as used by {@link flyteidl.service.SyncAgentService#executeTaskSync}. + * @param error Error, if any + * @param [response] ExecuteTaskSyncResponse + */ + type ExecuteTaskSyncCallback = (error: (Error|null), response?: flyteidl.admin.ExecuteTaskSyncResponse) => void; + } + /** Represents an AsyncAgentService */ class AsyncAgentService extends $protobuf.rpc.Service { diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 791f0c9eb6b..a97bd6951f2 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -22090,6 +22090,10 @@ * @property {Object.|null} [annotations] TaskExecutionMetadata annotations * @property {string|null} [k8sServiceAccount] TaskExecutionMetadata k8sServiceAccount * @property {Object.|null} [environmentVariables] TaskExecutionMetadata environmentVariables + * @property {number|null} [maxAttempts] TaskExecutionMetadata maxAttempts + * @property {boolean|null} [interruptible] TaskExecutionMetadata interruptible + * @property {number|null} [interruptibleFailureThreshold] TaskExecutionMetadata interruptibleFailureThreshold + * @property {flyteidl.core.ITaskNodeOverrides|null} [overrides] TaskExecutionMetadata overrides */ /** @@ -22158,6 +22162,38 @@ */ TaskExecutionMetadata.prototype.environmentVariables = $util.emptyObject; + /** + * TaskExecutionMetadata maxAttempts. + * @member {number} maxAttempts + * @memberof flyteidl.admin.TaskExecutionMetadata + * @instance + */ + TaskExecutionMetadata.prototype.maxAttempts = 0; + + /** + * TaskExecutionMetadata interruptible. + * @member {boolean} interruptible + * @memberof flyteidl.admin.TaskExecutionMetadata + * @instance + */ + TaskExecutionMetadata.prototype.interruptible = false; + + /** + * TaskExecutionMetadata interruptibleFailureThreshold. + * @member {number} interruptibleFailureThreshold + * @memberof flyteidl.admin.TaskExecutionMetadata + * @instance + */ + TaskExecutionMetadata.prototype.interruptibleFailureThreshold = 0; + + /** + * TaskExecutionMetadata overrides. + * @member {flyteidl.core.ITaskNodeOverrides|null|undefined} overrides + * @memberof flyteidl.admin.TaskExecutionMetadata + * @instance + */ + TaskExecutionMetadata.prototype.overrides = null; + /** * Creates a new TaskExecutionMetadata instance using the specified properties. * @function create @@ -22197,6 +22233,14 @@ if (message.environmentVariables != null && message.hasOwnProperty("environmentVariables")) for (var keys = Object.keys(message.environmentVariables), i = 0; i < keys.length; ++i) writer.uint32(/* id 6, wireType 2 =*/50).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.environmentVariables[keys[i]]).ldelim(); + if (message.maxAttempts != null && message.hasOwnProperty("maxAttempts")) + writer.uint32(/* id 7, wireType 0 =*/56).int32(message.maxAttempts); + if (message.interruptible != null && message.hasOwnProperty("interruptible")) + writer.uint32(/* id 8, wireType 0 =*/64).bool(message.interruptible); + if (message.interruptibleFailureThreshold != null && message.hasOwnProperty("interruptibleFailureThreshold")) + writer.uint32(/* id 9, wireType 0 =*/72).int32(message.interruptibleFailureThreshold); + if (message.overrides != null && message.hasOwnProperty("overrides")) + $root.flyteidl.core.TaskNodeOverrides.encode(message.overrides, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); return writer; }; @@ -22251,6 +22295,18 @@ reader.pos++; message.environmentVariables[key] = reader.string(); break; + case 7: + message.maxAttempts = reader.int32(); + break; + case 8: + message.interruptible = reader.bool(); + break; + case 9: + message.interruptibleFailureThreshold = reader.int32(); + break; + case 10: + message.overrides = $root.flyteidl.core.TaskNodeOverrides.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -22305,6 +22361,20 @@ if (!$util.isString(message.environmentVariables[key[i]])) return "environmentVariables: string{k:string} expected"; } + if (message.maxAttempts != null && message.hasOwnProperty("maxAttempts")) + if (!$util.isInteger(message.maxAttempts)) + return "maxAttempts: integer expected"; + if (message.interruptible != null && message.hasOwnProperty("interruptible")) + if (typeof message.interruptible !== "boolean") + return "interruptible: boolean expected"; + if (message.interruptibleFailureThreshold != null && message.hasOwnProperty("interruptibleFailureThreshold")) + if (!$util.isInteger(message.interruptibleFailureThreshold)) + return "interruptibleFailureThreshold: integer expected"; + if (message.overrides != null && message.hasOwnProperty("overrides")) { + var error = $root.flyteidl.core.TaskNodeOverrides.verify(message.overrides); + if (error) + return "overrides." + error; + } return null; }; @@ -22424,16 +22494,570 @@ var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.inputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); - break; - case 2: - message.template = $root.flyteidl.core.TaskTemplate.decode(reader, reader.uint32()); - break; - case 3: - message.outputPrefix = reader.string(); - break; - case 4: - message.taskExecutionMetadata = $root.flyteidl.admin.TaskExecutionMetadata.decode(reader, reader.uint32()); + message.inputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 2: + message.template = $root.flyteidl.core.TaskTemplate.decode(reader, reader.uint32()); + break; + case 3: + message.outputPrefix = reader.string(); + break; + case 4: + message.taskExecutionMetadata = $root.flyteidl.admin.TaskExecutionMetadata.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a CreateTaskRequest message. + * @function verify + * @memberof flyteidl.admin.CreateTaskRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + 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 (error) + return "inputs." + error; + } + if (message.template != null && message.hasOwnProperty("template")) { + var error = $root.flyteidl.core.TaskTemplate.verify(message.template); + if (error) + return "template." + error; + } + if (message.outputPrefix != null && message.hasOwnProperty("outputPrefix")) + if (!$util.isString(message.outputPrefix)) + return "outputPrefix: string expected"; + if (message.taskExecutionMetadata != null && message.hasOwnProperty("taskExecutionMetadata")) { + var error = $root.flyteidl.admin.TaskExecutionMetadata.verify(message.taskExecutionMetadata); + if (error) + return "taskExecutionMetadata." + error; + } + return null; + }; + + return CreateTaskRequest; + })(); + + admin.CreateTaskResponse = (function() { + + /** + * Properties of a CreateTaskResponse. + * @memberof flyteidl.admin + * @interface ICreateTaskResponse + * @property {Uint8Array|null} [resourceMeta] CreateTaskResponse resourceMeta + */ + + /** + * Constructs a new CreateTaskResponse. + * @memberof flyteidl.admin + * @classdesc Represents a CreateTaskResponse. + * @implements ICreateTaskResponse + * @constructor + * @param {flyteidl.admin.ICreateTaskResponse=} [properties] Properties to set + */ + function CreateTaskResponse(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]]; + } + + /** + * CreateTaskResponse resourceMeta. + * @member {Uint8Array} resourceMeta + * @memberof flyteidl.admin.CreateTaskResponse + * @instance + */ + CreateTaskResponse.prototype.resourceMeta = $util.newBuffer([]); + + /** + * Creates a new CreateTaskResponse instance using the specified properties. + * @function create + * @memberof flyteidl.admin.CreateTaskResponse + * @static + * @param {flyteidl.admin.ICreateTaskResponse=} [properties] Properties to set + * @returns {flyteidl.admin.CreateTaskResponse} CreateTaskResponse instance + */ + CreateTaskResponse.create = function create(properties) { + return new CreateTaskResponse(properties); + }; + + /** + * Encodes the specified CreateTaskResponse message. Does not implicitly {@link flyteidl.admin.CreateTaskResponse.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.CreateTaskResponse + * @static + * @param {flyteidl.admin.ICreateTaskResponse} message CreateTaskResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CreateTaskResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.resourceMeta != null && message.hasOwnProperty("resourceMeta")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.resourceMeta); + return writer; + }; + + /** + * Decodes a CreateTaskResponse message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.CreateTaskResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.CreateTaskResponse} CreateTaskResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CreateTaskResponse.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.admin.CreateTaskResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.resourceMeta = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a CreateTaskResponse message. + * @function verify + * @memberof flyteidl.admin.CreateTaskResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CreateTaskResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.resourceMeta != null && message.hasOwnProperty("resourceMeta")) + if (!(message.resourceMeta && typeof message.resourceMeta.length === "number" || $util.isString(message.resourceMeta))) + return "resourceMeta: buffer expected"; + return null; + }; + + return CreateTaskResponse; + })(); + + admin.CreateRequestHeader = (function() { + + /** + * Properties of a CreateRequestHeader. + * @memberof flyteidl.admin + * @interface ICreateRequestHeader + * @property {flyteidl.core.ITaskTemplate|null} [template] CreateRequestHeader template + * @property {string|null} [outputPrefix] CreateRequestHeader outputPrefix + * @property {flyteidl.admin.ITaskExecutionMetadata|null} [taskExecutionMetadata] CreateRequestHeader taskExecutionMetadata + * @property {Long|null} [maxDatasetSizeBytes] CreateRequestHeader maxDatasetSizeBytes + */ + + /** + * Constructs a new CreateRequestHeader. + * @memberof flyteidl.admin + * @classdesc Represents a CreateRequestHeader. + * @implements ICreateRequestHeader + * @constructor + * @param {flyteidl.admin.ICreateRequestHeader=} [properties] Properties to set + */ + function CreateRequestHeader(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]]; + } + + /** + * CreateRequestHeader template. + * @member {flyteidl.core.ITaskTemplate|null|undefined} template + * @memberof flyteidl.admin.CreateRequestHeader + * @instance + */ + CreateRequestHeader.prototype.template = null; + + /** + * CreateRequestHeader outputPrefix. + * @member {string} outputPrefix + * @memberof flyteidl.admin.CreateRequestHeader + * @instance + */ + CreateRequestHeader.prototype.outputPrefix = ""; + + /** + * CreateRequestHeader taskExecutionMetadata. + * @member {flyteidl.admin.ITaskExecutionMetadata|null|undefined} taskExecutionMetadata + * @memberof flyteidl.admin.CreateRequestHeader + * @instance + */ + CreateRequestHeader.prototype.taskExecutionMetadata = null; + + /** + * CreateRequestHeader maxDatasetSizeBytes. + * @member {Long} maxDatasetSizeBytes + * @memberof flyteidl.admin.CreateRequestHeader + * @instance + */ + CreateRequestHeader.prototype.maxDatasetSizeBytes = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Creates a new CreateRequestHeader instance using the specified properties. + * @function create + * @memberof flyteidl.admin.CreateRequestHeader + * @static + * @param {flyteidl.admin.ICreateRequestHeader=} [properties] Properties to set + * @returns {flyteidl.admin.CreateRequestHeader} CreateRequestHeader instance + */ + CreateRequestHeader.create = function create(properties) { + return new CreateRequestHeader(properties); + }; + + /** + * Encodes the specified CreateRequestHeader message. Does not implicitly {@link flyteidl.admin.CreateRequestHeader.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.CreateRequestHeader + * @static + * @param {flyteidl.admin.ICreateRequestHeader} message CreateRequestHeader message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CreateRequestHeader.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.template != null && message.hasOwnProperty("template")) + $root.flyteidl.core.TaskTemplate.encode(message.template, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.outputPrefix != null && message.hasOwnProperty("outputPrefix")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.outputPrefix); + if (message.taskExecutionMetadata != null && message.hasOwnProperty("taskExecutionMetadata")) + $root.flyteidl.admin.TaskExecutionMetadata.encode(message.taskExecutionMetadata, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.maxDatasetSizeBytes != null && message.hasOwnProperty("maxDatasetSizeBytes")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.maxDatasetSizeBytes); + return writer; + }; + + /** + * Decodes a CreateRequestHeader message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.CreateRequestHeader + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.CreateRequestHeader} CreateRequestHeader + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CreateRequestHeader.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.admin.CreateRequestHeader(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.template = $root.flyteidl.core.TaskTemplate.decode(reader, reader.uint32()); + break; + case 2: + message.outputPrefix = reader.string(); + break; + case 3: + message.taskExecutionMetadata = $root.flyteidl.admin.TaskExecutionMetadata.decode(reader, reader.uint32()); + break; + case 4: + message.maxDatasetSizeBytes = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a CreateRequestHeader message. + * @function verify + * @memberof flyteidl.admin.CreateRequestHeader + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CreateRequestHeader.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.template != null && message.hasOwnProperty("template")) { + var error = $root.flyteidl.core.TaskTemplate.verify(message.template); + if (error) + return "template." + error; + } + if (message.outputPrefix != null && message.hasOwnProperty("outputPrefix")) + if (!$util.isString(message.outputPrefix)) + return "outputPrefix: string expected"; + if (message.taskExecutionMetadata != null && message.hasOwnProperty("taskExecutionMetadata")) { + var error = $root.flyteidl.admin.TaskExecutionMetadata.verify(message.taskExecutionMetadata); + if (error) + return "taskExecutionMetadata." + error; + } + if (message.maxDatasetSizeBytes != null && message.hasOwnProperty("maxDatasetSizeBytes")) + if (!$util.isInteger(message.maxDatasetSizeBytes) && !(message.maxDatasetSizeBytes && $util.isInteger(message.maxDatasetSizeBytes.low) && $util.isInteger(message.maxDatasetSizeBytes.high))) + return "maxDatasetSizeBytes: integer|Long expected"; + return null; + }; + + return CreateRequestHeader; + })(); + + admin.ExecuteTaskSyncRequest = (function() { + + /** + * Properties of an ExecuteTaskSyncRequest. + * @memberof flyteidl.admin + * @interface IExecuteTaskSyncRequest + * @property {flyteidl.admin.ICreateRequestHeader|null} [header] ExecuteTaskSyncRequest header + * @property {flyteidl.core.ILiteralMap|null} [inputs] ExecuteTaskSyncRequest inputs + */ + + /** + * Constructs a new ExecuteTaskSyncRequest. + * @memberof flyteidl.admin + * @classdesc Represents an ExecuteTaskSyncRequest. + * @implements IExecuteTaskSyncRequest + * @constructor + * @param {flyteidl.admin.IExecuteTaskSyncRequest=} [properties] Properties to set + */ + function ExecuteTaskSyncRequest(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]]; + } + + /** + * ExecuteTaskSyncRequest header. + * @member {flyteidl.admin.ICreateRequestHeader|null|undefined} header + * @memberof flyteidl.admin.ExecuteTaskSyncRequest + * @instance + */ + ExecuteTaskSyncRequest.prototype.header = null; + + /** + * ExecuteTaskSyncRequest inputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} inputs + * @memberof flyteidl.admin.ExecuteTaskSyncRequest + * @instance + */ + ExecuteTaskSyncRequest.prototype.inputs = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * ExecuteTaskSyncRequest part. + * @member {"header"|"inputs"|undefined} part + * @memberof flyteidl.admin.ExecuteTaskSyncRequest + * @instance + */ + Object.defineProperty(ExecuteTaskSyncRequest.prototype, "part", { + get: $util.oneOfGetter($oneOfFields = ["header", "inputs"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new ExecuteTaskSyncRequest instance using the specified properties. + * @function create + * @memberof flyteidl.admin.ExecuteTaskSyncRequest + * @static + * @param {flyteidl.admin.IExecuteTaskSyncRequest=} [properties] Properties to set + * @returns {flyteidl.admin.ExecuteTaskSyncRequest} ExecuteTaskSyncRequest instance + */ + ExecuteTaskSyncRequest.create = function create(properties) { + return new ExecuteTaskSyncRequest(properties); + }; + + /** + * Encodes the specified ExecuteTaskSyncRequest message. Does not implicitly {@link flyteidl.admin.ExecuteTaskSyncRequest.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.ExecuteTaskSyncRequest + * @static + * @param {flyteidl.admin.IExecuteTaskSyncRequest} message ExecuteTaskSyncRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecuteTaskSyncRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.header != null && message.hasOwnProperty("header")) + $root.flyteidl.admin.CreateRequestHeader.encode(message.header, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.inputs != null && message.hasOwnProperty("inputs")) + $root.flyteidl.core.LiteralMap.encode(message.inputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Decodes an ExecuteTaskSyncRequest message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.ExecuteTaskSyncRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.ExecuteTaskSyncRequest} ExecuteTaskSyncRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecuteTaskSyncRequest.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.admin.ExecuteTaskSyncRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.header = $root.flyteidl.admin.CreateRequestHeader.decode(reader, reader.uint32()); + break; + case 2: + message.inputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies an ExecuteTaskSyncRequest message. + * @function verify + * @memberof flyteidl.admin.ExecuteTaskSyncRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExecuteTaskSyncRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.header != null && message.hasOwnProperty("header")) { + properties.part = 1; + { + var error = $root.flyteidl.admin.CreateRequestHeader.verify(message.header); + if (error) + return "header." + error; + } + } + if (message.inputs != null && message.hasOwnProperty("inputs")) { + if (properties.part === 1) + return "part: multiple values"; + properties.part = 1; + { + var error = $root.flyteidl.core.LiteralMap.verify(message.inputs); + if (error) + return "inputs." + error; + } + } + return null; + }; + + return ExecuteTaskSyncRequest; + })(); + + admin.ExecuteTaskSyncResponseHeader = (function() { + + /** + * Properties of an ExecuteTaskSyncResponseHeader. + * @memberof flyteidl.admin + * @interface IExecuteTaskSyncResponseHeader + * @property {flyteidl.admin.IResource|null} [resource] ExecuteTaskSyncResponseHeader resource + */ + + /** + * Constructs a new ExecuteTaskSyncResponseHeader. + * @memberof flyteidl.admin + * @classdesc Represents an ExecuteTaskSyncResponseHeader. + * @implements IExecuteTaskSyncResponseHeader + * @constructor + * @param {flyteidl.admin.IExecuteTaskSyncResponseHeader=} [properties] Properties to set + */ + function ExecuteTaskSyncResponseHeader(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]]; + } + + /** + * ExecuteTaskSyncResponseHeader resource. + * @member {flyteidl.admin.IResource|null|undefined} resource + * @memberof flyteidl.admin.ExecuteTaskSyncResponseHeader + * @instance + */ + ExecuteTaskSyncResponseHeader.prototype.resource = null; + + /** + * Creates a new ExecuteTaskSyncResponseHeader instance using the specified properties. + * @function create + * @memberof flyteidl.admin.ExecuteTaskSyncResponseHeader + * @static + * @param {flyteidl.admin.IExecuteTaskSyncResponseHeader=} [properties] Properties to set + * @returns {flyteidl.admin.ExecuteTaskSyncResponseHeader} ExecuteTaskSyncResponseHeader instance + */ + ExecuteTaskSyncResponseHeader.create = function create(properties) { + return new ExecuteTaskSyncResponseHeader(properties); + }; + + /** + * Encodes the specified ExecuteTaskSyncResponseHeader message. Does not implicitly {@link flyteidl.admin.ExecuteTaskSyncResponseHeader.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.ExecuteTaskSyncResponseHeader + * @static + * @param {flyteidl.admin.IExecuteTaskSyncResponseHeader} message ExecuteTaskSyncResponseHeader message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecuteTaskSyncResponseHeader.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.resource != null && message.hasOwnProperty("resource")) + $root.flyteidl.admin.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Decodes an ExecuteTaskSyncResponseHeader message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.ExecuteTaskSyncResponseHeader + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.ExecuteTaskSyncResponseHeader} ExecuteTaskSyncResponseHeader + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecuteTaskSyncResponseHeader.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.admin.ExecuteTaskSyncResponseHeader(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.resource = $root.flyteidl.admin.Resource.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -22444,59 +23068,46 @@ }; /** - * Verifies a CreateTaskRequest message. + * Verifies an ExecuteTaskSyncResponseHeader message. * @function verify - * @memberof flyteidl.admin.CreateTaskRequest + * @memberof flyteidl.admin.ExecuteTaskSyncResponseHeader * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateTaskRequest.verify = function verify(message) { + ExecuteTaskSyncResponseHeader.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; - } - if (message.template != null && message.hasOwnProperty("template")) { - var error = $root.flyteidl.core.TaskTemplate.verify(message.template); - if (error) - return "template." + error; - } - if (message.outputPrefix != null && message.hasOwnProperty("outputPrefix")) - if (!$util.isString(message.outputPrefix)) - return "outputPrefix: string expected"; - if (message.taskExecutionMetadata != null && message.hasOwnProperty("taskExecutionMetadata")) { - var error = $root.flyteidl.admin.TaskExecutionMetadata.verify(message.taskExecutionMetadata); + if (message.resource != null && message.hasOwnProperty("resource")) { + var error = $root.flyteidl.admin.Resource.verify(message.resource); if (error) - return "taskExecutionMetadata." + error; + return "resource." + error; } return null; }; - return CreateTaskRequest; + return ExecuteTaskSyncResponseHeader; })(); - admin.CreateTaskResponse = (function() { + admin.ExecuteTaskSyncResponse = (function() { /** - * Properties of a CreateTaskResponse. + * Properties of an ExecuteTaskSyncResponse. * @memberof flyteidl.admin - * @interface ICreateTaskResponse - * @property {Uint8Array|null} [resourceMeta] CreateTaskResponse resourceMeta - * @property {flyteidl.admin.IResource|null} [resource] CreateTaskResponse resource + * @interface IExecuteTaskSyncResponse + * @property {flyteidl.admin.IExecuteTaskSyncResponseHeader|null} [header] ExecuteTaskSyncResponse header + * @property {flyteidl.core.ILiteralMap|null} [outputs] ExecuteTaskSyncResponse outputs */ /** - * Constructs a new CreateTaskResponse. + * Constructs a new ExecuteTaskSyncResponse. * @memberof flyteidl.admin - * @classdesc Represents a CreateTaskResponse. - * @implements ICreateTaskResponse + * @classdesc Represents an ExecuteTaskSyncResponse. + * @implements IExecuteTaskSyncResponse * @constructor - * @param {flyteidl.admin.ICreateTaskResponse=} [properties] Properties to set + * @param {flyteidl.admin.IExecuteTaskSyncResponse=} [properties] Properties to set */ - function CreateTaskResponse(properties) { + function ExecuteTaskSyncResponse(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -22504,89 +23115,89 @@ } /** - * CreateTaskResponse resourceMeta. - * @member {Uint8Array} resourceMeta - * @memberof flyteidl.admin.CreateTaskResponse + * ExecuteTaskSyncResponse header. + * @member {flyteidl.admin.IExecuteTaskSyncResponseHeader|null|undefined} header + * @memberof flyteidl.admin.ExecuteTaskSyncResponse * @instance */ - CreateTaskResponse.prototype.resourceMeta = $util.newBuffer([]); + ExecuteTaskSyncResponse.prototype.header = null; /** - * CreateTaskResponse resource. - * @member {flyteidl.admin.IResource|null|undefined} resource - * @memberof flyteidl.admin.CreateTaskResponse + * ExecuteTaskSyncResponse outputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} outputs + * @memberof flyteidl.admin.ExecuteTaskSyncResponse * @instance */ - CreateTaskResponse.prototype.resource = null; + ExecuteTaskSyncResponse.prototype.outputs = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; /** - * CreateTaskResponse res. - * @member {"resourceMeta"|"resource"|undefined} res - * @memberof flyteidl.admin.CreateTaskResponse + * ExecuteTaskSyncResponse res. + * @member {"header"|"outputs"|undefined} res + * @memberof flyteidl.admin.ExecuteTaskSyncResponse * @instance */ - Object.defineProperty(CreateTaskResponse.prototype, "res", { - get: $util.oneOfGetter($oneOfFields = ["resourceMeta", "resource"]), + Object.defineProperty(ExecuteTaskSyncResponse.prototype, "res", { + get: $util.oneOfGetter($oneOfFields = ["header", "outputs"]), set: $util.oneOfSetter($oneOfFields) }); /** - * Creates a new CreateTaskResponse instance using the specified properties. + * Creates a new ExecuteTaskSyncResponse instance using the specified properties. * @function create - * @memberof flyteidl.admin.CreateTaskResponse + * @memberof flyteidl.admin.ExecuteTaskSyncResponse * @static - * @param {flyteidl.admin.ICreateTaskResponse=} [properties] Properties to set - * @returns {flyteidl.admin.CreateTaskResponse} CreateTaskResponse instance + * @param {flyteidl.admin.IExecuteTaskSyncResponse=} [properties] Properties to set + * @returns {flyteidl.admin.ExecuteTaskSyncResponse} ExecuteTaskSyncResponse instance */ - CreateTaskResponse.create = function create(properties) { - return new CreateTaskResponse(properties); + ExecuteTaskSyncResponse.create = function create(properties) { + return new ExecuteTaskSyncResponse(properties); }; /** - * Encodes the specified CreateTaskResponse message. Does not implicitly {@link flyteidl.admin.CreateTaskResponse.verify|verify} messages. + * Encodes the specified ExecuteTaskSyncResponse message. Does not implicitly {@link flyteidl.admin.ExecuteTaskSyncResponse.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.CreateTaskResponse + * @memberof flyteidl.admin.ExecuteTaskSyncResponse * @static - * @param {flyteidl.admin.ICreateTaskResponse} message CreateTaskResponse message or plain object to encode + * @param {flyteidl.admin.IExecuteTaskSyncResponse} message ExecuteTaskSyncResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CreateTaskResponse.encode = function encode(message, writer) { + ExecuteTaskSyncResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.resourceMeta != null && message.hasOwnProperty("resourceMeta")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.resourceMeta); - if (message.resource != null && message.hasOwnProperty("resource")) - $root.flyteidl.admin.Resource.encode(message.resource, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.header != null && message.hasOwnProperty("header")) + $root.flyteidl.admin.ExecuteTaskSyncResponseHeader.encode(message.header, writer.uint32(/* id 1, wireType 2 =*/10).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(); return writer; }; /** - * Decodes a CreateTaskResponse message from the specified reader or buffer. + * Decodes an ExecuteTaskSyncResponse message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.CreateTaskResponse + * @memberof flyteidl.admin.ExecuteTaskSyncResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.CreateTaskResponse} CreateTaskResponse + * @returns {flyteidl.admin.ExecuteTaskSyncResponse} ExecuteTaskSyncResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CreateTaskResponse.decode = function decode(reader, length) { + ExecuteTaskSyncResponse.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.admin.CreateTaskResponse(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.ExecuteTaskSyncResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.resourceMeta = reader.bytes(); + message.header = $root.flyteidl.admin.ExecuteTaskSyncResponseHeader.decode(reader, reader.uint32()); break; case 2: - message.resource = $root.flyteidl.admin.Resource.decode(reader, reader.uint32()); + message.outputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -22597,36 +23208,39 @@ }; /** - * Verifies a CreateTaskResponse message. + * Verifies an ExecuteTaskSyncResponse message. * @function verify - * @memberof flyteidl.admin.CreateTaskResponse + * @memberof flyteidl.admin.ExecuteTaskSyncResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateTaskResponse.verify = function verify(message) { + ExecuteTaskSyncResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.resourceMeta != null && message.hasOwnProperty("resourceMeta")) { + if (message.header != null && message.hasOwnProperty("header")) { properties.res = 1; - if (!(message.resourceMeta && typeof message.resourceMeta.length === "number" || $util.isString(message.resourceMeta))) - return "resourceMeta: buffer expected"; + { + var error = $root.flyteidl.admin.ExecuteTaskSyncResponseHeader.verify(message.header); + if (error) + return "header." + error; + } } - if (message.resource != null && message.hasOwnProperty("resource")) { + if (message.outputs != null && message.hasOwnProperty("outputs")) { if (properties.res === 1) return "res: multiple values"; properties.res = 1; { - var error = $root.flyteidl.admin.Resource.verify(message.resource); + var error = $root.flyteidl.core.LiteralMap.verify(message.outputs); if (error) - return "resource." + error; + return "outputs." + error; } } return null; }; - return CreateTaskResponse; + return ExecuteTaskSyncResponse; })(); admin.GetTaskRequest = (function() { @@ -22637,6 +23251,7 @@ * @interface IGetTaskRequest * @property {string|null} [taskType] GetTaskRequest taskType * @property {Uint8Array|null} [resourceMeta] GetTaskRequest resourceMeta + * @property {flyteidl.admin.ITaskCategory|null} [taskCategory] GetTaskRequest taskCategory */ /** @@ -22670,6 +23285,14 @@ */ GetTaskRequest.prototype.resourceMeta = $util.newBuffer([]); + /** + * GetTaskRequest taskCategory. + * @member {flyteidl.admin.ITaskCategory|null|undefined} taskCategory + * @memberof flyteidl.admin.GetTaskRequest + * @instance + */ + GetTaskRequest.prototype.taskCategory = null; + /** * Creates a new GetTaskRequest instance using the specified properties. * @function create @@ -22698,6 +23321,8 @@ writer.uint32(/* id 1, wireType 2 =*/10).string(message.taskType); if (message.resourceMeta != null && message.hasOwnProperty("resourceMeta")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.resourceMeta); + if (message.taskCategory != null && message.hasOwnProperty("taskCategory")) + $root.flyteidl.admin.TaskCategory.encode(message.taskCategory, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -22725,6 +23350,9 @@ case 2: message.resourceMeta = reader.bytes(); break; + case 3: + message.taskCategory = $root.flyteidl.admin.TaskCategory.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -22750,6 +23378,11 @@ if (message.resourceMeta != null && message.hasOwnProperty("resourceMeta")) if (!(message.resourceMeta && typeof message.resourceMeta.length === "number" || $util.isString(message.resourceMeta))) return "resourceMeta: buffer expected"; + if (message.taskCategory != null && message.hasOwnProperty("taskCategory")) { + var error = $root.flyteidl.admin.TaskCategory.verify(message.taskCategory); + if (error) + return "taskCategory." + error; + } return null; }; @@ -22763,7 +23396,6 @@ * @memberof flyteidl.admin * @interface IGetTaskResponse * @property {flyteidl.admin.IResource|null} [resource] GetTaskResponse resource - * @property {Array.|null} [logLinks] GetTaskResponse logLinks */ /** @@ -22775,7 +23407,6 @@ * @param {flyteidl.admin.IGetTaskResponse=} [properties] Properties to set */ function GetTaskResponse(properties) { - this.logLinks = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -22790,14 +23421,6 @@ */ GetTaskResponse.prototype.resource = null; - /** - * GetTaskResponse logLinks. - * @member {Array.} logLinks - * @memberof flyteidl.admin.GetTaskResponse - * @instance - */ - GetTaskResponse.prototype.logLinks = $util.emptyArray; - /** * Creates a new GetTaskResponse instance using the specified properties. * @function create @@ -22824,9 +23447,6 @@ writer = $Writer.create(); if (message.resource != null && message.hasOwnProperty("resource")) $root.flyteidl.admin.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.logLinks != null && message.logLinks.length) - for (var i = 0; i < message.logLinks.length; ++i) - $root.flyteidl.core.TaskLog.encode(message.logLinks[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -22851,11 +23471,6 @@ case 1: message.resource = $root.flyteidl.admin.Resource.decode(reader, reader.uint32()); break; - case 2: - if (!(message.logLinks && message.logLinks.length)) - message.logLinks = []; - message.logLinks.push($root.flyteidl.core.TaskLog.decode(reader, reader.uint32())); - break; default: reader.skipType(tag & 7); break; @@ -22880,15 +23495,6 @@ if (error) return "resource." + error; } - if (message.logLinks != null && message.hasOwnProperty("logLinks")) { - if (!Array.isArray(message.logLinks)) - return "logLinks: array expected"; - for (var i = 0; i < message.logLinks.length; ++i) { - var error = $root.flyteidl.core.TaskLog.verify(message.logLinks[i]); - if (error) - return "logLinks." + error; - } - } return null; }; @@ -22906,6 +23512,7 @@ * @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 */ /** @@ -22964,6 +23571,14 @@ */ Resource.prototype.phase = 0; + /** + * Resource customInfo. + * @member {google.protobuf.IStruct|null|undefined} customInfo + * @memberof flyteidl.admin.Resource + * @instance + */ + Resource.prototype.customInfo = null; + /** * Creates a new Resource instance using the specified properties. * @function create @@ -22999,6 +23614,8 @@ $root.flyteidl.core.TaskLog.encode(message.logLinks[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); if (message.phase != null && message.hasOwnProperty("phase")) 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(); return writer; }; @@ -23037,6 +23654,9 @@ case 5: message.phase = reader.int32(); break; + case 6: + message.customInfo = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -23098,6 +23718,11 @@ case 7: break; } + if (message.customInfo != null && message.hasOwnProperty("customInfo")) { + var error = $root.google.protobuf.Struct.verify(message.customInfo); + if (error) + return "customInfo." + error; + } return null; }; @@ -23112,6 +23737,7 @@ * @interface IDeleteTaskRequest * @property {string|null} [taskType] DeleteTaskRequest taskType * @property {Uint8Array|null} [resourceMeta] DeleteTaskRequest resourceMeta + * @property {flyteidl.admin.ITaskCategory|null} [taskCategory] DeleteTaskRequest taskCategory */ /** @@ -23145,6 +23771,14 @@ */ DeleteTaskRequest.prototype.resourceMeta = $util.newBuffer([]); + /** + * DeleteTaskRequest taskCategory. + * @member {flyteidl.admin.ITaskCategory|null|undefined} taskCategory + * @memberof flyteidl.admin.DeleteTaskRequest + * @instance + */ + DeleteTaskRequest.prototype.taskCategory = null; + /** * Creates a new DeleteTaskRequest instance using the specified properties. * @function create @@ -23173,6 +23807,8 @@ writer.uint32(/* id 1, wireType 2 =*/10).string(message.taskType); if (message.resourceMeta != null && message.hasOwnProperty("resourceMeta")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.resourceMeta); + if (message.taskCategory != null && message.hasOwnProperty("taskCategory")) + $root.flyteidl.admin.TaskCategory.encode(message.taskCategory, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -23200,6 +23836,9 @@ case 2: message.resourceMeta = reader.bytes(); break; + case 3: + message.taskCategory = $root.flyteidl.admin.TaskCategory.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -23225,6 +23864,11 @@ if (message.resourceMeta != null && message.hasOwnProperty("resourceMeta")) if (!(message.resourceMeta && typeof message.resourceMeta.length === "number" || $util.isString(message.resourceMeta))) return "resourceMeta: buffer expected"; + if (message.taskCategory != null && message.hasOwnProperty("taskCategory")) { + var error = $root.flyteidl.admin.TaskCategory.verify(message.taskCategory); + if (error) + return "taskCategory." + error; + } return null; }; @@ -23332,6 +23976,8 @@ * @interface IAgent * @property {string|null} [name] Agent name * @property {Array.|null} [supportedTaskTypes] Agent supportedTaskTypes + * @property {boolean|null} [isSync] Agent isSync + * @property {Array.|null} [supportedTaskCategories] Agent supportedTaskCategories */ /** @@ -23344,6 +23990,7 @@ */ function Agent(properties) { this.supportedTaskTypes = []; + this.supportedTaskCategories = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -23366,6 +24013,22 @@ */ Agent.prototype.supportedTaskTypes = $util.emptyArray; + /** + * Agent isSync. + * @member {boolean} isSync + * @memberof flyteidl.admin.Agent + * @instance + */ + Agent.prototype.isSync = false; + + /** + * Agent supportedTaskCategories. + * @member {Array.} supportedTaskCategories + * @memberof flyteidl.admin.Agent + * @instance + */ + Agent.prototype.supportedTaskCategories = $util.emptyArray; + /** * Creates a new Agent instance using the specified properties. * @function create @@ -23395,6 +24058,11 @@ if (message.supportedTaskTypes != null && message.supportedTaskTypes.length) for (var i = 0; i < message.supportedTaskTypes.length; ++i) writer.uint32(/* id 2, wireType 2 =*/18).string(message.supportedTaskTypes[i]); + if (message.isSync != null && message.hasOwnProperty("isSync")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isSync); + if (message.supportedTaskCategories != null && message.supportedTaskCategories.length) + for (var i = 0; i < message.supportedTaskCategories.length; ++i) + $root.flyteidl.admin.TaskCategory.encode(message.supportedTaskCategories[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; @@ -23424,6 +24092,14 @@ message.supportedTaskTypes = []; message.supportedTaskTypes.push(reader.string()); break; + case 3: + message.isSync = reader.bool(); + break; + case 4: + if (!(message.supportedTaskCategories && message.supportedTaskCategories.length)) + message.supportedTaskCategories = []; + message.supportedTaskCategories.push($root.flyteidl.admin.TaskCategory.decode(reader, reader.uint32())); + break; default: reader.skipType(tag & 7); break; @@ -23453,12 +24129,151 @@ if (!$util.isString(message.supportedTaskTypes[i])) return "supportedTaskTypes: string[] expected"; } + if (message.isSync != null && message.hasOwnProperty("isSync")) + if (typeof message.isSync !== "boolean") + return "isSync: boolean expected"; + if (message.supportedTaskCategories != null && message.hasOwnProperty("supportedTaskCategories")) { + if (!Array.isArray(message.supportedTaskCategories)) + return "supportedTaskCategories: array expected"; + for (var i = 0; i < message.supportedTaskCategories.length; ++i) { + var error = $root.flyteidl.admin.TaskCategory.verify(message.supportedTaskCategories[i]); + if (error) + return "supportedTaskCategories." + error; + } + } return null; }; return Agent; })(); + admin.TaskCategory = (function() { + + /** + * Properties of a TaskCategory. + * @memberof flyteidl.admin + * @interface ITaskCategory + * @property {string|null} [name] TaskCategory name + * @property {number|null} [version] TaskCategory version + */ + + /** + * Constructs a new TaskCategory. + * @memberof flyteidl.admin + * @classdesc Represents a TaskCategory. + * @implements ITaskCategory + * @constructor + * @param {flyteidl.admin.ITaskCategory=} [properties] Properties to set + */ + function TaskCategory(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]]; + } + + /** + * TaskCategory name. + * @member {string} name + * @memberof flyteidl.admin.TaskCategory + * @instance + */ + TaskCategory.prototype.name = ""; + + /** + * TaskCategory version. + * @member {number} version + * @memberof flyteidl.admin.TaskCategory + * @instance + */ + TaskCategory.prototype.version = 0; + + /** + * Creates a new TaskCategory instance using the specified properties. + * @function create + * @memberof flyteidl.admin.TaskCategory + * @static + * @param {flyteidl.admin.ITaskCategory=} [properties] Properties to set + * @returns {flyteidl.admin.TaskCategory} TaskCategory instance + */ + TaskCategory.create = function create(properties) { + return new TaskCategory(properties); + }; + + /** + * Encodes the specified TaskCategory message. Does not implicitly {@link flyteidl.admin.TaskCategory.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.TaskCategory + * @static + * @param {flyteidl.admin.ITaskCategory} message TaskCategory message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TaskCategory.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.version != null && message.hasOwnProperty("version")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.version); + return writer; + }; + + /** + * Decodes a TaskCategory message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.TaskCategory + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.TaskCategory} TaskCategory + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TaskCategory.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.admin.TaskCategory(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.version = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a TaskCategory message. + * @function verify + * @memberof flyteidl.admin.TaskCategory + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TaskCategory.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.version != null && message.hasOwnProperty("version")) + if (!$util.isInteger(message.version)) + return "version: integer expected"; + return null; + }; + + return TaskCategory; + })(); + admin.GetAgentRequest = (function() { /** @@ -23906,6 +24721,7 @@ * @property {google.protobuf.ITimestamp|null} [startTime] GetTaskMetricsRequest startTime * @property {google.protobuf.ITimestamp|null} [endTime] GetTaskMetricsRequest endTime * @property {google.protobuf.IDuration|null} [step] GetTaskMetricsRequest step + * @property {flyteidl.admin.ITaskCategory|null} [taskCategory] GetTaskMetricsRequest taskCategory */ /** @@ -23972,6 +24788,14 @@ */ GetTaskMetricsRequest.prototype.step = null; + /** + * GetTaskMetricsRequest taskCategory. + * @member {flyteidl.admin.ITaskCategory|null|undefined} taskCategory + * @memberof flyteidl.admin.GetTaskMetricsRequest + * @instance + */ + GetTaskMetricsRequest.prototype.taskCategory = null; + /** * Creates a new GetTaskMetricsRequest instance using the specified properties. * @function create @@ -24009,6 +24833,8 @@ $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); if (message.step != null && message.hasOwnProperty("step")) $root.google.protobuf.Duration.encode(message.step, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.taskCategory != null && message.hasOwnProperty("taskCategory")) + $root.flyteidl.admin.TaskCategory.encode(message.taskCategory, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; @@ -24050,6 +24876,9 @@ case 6: message.step = $root.google.protobuf.Duration.decode(reader, reader.uint32()); break; + case 7: + message.taskCategory = $root.flyteidl.admin.TaskCategory.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -24095,7 +24924,12 @@ if (message.step != null && message.hasOwnProperty("step")) { var error = $root.google.protobuf.Duration.verify(message.step); if (error) - return "step." + error; + return "step." + error; + } + if (message.taskCategory != null && message.hasOwnProperty("taskCategory")) { + var error = $root.flyteidl.admin.TaskCategory.verify(message.taskCategory); + if (error) + return "taskCategory." + error; } return null; }; @@ -24233,6 +25067,7 @@ * @property {Uint8Array|null} [resourceMeta] GetTaskLogsRequest resourceMeta * @property {Long|null} [lines] GetTaskLogsRequest lines * @property {string|null} [token] GetTaskLogsRequest token + * @property {flyteidl.admin.ITaskCategory|null} [taskCategory] GetTaskLogsRequest taskCategory */ /** @@ -24282,6 +25117,14 @@ */ GetTaskLogsRequest.prototype.token = ""; + /** + * GetTaskLogsRequest taskCategory. + * @member {flyteidl.admin.ITaskCategory|null|undefined} taskCategory + * @memberof flyteidl.admin.GetTaskLogsRequest + * @instance + */ + GetTaskLogsRequest.prototype.taskCategory = null; + /** * Creates a new GetTaskLogsRequest instance using the specified properties. * @function create @@ -24314,6 +25157,8 @@ writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.lines); if (message.token != null && message.hasOwnProperty("token")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.token); + if (message.taskCategory != null && message.hasOwnProperty("taskCategory")) + $root.flyteidl.admin.TaskCategory.encode(message.taskCategory, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; @@ -24347,6 +25192,9 @@ case 4: message.token = reader.string(); break; + case 5: + message.taskCategory = $root.flyteidl.admin.TaskCategory.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -24378,20 +25226,253 @@ if (message.token != null && message.hasOwnProperty("token")) if (!$util.isString(message.token)) return "token: string expected"; + if (message.taskCategory != null && message.hasOwnProperty("taskCategory")) { + var error = $root.flyteidl.admin.TaskCategory.verify(message.taskCategory); + if (error) + return "taskCategory." + error; + } return null; }; return GetTaskLogsRequest; })(); + admin.GetTaskLogsResponseHeader = (function() { + + /** + * Properties of a GetTaskLogsResponseHeader. + * @memberof flyteidl.admin + * @interface IGetTaskLogsResponseHeader + * @property {string|null} [token] GetTaskLogsResponseHeader token + */ + + /** + * Constructs a new GetTaskLogsResponseHeader. + * @memberof flyteidl.admin + * @classdesc Represents a GetTaskLogsResponseHeader. + * @implements IGetTaskLogsResponseHeader + * @constructor + * @param {flyteidl.admin.IGetTaskLogsResponseHeader=} [properties] Properties to set + */ + function GetTaskLogsResponseHeader(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]]; + } + + /** + * GetTaskLogsResponseHeader token. + * @member {string} token + * @memberof flyteidl.admin.GetTaskLogsResponseHeader + * @instance + */ + GetTaskLogsResponseHeader.prototype.token = ""; + + /** + * Creates a new GetTaskLogsResponseHeader instance using the specified properties. + * @function create + * @memberof flyteidl.admin.GetTaskLogsResponseHeader + * @static + * @param {flyteidl.admin.IGetTaskLogsResponseHeader=} [properties] Properties to set + * @returns {flyteidl.admin.GetTaskLogsResponseHeader} GetTaskLogsResponseHeader instance + */ + GetTaskLogsResponseHeader.create = function create(properties) { + return new GetTaskLogsResponseHeader(properties); + }; + + /** + * Encodes the specified GetTaskLogsResponseHeader message. Does not implicitly {@link flyteidl.admin.GetTaskLogsResponseHeader.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.GetTaskLogsResponseHeader + * @static + * @param {flyteidl.admin.IGetTaskLogsResponseHeader} message GetTaskLogsResponseHeader message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GetTaskLogsResponseHeader.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.token != null && message.hasOwnProperty("token")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.token); + return writer; + }; + + /** + * Decodes a GetTaskLogsResponseHeader message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.GetTaskLogsResponseHeader + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.GetTaskLogsResponseHeader} GetTaskLogsResponseHeader + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GetTaskLogsResponseHeader.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.admin.GetTaskLogsResponseHeader(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.token = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a GetTaskLogsResponseHeader message. + * @function verify + * @memberof flyteidl.admin.GetTaskLogsResponseHeader + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GetTaskLogsResponseHeader.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.token != null && message.hasOwnProperty("token")) + if (!$util.isString(message.token)) + return "token: string expected"; + return null; + }; + + return GetTaskLogsResponseHeader; + })(); + + admin.GetTaskLogsResponseBody = (function() { + + /** + * Properties of a GetTaskLogsResponseBody. + * @memberof flyteidl.admin + * @interface IGetTaskLogsResponseBody + * @property {Array.|null} [results] GetTaskLogsResponseBody results + */ + + /** + * Constructs a new GetTaskLogsResponseBody. + * @memberof flyteidl.admin + * @classdesc Represents a GetTaskLogsResponseBody. + * @implements IGetTaskLogsResponseBody + * @constructor + * @param {flyteidl.admin.IGetTaskLogsResponseBody=} [properties] Properties to set + */ + function GetTaskLogsResponseBody(properties) { + this.results = []; + 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]]; + } + + /** + * GetTaskLogsResponseBody results. + * @member {Array.} results + * @memberof flyteidl.admin.GetTaskLogsResponseBody + * @instance + */ + GetTaskLogsResponseBody.prototype.results = $util.emptyArray; + + /** + * Creates a new GetTaskLogsResponseBody instance using the specified properties. + * @function create + * @memberof flyteidl.admin.GetTaskLogsResponseBody + * @static + * @param {flyteidl.admin.IGetTaskLogsResponseBody=} [properties] Properties to set + * @returns {flyteidl.admin.GetTaskLogsResponseBody} GetTaskLogsResponseBody instance + */ + GetTaskLogsResponseBody.create = function create(properties) { + return new GetTaskLogsResponseBody(properties); + }; + + /** + * Encodes the specified GetTaskLogsResponseBody message. Does not implicitly {@link flyteidl.admin.GetTaskLogsResponseBody.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.GetTaskLogsResponseBody + * @static + * @param {flyteidl.admin.IGetTaskLogsResponseBody} message GetTaskLogsResponseBody message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GetTaskLogsResponseBody.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.results != null && message.results.length) + for (var i = 0; i < message.results.length; ++i) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.results[i]); + return writer; + }; + + /** + * Decodes a GetTaskLogsResponseBody message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.GetTaskLogsResponseBody + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.GetTaskLogsResponseBody} GetTaskLogsResponseBody + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GetTaskLogsResponseBody.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.admin.GetTaskLogsResponseBody(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.results && message.results.length)) + message.results = []; + message.results.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a GetTaskLogsResponseBody message. + * @function verify + * @memberof flyteidl.admin.GetTaskLogsResponseBody + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GetTaskLogsResponseBody.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.results != null && message.hasOwnProperty("results")) { + if (!Array.isArray(message.results)) + return "results: array expected"; + for (var i = 0; i < message.results.length; ++i) + if (!$util.isString(message.results[i])) + return "results: string[] expected"; + } + return null; + }; + + return GetTaskLogsResponseBody; + })(); + admin.GetTaskLogsResponse = (function() { /** * Properties of a GetTaskLogsResponse. * @memberof flyteidl.admin * @interface IGetTaskLogsResponse - * @property {Array.|null} [results] GetTaskLogsResponse results - * @property {string|null} [token] GetTaskLogsResponse token + * @property {flyteidl.admin.IGetTaskLogsResponseHeader|null} [header] GetTaskLogsResponse header + * @property {flyteidl.admin.IGetTaskLogsResponseBody|null} [body] GetTaskLogsResponse body */ /** @@ -24403,7 +25484,6 @@ * @param {flyteidl.admin.IGetTaskLogsResponse=} [properties] Properties to set */ function GetTaskLogsResponse(properties) { - this.results = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -24411,20 +25491,34 @@ } /** - * GetTaskLogsResponse results. - * @member {Array.} results + * GetTaskLogsResponse header. + * @member {flyteidl.admin.IGetTaskLogsResponseHeader|null|undefined} header * @memberof flyteidl.admin.GetTaskLogsResponse * @instance */ - GetTaskLogsResponse.prototype.results = $util.emptyArray; + GetTaskLogsResponse.prototype.header = null; /** - * GetTaskLogsResponse token. - * @member {string} token + * GetTaskLogsResponse body. + * @member {flyteidl.admin.IGetTaskLogsResponseBody|null|undefined} body + * @memberof flyteidl.admin.GetTaskLogsResponse + * @instance + */ + GetTaskLogsResponse.prototype.body = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * GetTaskLogsResponse part. + * @member {"header"|"body"|undefined} part * @memberof flyteidl.admin.GetTaskLogsResponse * @instance */ - GetTaskLogsResponse.prototype.token = ""; + Object.defineProperty(GetTaskLogsResponse.prototype, "part", { + get: $util.oneOfGetter($oneOfFields = ["header", "body"]), + set: $util.oneOfSetter($oneOfFields) + }); /** * Creates a new GetTaskLogsResponse instance using the specified properties. @@ -24450,11 +25544,10 @@ GetTaskLogsResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.results != null && message.results.length) - for (var i = 0; i < message.results.length; ++i) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.results[i]); - if (message.token != null && message.hasOwnProperty("token")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.token); + if (message.header != null && message.hasOwnProperty("header")) + $root.flyteidl.admin.GetTaskLogsResponseHeader.encode(message.header, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.body != null && message.hasOwnProperty("body")) + $root.flyteidl.admin.GetTaskLogsResponseBody.encode(message.body, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -24477,12 +25570,10 @@ var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.results && message.results.length)) - message.results = []; - message.results.push(reader.string()); + message.header = $root.flyteidl.admin.GetTaskLogsResponseHeader.decode(reader, reader.uint32()); break; case 2: - message.token = reader.string(); + message.body = $root.flyteidl.admin.GetTaskLogsResponseBody.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -24503,16 +25594,25 @@ GetTaskLogsResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.results != null && message.hasOwnProperty("results")) { - if (!Array.isArray(message.results)) - return "results: array expected"; - for (var i = 0; i < message.results.length; ++i) - if (!$util.isString(message.results[i])) - return "results: string[] expected"; + var properties = {}; + if (message.header != null && message.hasOwnProperty("header")) { + properties.part = 1; + { + var error = $root.flyteidl.admin.GetTaskLogsResponseHeader.verify(message.header); + if (error) + return "header." + error; + } + } + if (message.body != null && message.hasOwnProperty("body")) { + if (properties.part === 1) + return "part: multiple values"; + properties.part = 1; + { + var error = $root.flyteidl.admin.GetTaskLogsResponseBody.verify(message.body); + if (error) + return "body." + error; + } } - if (message.token != null && message.hasOwnProperty("token")) - if (!$util.isString(message.token)) - return "token: string expected"; return null; }; @@ -50763,6 +51863,74 @@ return AdminService; })(); + service.SyncAgentService = (function() { + + /** + * Constructs a new SyncAgentService service. + * @memberof flyteidl.service + * @classdesc Represents a SyncAgentService + * @extends $protobuf.rpc.Service + * @constructor + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + */ + function SyncAgentService(rpcImpl, requestDelimited, responseDelimited) { + $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); + } + + (SyncAgentService.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = SyncAgentService; + + /** + * Creates new SyncAgentService service using the specified rpc implementation. + * @function create + * @memberof flyteidl.service.SyncAgentService + * @static + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {SyncAgentService} RPC service. Useful where requests and/or responses are streamed. + */ + SyncAgentService.create = function create(rpcImpl, requestDelimited, responseDelimited) { + return new this(rpcImpl, requestDelimited, responseDelimited); + }; + + /** + * Callback as used by {@link flyteidl.service.SyncAgentService#executeTaskSync}. + * @memberof flyteidl.service.SyncAgentService + * @typedef ExecuteTaskSyncCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.admin.ExecuteTaskSyncResponse} [response] ExecuteTaskSyncResponse + */ + + /** + * Calls ExecuteTaskSync. + * @function executeTaskSync + * @memberof flyteidl.service.SyncAgentService + * @instance + * @param {flyteidl.admin.IExecuteTaskSyncRequest} request ExecuteTaskSyncRequest message or plain object + * @param {flyteidl.service.SyncAgentService.ExecuteTaskSyncCallback} callback Node-style callback called with the error, if any, and ExecuteTaskSyncResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(SyncAgentService.prototype.executeTaskSync = function executeTaskSync(request, callback) { + return this.rpcCall(executeTaskSync, $root.flyteidl.admin.ExecuteTaskSyncRequest, $root.flyteidl.admin.ExecuteTaskSyncResponse, request, callback); + }, "name", { value: "ExecuteTaskSync" }); + + /** + * Calls ExecuteTaskSync. + * @function executeTaskSync + * @memberof flyteidl.service.SyncAgentService + * @instance + * @param {flyteidl.admin.IExecuteTaskSyncRequest} request ExecuteTaskSyncRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + return SyncAgentService; + })(); + service.AsyncAgentService = (function() { /** diff --git a/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.py index f23ad50819f..950a916662b 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.py @@ -13,14 +13,16 @@ from flyteidl.core import literals_pb2 as flyteidl_dot_core_dot_literals__pb2 from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 +from flyteidl.core import workflow_pb2 as flyteidl_dot_core_dot_workflow__pb2 from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 from flyteidl.core import execution_pb2 as flyteidl_dot_core_dot_execution__pb2 from flyteidl.core import metrics_pb2 as flyteidl_dot_core_dot_metrics__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +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\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1b\x66lyteidl/core/metrics.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x98\x05\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\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\"z\n\x12\x43reateTaskResponse\x12%\n\rresource_meta\x18\x01 \x01(\x0cH\x00R\x0cresourceMeta\x12\x36\n\x08resource\x18\x02 \x01(\x0b\x32\x18.flyteidl.admin.ResourceH\x00R\x08resourceB\x05\n\x03res\"R\n\x0eGetTaskRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\"|\n\x0fGetTaskResponse\x12\x34\n\x08resource\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.ResourceR\x08resource\x12\x33\n\tlog_links\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x08logLinks\"\xf9\x01\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\"U\n\x11\x44\x65leteTaskRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\"\x14\n\x12\x44\x65leteTaskResponse\"M\n\x05\x41gent\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x30\n\x14supported_task_types\x18\x02 \x03(\tR\x12supportedTaskTypes\"%\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\"\x94\x02\n\x15GetTaskMetricsRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\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\"X\n\x16GetTaskMetricsResponse\x12>\n\x07results\x18\x01 \x03(\x0b\x32$.flyteidl.core.ExecutionMetricResultR\x07results\"\x82\x01\n\x12GetTaskLogsRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\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\"E\n\x13GetTaskLogsResponse\x12\x18\n\x07results\x18\x01 \x03(\tR\x07results\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token*^\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\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\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xe9\x06\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\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') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -29,54 +31,80 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\022com.flyteidl.adminB\nAgentProtoP\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' + _STATE._options = None + _STATE._serialized_options = b'\030\001' _TASKEXECUTIONMETADATA_LABELSENTRY._options = None _TASKEXECUTIONMETADATA_LABELSENTRY._serialized_options = b'8\001' _TASKEXECUTIONMETADATA_ANNOTATIONSENTRY._options = None _TASKEXECUTIONMETADATA_ANNOTATIONSENTRY._serialized_options = b'8\001' _TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY._options = None _TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY._serialized_options = b'8\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' - _globals['_STATE']._serialized_start=2730 - _globals['_STATE']._serialized_end=2824 - _globals['_TASKEXECUTIONMETADATA']._serialized_start=261 - _globals['_TASKEXECUTIONMETADATA']._serialized_end=925 - _globals['_TASKEXECUTIONMETADATA_LABELSENTRY']._serialized_start=731 - _globals['_TASKEXECUTIONMETADATA_LABELSENTRY']._serialized_end=788 - _globals['_TASKEXECUTIONMETADATA_ANNOTATIONSENTRY']._serialized_start=790 - _globals['_TASKEXECUTIONMETADATA_ANNOTATIONSENTRY']._serialized_end=852 - _globals['_TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY']._serialized_start=854 - _globals['_TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY']._serialized_end=925 - _globals['_CREATETASKREQUEST']._serialized_start=928 - _globals['_CREATETASKREQUEST']._serialized_end=1187 - _globals['_CREATETASKRESPONSE']._serialized_start=1189 - _globals['_CREATETASKRESPONSE']._serialized_end=1311 - _globals['_GETTASKREQUEST']._serialized_start=1313 - _globals['_GETTASKREQUEST']._serialized_end=1395 - _globals['_GETTASKRESPONSE']._serialized_start=1397 - _globals['_GETTASKRESPONSE']._serialized_end=1521 - _globals['_RESOURCE']._serialized_start=1524 - _globals['_RESOURCE']._serialized_end=1773 - _globals['_DELETETASKREQUEST']._serialized_start=1775 - _globals['_DELETETASKREQUEST']._serialized_end=1860 - _globals['_DELETETASKRESPONSE']._serialized_start=1862 - _globals['_DELETETASKRESPONSE']._serialized_end=1882 - _globals['_AGENT']._serialized_start=1884 - _globals['_AGENT']._serialized_end=1961 - _globals['_GETAGENTREQUEST']._serialized_start=1963 - _globals['_GETAGENTREQUEST']._serialized_end=2000 - _globals['_GETAGENTRESPONSE']._serialized_start=2002 - _globals['_GETAGENTRESPONSE']._serialized_end=2065 - _globals['_LISTAGENTSREQUEST']._serialized_start=2067 - _globals['_LISTAGENTSREQUEST']._serialized_end=2086 - _globals['_LISTAGENTSRESPONSE']._serialized_start=2088 - _globals['_LISTAGENTSRESPONSE']._serialized_end=2155 - _globals['_GETTASKMETRICSREQUEST']._serialized_start=2158 - _globals['_GETTASKMETRICSREQUEST']._serialized_end=2434 - _globals['_GETTASKMETRICSRESPONSE']._serialized_start=2436 - _globals['_GETTASKMETRICSRESPONSE']._serialized_end=2524 - _globals['_GETTASKLOGSREQUEST']._serialized_start=2527 - _globals['_GETTASKLOGSREQUEST']._serialized_end=2657 - _globals['_GETTASKLOGSRESPONSE']._serialized_start=2659 - _globals['_GETTASKLOGSRESPONSE']._serialized_end=2728 + _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 + _AGENT.fields_by_name['supported_task_types']._serialized_options = b'\030\001' + _GETTASKMETRICSREQUEST.fields_by_name['task_type']._options = None + _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=4271 + _globals['_STATE']._serialized_end=4369 + _globals['_TASKEXECUTIONMETADATA']._serialized_start=321 + _globals['_TASKEXECUTIONMETADATA']._serialized_end=1194 + _globals['_TASKEXECUTIONMETADATA_LABELSENTRY']._serialized_start=1000 + _globals['_TASKEXECUTIONMETADATA_LABELSENTRY']._serialized_end=1057 + _globals['_TASKEXECUTIONMETADATA_ANNOTATIONSENTRY']._serialized_start=1059 + _globals['_TASKEXECUTIONMETADATA_ANNOTATIONSENTRY']._serialized_end=1121 + _globals['_TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY']._serialized_start=1123 + _globals['_TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY']._serialized_end=1194 + _globals['_CREATETASKREQUEST']._serialized_start=1197 + _globals['_CREATETASKREQUEST']._serialized_end=1456 + _globals['_CREATETASKRESPONSE']._serialized_start=1458 + _globals['_CREATETASKRESPONSE']._serialized_end=1515 + _globals['_CREATEREQUESTHEADER']._serialized_start=1518 + _globals['_CREATEREQUESTHEADER']._serialized_end=1781 + _globals['_EXECUTETASKSYNCREQUEST']._serialized_start=1784 + _globals['_EXECUTETASKSYNCREQUEST']._serialized_end=1932 + _globals['_EXECUTETASKSYNCRESPONSEHEADER']._serialized_start=1934 + _globals['_EXECUTETASKSYNCRESPONSEHEADER']._serialized_end=2019 + _globals['_EXECUTETASKSYNCRESPONSE']._serialized_start=2022 + _globals['_EXECUTETASKSYNCRESPONSE']._serialized_end=2182 + _globals['_GETTASKREQUEST']._serialized_start=2185 + _globals['_GETTASKREQUEST']._serialized_end=2338 + _globals['_GETTASKRESPONSE']._serialized_start=2340 + _globals['_GETTASKRESPONSE']._serialized_end=2411 + _globals['_RESOURCE']._serialized_start=2414 + _globals['_RESOURCE']._serialized_end=2721 + _globals['_DELETETASKREQUEST']._serialized_start=2724 + _globals['_DELETETASKREQUEST']._serialized_end=2880 + _globals['_DELETETASKRESPONSE']._serialized_start=2882 + _globals['_DELETETASKRESPONSE']._serialized_end=2902 + _globals['_AGENT']._serialized_start=2905 + _globals['_AGENT']._serialized_end=3101 + _globals['_TASKCATEGORY']._serialized_start=3103 + _globals['_TASKCATEGORY']._serialized_end=3163 + _globals['_GETAGENTREQUEST']._serialized_start=3165 + _globals['_GETAGENTREQUEST']._serialized_end=3202 + _globals['_GETAGENTRESPONSE']._serialized_start=3204 + _globals['_GETAGENTRESPONSE']._serialized_end=3267 + _globals['_LISTAGENTSREQUEST']._serialized_start=3269 + _globals['_LISTAGENTSREQUEST']._serialized_end=3288 + _globals['_LISTAGENTSRESPONSE']._serialized_start=3290 + _globals['_LISTAGENTSRESPONSE']._serialized_end=3357 + _globals['_GETTASKMETRICSREQUEST']._serialized_start=3360 + _globals['_GETTASKMETRICSREQUEST']._serialized_end=3707 + _globals['_GETTASKMETRICSRESPONSE']._serialized_start=3709 + _globals['_GETTASKMETRICSRESPONSE']._serialized_end=3797 + _globals['_GETTASKLOGSREQUEST']._serialized_start=3800 + _globals['_GETTASKLOGSREQUEST']._serialized_end=4001 + _globals['_GETTASKLOGSRESPONSEHEADER']._serialized_start=4003 + _globals['_GETTASKLOGSRESPONSEHEADER']._serialized_end=4052 + _globals['_GETTASKLOGSRESPONSEBODY']._serialized_start=4054 + _globals['_GETTASKLOGSRESPONSEBODY']._serialized_end=4105 + _globals['_GETTASKLOGSRESPONSE']._serialized_start=4108 + _globals['_GETTASKLOGSRESPONSE']._serialized_end=4269 # @@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 7b7c6beb079..988985e5aea 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.pyi @@ -1,10 +1,12 @@ from flyteidl.core import literals_pb2 as _literals_pb2 from flyteidl.core import tasks_pb2 as _tasks_pb2 +from flyteidl.core import workflow_pb2 as _workflow_pb2 from flyteidl.core import identifier_pb2 as _identifier_pb2 from flyteidl.core import execution_pb2 as _execution_pb2 from flyteidl.core import metrics_pb2 as _metrics_pb2 from google.protobuf import duration_pb2 as _duration_pb2 from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf import struct_pb2 as _struct_pb2 from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor @@ -27,7 +29,7 @@ RUNNING: State SUCCEEDED: State class TaskExecutionMetadata(_message.Message): - __slots__ = ["task_execution_id", "namespace", "labels", "annotations", "k8s_service_account", "environment_variables"] + __slots__ = ["task_execution_id", "namespace", "labels", "annotations", "k8s_service_account", "environment_variables", "max_attempts", "interruptible", "interruptible_failure_threshold", "overrides"] class LabelsEntry(_message.Message): __slots__ = ["key", "value"] KEY_FIELD_NUMBER: _ClassVar[int] @@ -55,13 +57,21 @@ class TaskExecutionMetadata(_message.Message): ANNOTATIONS_FIELD_NUMBER: _ClassVar[int] K8S_SERVICE_ACCOUNT_FIELD_NUMBER: _ClassVar[int] ENVIRONMENT_VARIABLES_FIELD_NUMBER: _ClassVar[int] + MAX_ATTEMPTS_FIELD_NUMBER: _ClassVar[int] + INTERRUPTIBLE_FIELD_NUMBER: _ClassVar[int] + INTERRUPTIBLE_FAILURE_THRESHOLD_FIELD_NUMBER: _ClassVar[int] + OVERRIDES_FIELD_NUMBER: _ClassVar[int] task_execution_id: _identifier_pb2.TaskExecutionIdentifier namespace: str labels: _containers.ScalarMap[str, str] annotations: _containers.ScalarMap[str, str] k8s_service_account: str environment_variables: _containers.ScalarMap[str, str] - 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]] = ...) -> None: ... + max_attempts: int + interruptible: bool + interruptible_failure_threshold: int + overrides: _workflow_pb2.TaskNodeOverrides + 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]] = ...) -> None: ... class CreateTaskRequest(_message.Message): __slots__ = ["inputs", "template", "output_prefix", "task_execution_metadata"] @@ -76,62 +86,110 @@ class CreateTaskRequest(_message.Message): 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: ... class CreateTaskResponse(_message.Message): - __slots__ = ["resource_meta", "resource"] + __slots__ = ["resource_meta"] RESOURCE_META_FIELD_NUMBER: _ClassVar[int] - RESOURCE_FIELD_NUMBER: _ClassVar[int] resource_meta: bytes + def __init__(self, resource_meta: _Optional[bytes] = ...) -> None: ... + +class CreateRequestHeader(_message.Message): + __slots__ = ["template", "output_prefix", "task_execution_metadata", "max_dataset_size_bytes"] + TEMPLATE_FIELD_NUMBER: _ClassVar[int] + OUTPUT_PREFIX_FIELD_NUMBER: _ClassVar[int] + TASK_EXECUTION_METADATA_FIELD_NUMBER: _ClassVar[int] + MAX_DATASET_SIZE_BYTES_FIELD_NUMBER: _ClassVar[int] + template: _tasks_pb2.TaskTemplate + output_prefix: str + task_execution_metadata: TaskExecutionMetadata + max_dataset_size_bytes: int + def __init__(self, template: _Optional[_Union[_tasks_pb2.TaskTemplate, _Mapping]] = ..., output_prefix: _Optional[str] = ..., task_execution_metadata: _Optional[_Union[TaskExecutionMetadata, _Mapping]] = ..., max_dataset_size_bytes: _Optional[int] = ...) -> None: ... + +class ExecuteTaskSyncRequest(_message.Message): + __slots__ = ["header", "inputs"] + HEADER_FIELD_NUMBER: _ClassVar[int] + INPUTS_FIELD_NUMBER: _ClassVar[int] + header: CreateRequestHeader + inputs: _literals_pb2.LiteralMap + def __init__(self, header: _Optional[_Union[CreateRequestHeader, _Mapping]] = ..., inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ...) -> None: ... + +class ExecuteTaskSyncResponseHeader(_message.Message): + __slots__ = ["resource"] + RESOURCE_FIELD_NUMBER: _ClassVar[int] resource: Resource - def __init__(self, resource_meta: _Optional[bytes] = ..., resource: _Optional[_Union[Resource, _Mapping]] = ...) -> None: ... + def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ...) -> None: ... + +class ExecuteTaskSyncResponse(_message.Message): + __slots__ = ["header", "outputs"] + HEADER_FIELD_NUMBER: _ClassVar[int] + OUTPUTS_FIELD_NUMBER: _ClassVar[int] + header: ExecuteTaskSyncResponseHeader + outputs: _literals_pb2.LiteralMap + def __init__(self, header: _Optional[_Union[ExecuteTaskSyncResponseHeader, _Mapping]] = ..., outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ...) -> None: ... class GetTaskRequest(_message.Message): - __slots__ = ["task_type", "resource_meta"] + __slots__ = ["task_type", "resource_meta", "task_category"] TASK_TYPE_FIELD_NUMBER: _ClassVar[int] RESOURCE_META_FIELD_NUMBER: _ClassVar[int] + TASK_CATEGORY_FIELD_NUMBER: _ClassVar[int] task_type: str resource_meta: bytes - def __init__(self, task_type: _Optional[str] = ..., resource_meta: _Optional[bytes] = ...) -> None: ... + task_category: TaskCategory + def __init__(self, task_type: _Optional[str] = ..., resource_meta: _Optional[bytes] = ..., task_category: _Optional[_Union[TaskCategory, _Mapping]] = ...) -> None: ... class GetTaskResponse(_message.Message): - __slots__ = ["resource", "log_links"] + __slots__ = ["resource"] RESOURCE_FIELD_NUMBER: _ClassVar[int] - LOG_LINKS_FIELD_NUMBER: _ClassVar[int] resource: Resource - log_links: _containers.RepeatedCompositeFieldContainer[_execution_pb2.TaskLog] - def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ..., log_links: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ...) -> None: ... + def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ...) -> None: ... class Resource(_message.Message): - __slots__ = ["state", "outputs", "message", "log_links", "phase"] + __slots__ = ["state", "outputs", "message", "log_links", "phase", "custom_info"] STATE_FIELD_NUMBER: _ClassVar[int] 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] state: State outputs: _literals_pb2.LiteralMap message: str log_links: _containers.RepeatedCompositeFieldContainer[_execution_pb2.TaskLog] phase: _execution_pb2.TaskExecution.Phase - 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]] = ...) -> None: ... + 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: ... class DeleteTaskRequest(_message.Message): - __slots__ = ["task_type", "resource_meta"] + __slots__ = ["task_type", "resource_meta", "task_category"] TASK_TYPE_FIELD_NUMBER: _ClassVar[int] RESOURCE_META_FIELD_NUMBER: _ClassVar[int] + TASK_CATEGORY_FIELD_NUMBER: _ClassVar[int] task_type: str resource_meta: bytes - def __init__(self, task_type: _Optional[str] = ..., resource_meta: _Optional[bytes] = ...) -> None: ... + task_category: TaskCategory + def __init__(self, task_type: _Optional[str] = ..., resource_meta: _Optional[bytes] = ..., task_category: _Optional[_Union[TaskCategory, _Mapping]] = ...) -> None: ... class DeleteTaskResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... class Agent(_message.Message): - __slots__ = ["name", "supported_task_types"] + __slots__ = ["name", "supported_task_types", "is_sync", "supported_task_categories"] NAME_FIELD_NUMBER: _ClassVar[int] SUPPORTED_TASK_TYPES_FIELD_NUMBER: _ClassVar[int] + IS_SYNC_FIELD_NUMBER: _ClassVar[int] + SUPPORTED_TASK_CATEGORIES_FIELD_NUMBER: _ClassVar[int] name: str supported_task_types: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, name: _Optional[str] = ..., supported_task_types: _Optional[_Iterable[str]] = ...) -> None: ... + is_sync: bool + supported_task_categories: _containers.RepeatedCompositeFieldContainer[TaskCategory] + def __init__(self, name: _Optional[str] = ..., supported_task_types: _Optional[_Iterable[str]] = ..., is_sync: bool = ..., supported_task_categories: _Optional[_Iterable[_Union[TaskCategory, _Mapping]]] = ...) -> None: ... + +class TaskCategory(_message.Message): + __slots__ = ["name", "version"] + NAME_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + name: str + version: int + def __init__(self, name: _Optional[str] = ..., version: _Optional[int] = ...) -> None: ... class GetAgentRequest(_message.Message): __slots__ = ["name"] @@ -156,20 +214,22 @@ class ListAgentsResponse(_message.Message): def __init__(self, agents: _Optional[_Iterable[_Union[Agent, _Mapping]]] = ...) -> None: ... class GetTaskMetricsRequest(_message.Message): - __slots__ = ["task_type", "resource_meta", "queries", "start_time", "end_time", "step"] + __slots__ = ["task_type", "resource_meta", "queries", "start_time", "end_time", "step", "task_category"] TASK_TYPE_FIELD_NUMBER: _ClassVar[int] RESOURCE_META_FIELD_NUMBER: _ClassVar[int] QUERIES_FIELD_NUMBER: _ClassVar[int] START_TIME_FIELD_NUMBER: _ClassVar[int] END_TIME_FIELD_NUMBER: _ClassVar[int] STEP_FIELD_NUMBER: _ClassVar[int] + TASK_CATEGORY_FIELD_NUMBER: _ClassVar[int] task_type: str resource_meta: bytes queries: _containers.RepeatedScalarFieldContainer[str] start_time: _timestamp_pb2.Timestamp end_time: _timestamp_pb2.Timestamp step: _duration_pb2.Duration - def __init__(self, task_type: _Optional[str] = ..., resource_meta: _Optional[bytes] = ..., queries: _Optional[_Iterable[str]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., step: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + task_category: TaskCategory + def __init__(self, task_type: _Optional[str] = ..., resource_meta: _Optional[bytes] = ..., queries: _Optional[_Iterable[str]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., step: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., task_category: _Optional[_Union[TaskCategory, _Mapping]] = ...) -> None: ... class GetTaskMetricsResponse(_message.Message): __slots__ = ["results"] @@ -178,21 +238,35 @@ class GetTaskMetricsResponse(_message.Message): def __init__(self, results: _Optional[_Iterable[_Union[_metrics_pb2.ExecutionMetricResult, _Mapping]]] = ...) -> None: ... class GetTaskLogsRequest(_message.Message): - __slots__ = ["task_type", "resource_meta", "lines", "token"] + __slots__ = ["task_type", "resource_meta", "lines", "token", "task_category"] TASK_TYPE_FIELD_NUMBER: _ClassVar[int] RESOURCE_META_FIELD_NUMBER: _ClassVar[int] LINES_FIELD_NUMBER: _ClassVar[int] TOKEN_FIELD_NUMBER: _ClassVar[int] + TASK_CATEGORY_FIELD_NUMBER: _ClassVar[int] task_type: str resource_meta: bytes lines: int token: str - def __init__(self, task_type: _Optional[str] = ..., resource_meta: _Optional[bytes] = ..., lines: _Optional[int] = ..., token: _Optional[str] = ...) -> None: ... + task_category: TaskCategory + def __init__(self, task_type: _Optional[str] = ..., resource_meta: _Optional[bytes] = ..., lines: _Optional[int] = ..., token: _Optional[str] = ..., task_category: _Optional[_Union[TaskCategory, _Mapping]] = ...) -> None: ... -class GetTaskLogsResponse(_message.Message): - __slots__ = ["results", "token"] - RESULTS_FIELD_NUMBER: _ClassVar[int] +class GetTaskLogsResponseHeader(_message.Message): + __slots__ = ["token"] TOKEN_FIELD_NUMBER: _ClassVar[int] - results: _containers.RepeatedScalarFieldContainer[str] token: str - def __init__(self, results: _Optional[_Iterable[str]] = ..., token: _Optional[str] = ...) -> None: ... + def __init__(self, token: _Optional[str] = ...) -> None: ... + +class GetTaskLogsResponseBody(_message.Message): + __slots__ = ["results"] + RESULTS_FIELD_NUMBER: _ClassVar[int] + results: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, results: _Optional[_Iterable[str]] = ...) -> None: ... + +class GetTaskLogsResponse(_message.Message): + __slots__ = ["header", "body"] + HEADER_FIELD_NUMBER: _ClassVar[int] + BODY_FIELD_NUMBER: _ClassVar[int] + header: GetTaskLogsResponseHeader + body: GetTaskLogsResponseBody + def __init__(self, header: _Optional[_Union[GetTaskLogsResponseHeader, _Mapping]] = ..., body: _Optional[_Union[GetTaskLogsResponseBody, _Mapping]] = ...) -> None: ... diff --git a/flyteidl/gen/pb_python/flyteidl/service/agent_pb2.py b/flyteidl/gen/pb_python/flyteidl/service/agent_pb2.py index 4a1a3d8f70b..2c4f728fba6 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/agent_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/service/agent_pb2.py @@ -15,7 +15,7 @@ from flyteidl.admin import agent_pb2 as flyteidl_dot_admin_dot_agent__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/service/agent.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1a\x66lyteidl/admin/agent.proto2\xcc\x03\n\x11\x41syncAgentService\x12U\n\nCreateTask\x12!.flyteidl.admin.CreateTaskRequest\x1a\".flyteidl.admin.CreateTaskResponse\"\x00\x12L\n\x07GetTask\x12\x1e.flyteidl.admin.GetTaskRequest\x1a\x1f.flyteidl.admin.GetTaskResponse\"\x00\x12U\n\nDeleteTask\x12!.flyteidl.admin.DeleteTaskRequest\x1a\".flyteidl.admin.DeleteTaskResponse\"\x00\x12\x61\n\x0eGetTaskMetrics\x12%.flyteidl.admin.GetTaskMetricsRequest\x1a&.flyteidl.admin.GetTaskMetricsResponse\"\x00\x12X\n\x0bGetTaskLogs\x12\".flyteidl.admin.GetTaskLogsRequest\x1a#.flyteidl.admin.GetTaskLogsResponse\"\x00\x32\xf0\x01\n\x14\x41gentMetadataService\x12k\n\x08GetAgent\x12\x1f.flyteidl.admin.GetAgentRequest\x1a .flyteidl.admin.GetAgentResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/agent/{name}\x12k\n\nListAgents\x12!.flyteidl.admin.ListAgentsRequest\x1a\".flyteidl.admin.ListAgentsResponse\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/api/v1/agentsB\xc2\x01\n\x14\x63om.flyteidl.serviceB\nAgentProtoP\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\x1c\x66lyteidl/service/agent.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1a\x66lyteidl/admin/agent.proto2\xa1\x01\n\x10SyncAgentService\x12\x8c\x01\n\x0f\x45xecuteTaskSync\x12&.flyteidl.admin.ExecuteTaskSyncRequest\x1a\'.flyteidl.admin.ExecuteTaskSyncResponse\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/api/v1/agent/task/stream(\x01\x30\x01\x32\xe3\x06\n\x11\x41syncAgentService\x12r\n\nCreateTask\x12!.flyteidl.admin.CreateTaskRequest\x1a\".flyteidl.admin.CreateTaskResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/agent/task\x12\xa3\x01\n\x07GetTask\x12\x1e.flyteidl.admin.GetTaskRequest\x1a\x1f.flyteidl.admin.GetTaskResponse\"W\x82\xd3\xe4\x93\x02Q\x12O/api/v1/agent/task/{task_category.name}/{task_category.version}/{resource_meta}\x12\xb7\x01\n\nDeleteTask\x12!.flyteidl.admin.DeleteTaskRequest\x1a\".flyteidl.admin.DeleteTaskResponse\"b\x82\xd3\xe4\x93\x02\\*Z/api/v1/agent/task_executions/{task_category.name}/{task_category.version}/{resource_meta}\x12\xc0\x01\n\x0eGetTaskMetrics\x12%.flyteidl.admin.GetTaskMetricsRequest\x1a&.flyteidl.admin.GetTaskMetricsResponse\"_\x82\xd3\xe4\x93\x02Y\x12W/api/v1/agent/task/metrics/{task_category.name}/{task_category.version}/{resource_meta}\x12\xb6\x01\n\x0bGetTaskLogs\x12\".flyteidl.admin.GetTaskLogsRequest\x1a#.flyteidl.admin.GetTaskLogsResponse\"\\\x82\xd3\xe4\x93\x02V\x12T/api/v1/agent/task/logs/{task_category.name}/{task_category.version}/{resource_meta}0\x01\x32\xf0\x01\n\x14\x41gentMetadataService\x12k\n\x08GetAgent\x12\x1f.flyteidl.admin.GetAgentRequest\x1a .flyteidl.admin.GetAgentResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/agent/{name}\x12k\n\nListAgents\x12!.flyteidl.admin.ListAgentsRequest\x1a\".flyteidl.admin.ListAgentsResponse\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/api/v1/agentsB\xc2\x01\n\x14\x63om.flyteidl.serviceB\nAgentProtoP\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) @@ -24,12 +24,26 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024com.flyteidl.serviceB\nAgentProtoP\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' + _SYNCAGENTSERVICE.methods_by_name['ExecuteTaskSync']._options = None + _SYNCAGENTSERVICE.methods_by_name['ExecuteTaskSync']._serialized_options = b'\202\323\344\223\002\036:\001*\"\031/api/v1/agent/task/stream' + _ASYNCAGENTSERVICE.methods_by_name['CreateTask']._options = None + _ASYNCAGENTSERVICE.methods_by_name['CreateTask']._serialized_options = b'\202\323\344\223\002\027:\001*\"\022/api/v1/agent/task' + _ASYNCAGENTSERVICE.methods_by_name['GetTask']._options = None + _ASYNCAGENTSERVICE.methods_by_name['GetTask']._serialized_options = b'\202\323\344\223\002Q\022O/api/v1/agent/task/{task_category.name}/{task_category.version}/{resource_meta}' + _ASYNCAGENTSERVICE.methods_by_name['DeleteTask']._options = None + _ASYNCAGENTSERVICE.methods_by_name['DeleteTask']._serialized_options = b'\202\323\344\223\002\\*Z/api/v1/agent/task_executions/{task_category.name}/{task_category.version}/{resource_meta}' + _ASYNCAGENTSERVICE.methods_by_name['GetTaskMetrics']._options = None + _ASYNCAGENTSERVICE.methods_by_name['GetTaskMetrics']._serialized_options = b'\202\323\344\223\002Y\022W/api/v1/agent/task/metrics/{task_category.name}/{task_category.version}/{resource_meta}' + _ASYNCAGENTSERVICE.methods_by_name['GetTaskLogs']._options = None + _ASYNCAGENTSERVICE.methods_by_name['GetTaskLogs']._serialized_options = b'\202\323\344\223\002V\022T/api/v1/agent/task/logs/{task_category.name}/{task_category.version}/{resource_meta}' _AGENTMETADATASERVICE.methods_by_name['GetAgent']._options = None _AGENTMETADATASERVICE.methods_by_name['GetAgent']._serialized_options = b'\202\323\344\223\002\026\022\024/api/v1/agent/{name}' _AGENTMETADATASERVICE.methods_by_name['ListAgents']._options = None _AGENTMETADATASERVICE.methods_by_name['ListAgents']._serialized_options = b'\202\323\344\223\002\020\022\016/api/v1/agents' - _globals['_ASYNCAGENTSERVICE']._serialized_start=109 - _globals['_ASYNCAGENTSERVICE']._serialized_end=569 - _globals['_AGENTMETADATASERVICE']._serialized_start=572 - _globals['_AGENTMETADATASERVICE']._serialized_end=812 + _globals['_SYNCAGENTSERVICE']._serialized_start=109 + _globals['_SYNCAGENTSERVICE']._serialized_end=270 + _globals['_ASYNCAGENTSERVICE']._serialized_start=273 + _globals['_ASYNCAGENTSERVICE']._serialized_end=1140 + _globals['_AGENTMETADATASERVICE']._serialized_start=1143 + _globals['_AGENTMETADATASERVICE']._serialized_end=1383 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/service/agent_pb2_grpc.py b/flyteidl/gen/pb_python/flyteidl/service/agent_pb2_grpc.py index 7d04b0cd338..8436a9d17fe 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/agent_pb2_grpc.py +++ b/flyteidl/gen/pb_python/flyteidl/service/agent_pb2_grpc.py @@ -5,8 +5,73 @@ from flyteidl.admin import agent_pb2 as flyteidl_dot_admin_dot_agent__pb2 +class SyncAgentServiceStub(object): + """SyncAgentService defines an RPC Service that allows propeller to send the request to the agent server synchronously. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.ExecuteTaskSync = channel.stream_stream( + '/flyteidl.service.SyncAgentService/ExecuteTaskSync', + request_serializer=flyteidl_dot_admin_dot_agent__pb2.ExecuteTaskSyncRequest.SerializeToString, + response_deserializer=flyteidl_dot_admin_dot_agent__pb2.ExecuteTaskSyncResponse.FromString, + ) + + +class SyncAgentServiceServicer(object): + """SyncAgentService defines an RPC Service that allows propeller to send the request to the agent server synchronously. + """ + + def ExecuteTaskSync(self, request_iterator, context): + """ExecuteTaskSync streams the create request and inputs to the agent service and streams the outputs back. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_SyncAgentServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'ExecuteTaskSync': grpc.stream_stream_rpc_method_handler( + servicer.ExecuteTaskSync, + request_deserializer=flyteidl_dot_admin_dot_agent__pb2.ExecuteTaskSyncRequest.FromString, + response_serializer=flyteidl_dot_admin_dot_agent__pb2.ExecuteTaskSyncResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'flyteidl.service.SyncAgentService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class SyncAgentService(object): + """SyncAgentService defines an RPC Service that allows propeller to send the request to the agent server synchronously. + """ + + @staticmethod + def ExecuteTaskSync(request_iterator, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.stream_stream(request_iterator, target, '/flyteidl.service.SyncAgentService/ExecuteTaskSync', + flyteidl_dot_admin_dot_agent__pb2.ExecuteTaskSyncRequest.SerializeToString, + flyteidl_dot_admin_dot_agent__pb2.ExecuteTaskSyncResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + class AsyncAgentServiceStub(object): - """AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server. + """AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server asynchronously. """ def __init__(self, channel): @@ -35,7 +100,7 @@ def __init__(self, channel): request_serializer=flyteidl_dot_admin_dot_agent__pb2.GetTaskMetricsRequest.SerializeToString, response_deserializer=flyteidl_dot_admin_dot_agent__pb2.GetTaskMetricsResponse.FromString, ) - self.GetTaskLogs = channel.unary_unary( + self.GetTaskLogs = channel.unary_stream( '/flyteidl.service.AsyncAgentService/GetTaskLogs', request_serializer=flyteidl_dot_admin_dot_agent__pb2.GetTaskLogsRequest.SerializeToString, response_deserializer=flyteidl_dot_admin_dot_agent__pb2.GetTaskLogsResponse.FromString, @@ -43,11 +108,11 @@ def __init__(self, channel): class AsyncAgentServiceServicer(object): - """AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server. + """AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server asynchronously. """ def CreateTask(self, request, context): - """Send a task create request to the agent server. + """CreateTask sends a task create request to the agent service. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -108,7 +173,7 @@ def add_AsyncAgentServiceServicer_to_server(servicer, server): request_deserializer=flyteidl_dot_admin_dot_agent__pb2.GetTaskMetricsRequest.FromString, response_serializer=flyteidl_dot_admin_dot_agent__pb2.GetTaskMetricsResponse.SerializeToString, ), - 'GetTaskLogs': grpc.unary_unary_rpc_method_handler( + 'GetTaskLogs': grpc.unary_stream_rpc_method_handler( servicer.GetTaskLogs, request_deserializer=flyteidl_dot_admin_dot_agent__pb2.GetTaskLogsRequest.FromString, response_serializer=flyteidl_dot_admin_dot_agent__pb2.GetTaskLogsResponse.SerializeToString, @@ -121,7 +186,7 @@ def add_AsyncAgentServiceServicer_to_server(servicer, server): # This class is part of an EXPERIMENTAL API. class AsyncAgentService(object): - """AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server. + """AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server asynchronously. """ @staticmethod @@ -203,7 +268,7 @@ def GetTaskLogs(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flyteidl.service.AsyncAgentService/GetTaskLogs', + return grpc.experimental.unary_stream(request, target, '/flyteidl.service.AsyncAgentService/GetTaskLogs', flyteidl_dot_admin_dot_agent__pb2.GetTaskLogsRequest.SerializeToString, flyteidl_dot_admin_dot_agent__pb2.GetTaskLogsResponse.FromString, options, channel_credentials, diff --git a/flyteidl/gen/pb_rust/flyteidl.admin.rs b/flyteidl/gen/pb_rust/flyteidl.admin.rs index 4f61389a42e..c8caad6d244 100644 --- a/flyteidl/gen/pb_rust/flyteidl.admin.rs +++ b/flyteidl/gen/pb_rust/flyteidl.admin.rs @@ -21,6 +21,23 @@ pub struct TaskExecutionMetadata { /// Environment variables attached to the task execution #[prost(map="string, string", tag="6")] pub environment_variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, + /// Represents the maximum number of attempts allowed for a task. + /// If a task fails, it can be retried up to this maximum number of attempts. + #[prost(int32, tag="7")] + pub max_attempts: i32, + /// Indicates whether the task execution can be interrupted. + /// If set to true, the task can be stopped before completion. + #[prost(bool, tag="8")] + pub interruptible: bool, + /// Specifies the threshold for failure count at which the interruptible property + /// will take effect. If the number of consecutive task failures exceeds this threshold, + /// interruptible behavior will be activated. + #[prost(int32, tag="9")] + pub interruptible_failure_threshold: i32, + /// Overrides for specific properties of the task node. + /// These overrides can be used to customize the behavior of the task node. + #[prost(message, optional, tag="10")] + pub overrides: ::core::option::Option, } /// Represents a request structure to create task. #[allow(clippy::derive_partial_eq_without_eq)] @@ -45,22 +62,68 @@ pub struct CreateTaskRequest { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CreateTaskResponse { + /// ResourceMeta is created by the agent. It could be a string (jobId) or a dict (more complex metadata). + #[prost(bytes="vec", tag="1")] + pub resource_meta: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CreateRequestHeader { + /// Template of the task that encapsulates all the metadata of the task. + #[prost(message, optional, tag="1")] + pub template: ::core::option::Option, + /// Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) + #[prost(string, tag="2")] + pub output_prefix: ::prost::alloc::string::String, + /// subset of runtime task execution metadata. + #[prost(message, optional, tag="3")] + pub task_execution_metadata: ::core::option::Option, + /// MaxDatasetSizeBytes is the maximum size of the dataset that can be generated by the task. + #[prost(int64, tag="4")] + pub max_dataset_size_bytes: i64, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecuteTaskSyncRequest { + #[prost(oneof="execute_task_sync_request::Part", tags="1, 2")] + pub part: ::core::option::Option, +} +/// Nested message and enum types in `ExecuteTaskSyncRequest`. +pub mod execute_task_sync_request { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Part { + #[prost(message, tag="1")] + Header(super::CreateRequestHeader), + #[prost(message, tag="2")] + Inputs(super::super::core::LiteralMap), + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecuteTaskSyncResponseHeader { + #[prost(message, optional, tag="1")] + pub resource: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecuteTaskSyncResponse { /// Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). /// Resource is for synchronous task execution. - #[prost(oneof="create_task_response::Res", tags="1, 2")] - pub res: ::core::option::Option, + #[prost(oneof="execute_task_sync_response::Res", tags="1, 2")] + pub res: ::core::option::Option, } -/// Nested message and enum types in `CreateTaskResponse`. -pub mod create_task_response { +/// Nested message and enum types in `ExecuteTaskSyncResponse`. +pub mod execute_task_sync_response { /// Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). /// Resource is for synchronous task execution. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum Res { - #[prost(bytes, tag="1")] - ResourceMeta(::prost::alloc::vec::Vec), + #[prost(message, tag="1")] + Header(super::ExecuteTaskSyncResponseHeader), #[prost(message, tag="2")] - Resource(super::Resource), + Outputs(super::super::core::LiteralMap), } } /// A message used to fetch a job resource from flyte agent server. @@ -68,11 +131,15 @@ pub mod create_task_response { #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetTaskRequest { /// A predefined yet extensible Task type identifier. + #[deprecated] #[prost(string, tag="1")] pub task_type: ::prost::alloc::string::String, /// Metadata about the resource to be pass to the agent. #[prost(bytes="vec", tag="2")] pub resource_meta: ::prost::alloc::vec::Vec, + /// A predefined yet extensible Task type identifier. + #[prost(message, optional, tag="3")] + pub task_category: ::core::option::Option, } /// Response to get an individual task resource. #[allow(clippy::derive_partial_eq_without_eq)] @@ -80,9 +147,6 @@ pub struct GetTaskRequest { pub struct GetTaskResponse { #[prost(message, optional, tag="1")] pub resource: ::core::option::Option, - /// log information for the task execution - #[prost(message, repeated, tag="2")] - pub log_links: ::prost::alloc::vec::Vec, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -105,17 +169,24 @@ pub struct Resource { /// The phase of the execution is used to determine the phase of the plugin's execution. #[prost(enumeration="super::core::task_execution::Phase", tag="5")] pub phase: i32, + /// Custom data specific to the agent. + #[prost(message, optional, tag="6")] + pub custom_info: ::core::option::Option<::prost_types::Struct>, } /// A message used to delete a task. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct DeleteTaskRequest { /// A predefined yet extensible Task type identifier. + #[deprecated] #[prost(string, tag="1")] pub task_type: ::prost::alloc::string::String, /// Metadata about the resource to be pass to the agent. #[prost(bytes="vec", tag="2")] pub resource_meta: ::prost::alloc::vec::Vec, + /// A predefined yet extensible Task type identifier. + #[prost(message, optional, tag="3")] + pub task_category: ::core::option::Option, } /// Response to delete a task. #[allow(clippy::derive_partial_eq_without_eq)] @@ -130,8 +201,29 @@ pub struct Agent { #[prost(string, tag="1")] pub name: ::prost::alloc::string::String, /// SupportedTaskTypes are the types of the tasks that the agent can handle. + #[deprecated] #[prost(string, repeated, tag="2")] pub supported_task_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// IsSync indicates whether this agent is a sync agent. Sync agents are expected to return their + /// results synchronously when called by propeller. Given that sync agents can affect the performance + /// of the system, it's important to enforce strict timeout policies. + /// An Async agent, on the other hand, is required to be able to identify jobs by an + /// identifier and query for job statuses as jobs progress. + #[prost(bool, tag="3")] + pub is_sync: bool, + /// Supported_task_categories are the categories of the tasks that the agent can handle. + #[prost(message, repeated, tag="4")] + pub supported_task_categories: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskCategory { + /// The name of the task type. + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + /// The version of the task type. + #[prost(int32, tag="2")] + pub version: i32, } /// A request to get an agent. #[allow(clippy::derive_partial_eq_without_eq)] @@ -165,6 +257,7 @@ pub struct ListAgentsResponse { #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetTaskMetricsRequest { /// A predefined yet extensible Task type identifier. + #[deprecated] #[prost(string, tag="1")] pub task_type: ::prost::alloc::string::String, /// Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). @@ -183,6 +276,9 @@ pub struct GetTaskMetricsRequest { /// Query resolution step width in duration format or float number of seconds. #[prost(message, optional, tag="6")] pub step: ::core::option::Option<::prost_types::Duration>, + /// A predefined yet extensible Task type identifier. + #[prost(message, optional, tag="7")] + pub task_category: ::core::option::Option, } /// A response containing a list of metrics for a task execution. #[allow(clippy::derive_partial_eq_without_eq)] @@ -197,6 +293,7 @@ pub struct GetTaskMetricsResponse { #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetTaskLogsRequest { /// A predefined yet extensible Task type identifier. + #[deprecated] #[prost(string, tag="1")] pub task_type: ::prost::alloc::string::String, /// Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). @@ -209,19 +306,43 @@ pub struct GetTaskLogsRequest { /// in a query. If there are no more results, this value will be empty. #[prost(string, tag="4")] pub token: ::prost::alloc::string::String, + /// A predefined yet extensible Task type identifier. + #[prost(message, optional, tag="5")] + pub task_category: ::core::option::Option, } -/// A response containing the logs for a task execution. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct GetTaskLogsResponse { - /// The execution log results. - #[prost(string, repeated, tag="1")] - pub results: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +pub struct GetTaskLogsResponseHeader { /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page /// in a query. If there are no more results, this value will be empty. - #[prost(string, tag="2")] + #[prost(string, tag="1")] pub token: ::prost::alloc::string::String, } +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetTaskLogsResponseBody { + /// The execution log results. + #[prost(string, repeated, tag="1")] + pub results: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +/// A response containing the logs for a task execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetTaskLogsResponse { + #[prost(oneof="get_task_logs_response::Part", tags="1, 2")] + pub part: ::core::option::Option, +} +/// Nested message and enum types in `GetTaskLogsResponse`. +pub mod get_task_logs_response { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Part { + #[prost(message, tag="1")] + Header(super::GetTaskLogsResponseHeader), + #[prost(message, tag="2")] + Body(super::GetTaskLogsResponseBody), + } +} /// The state of the execution is used to control its visibility in the UI/CLI. #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index bbb3c110675..63a1d3f7264 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -1703,6 +1703,147 @@ pub mod sql { } } } +/// Defines a 2-level tree where the root is a comparison operator and Operands are primitives or known variables. +/// Each expression results in a boolean result. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ComparisonExpression { + #[prost(enumeration="comparison_expression::Operator", tag="1")] + pub operator: i32, + #[prost(message, optional, tag="2")] + pub left_value: ::core::option::Option, + #[prost(message, optional, tag="3")] + pub right_value: ::core::option::Option, +} +/// Nested message and enum types in `ComparisonExpression`. +pub mod comparison_expression { + /// Binary Operator for each expression + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum Operator { + Eq = 0, + Neq = 1, + /// Greater Than + Gt = 2, + Gte = 3, + /// Less Than + Lt = 4, + Lte = 5, + } + impl Operator { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Operator::Eq => "EQ", + Operator::Neq => "NEQ", + Operator::Gt => "GT", + Operator::Gte => "GTE", + Operator::Lt => "LT", + Operator::Lte => "LTE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EQ" => Some(Self::Eq), + "NEQ" => Some(Self::Neq), + "GT" => Some(Self::Gt), + "GTE" => Some(Self::Gte), + "LT" => Some(Self::Lt), + "LTE" => Some(Self::Lte), + _ => None, + } + } + } +} +/// Defines an operand to a comparison expression. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Operand { + #[prost(oneof="operand::Val", tags="1, 2, 3")] + pub val: ::core::option::Option, +} +/// Nested message and enum types in `Operand`. +pub mod operand { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Val { + /// Can be a constant + #[prost(message, tag="1")] + Primitive(super::Primitive), + /// Or one of this node's input variables + #[prost(string, tag="2")] + Var(::prost::alloc::string::String), + /// Replace the primitive field + #[prost(message, tag="3")] + Scalar(super::Scalar), + } +} +/// Defines a boolean expression tree. It can be a simple or a conjunction expression. +/// Multiple expressions can be combined using a conjunction or a disjunction to result in a final boolean result. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BooleanExpression { + #[prost(oneof="boolean_expression::Expr", tags="1, 2")] + pub expr: ::core::option::Option, +} +/// Nested message and enum types in `BooleanExpression`. +pub mod boolean_expression { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Expr { + #[prost(message, tag="1")] + Conjunction(::prost::alloc::boxed::Box), + #[prost(message, tag="2")] + Comparison(super::ComparisonExpression), + } +} +/// Defines a conjunction expression of two boolean expressions. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConjunctionExpression { + #[prost(enumeration="conjunction_expression::LogicalOperator", tag="1")] + pub operator: i32, + #[prost(message, optional, boxed, tag="2")] + pub left_expression: ::core::option::Option<::prost::alloc::boxed::Box>, + #[prost(message, optional, boxed, tag="3")] + pub right_expression: ::core::option::Option<::prost::alloc::boxed::Box>, +} +/// Nested message and enum types in `ConjunctionExpression`. +pub mod conjunction_expression { + /// Nested conditions. They can be conjoined using AND / OR + /// Order of evaluation is not important as the operators are Commutative + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum LogicalOperator { + /// Conjunction + And = 0, + Or = 1, + } + impl LogicalOperator { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + LogicalOperator::And => "AND", + LogicalOperator::Or => "OR", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AND" => Some(Self::And), + "OR" => Some(Self::Or), + _ => None, + } + } + } +} /// Indicates various phases of Workflow Execution #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -2032,199 +2173,6 @@ pub mod quality_of_service { Spec(super::QualityOfServiceSpec), } } -/// Span represents a duration trace of Flyte execution. The id field denotes a Flyte execution entity or an operation -/// which uniquely identifies the Span. The spans attribute allows this Span to be further broken down into more -/// precise definitions. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Span { - /// start_time defines the instance this span began. - #[prost(message, optional, tag="1")] - pub start_time: ::core::option::Option<::prost_types::Timestamp>, - /// end_time defines the instance this span completed. - #[prost(message, optional, tag="2")] - pub end_time: ::core::option::Option<::prost_types::Timestamp>, - /// spans defines a collection of Spans that breakdown this execution. - #[prost(message, repeated, tag="7")] - pub spans: ::prost::alloc::vec::Vec, - #[prost(oneof="span::Id", tags="3, 4, 5, 6")] - pub id: ::core::option::Option, -} -/// Nested message and enum types in `Span`. -pub mod span { - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Id { - /// workflow_id is the id of the workflow execution this Span represents. - #[prost(message, tag="3")] - WorkflowId(super::WorkflowExecutionIdentifier), - /// node_id is the id of the node execution this Span represents. - #[prost(message, tag="4")] - NodeId(super::NodeExecutionIdentifier), - /// task_id is the id of the task execution this Span represents. - #[prost(message, tag="5")] - TaskId(super::TaskExecutionIdentifier), - /// operation_id is the id of a unique operation that this Span represents. - #[prost(string, tag="6")] - OperationId(::prost::alloc::string::String), - } -} -/// ExecutionMetrics is a collection of metrics that are collected during the execution of a Flyte task. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionMetricResult { - /// The metric this data represents. e.g. EXECUTION_METRIC_USED_CPU_AVG or EXECUTION_METRIC_USED_MEMORY_BYTES_AVG. - #[prost(string, tag="1")] - pub metric: ::prost::alloc::string::String, - /// The result data in prometheus range query result format - /// - /// This may include multiple time series, differentiated by their metric labels. - /// Start time is greater of (execution attempt start, 48h ago) - /// End time is lesser of (execution attempt end, now) - #[prost(message, optional, tag="2")] - pub data: ::core::option::Option<::prost_types::Struct>, -} -/// Defines a 2-level tree where the root is a comparison operator and Operands are primitives or known variables. -/// Each expression results in a boolean result. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ComparisonExpression { - #[prost(enumeration="comparison_expression::Operator", tag="1")] - pub operator: i32, - #[prost(message, optional, tag="2")] - pub left_value: ::core::option::Option, - #[prost(message, optional, tag="3")] - pub right_value: ::core::option::Option, -} -/// Nested message and enum types in `ComparisonExpression`. -pub mod comparison_expression { - /// Binary Operator for each expression - #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] - #[repr(i32)] - pub enum Operator { - Eq = 0, - Neq = 1, - /// Greater Than - Gt = 2, - Gte = 3, - /// Less Than - Lt = 4, - Lte = 5, - } - impl Operator { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - Operator::Eq => "EQ", - Operator::Neq => "NEQ", - Operator::Gt => "GT", - Operator::Gte => "GTE", - Operator::Lt => "LT", - Operator::Lte => "LTE", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "EQ" => Some(Self::Eq), - "NEQ" => Some(Self::Neq), - "GT" => Some(Self::Gt), - "GTE" => Some(Self::Gte), - "LT" => Some(Self::Lt), - "LTE" => Some(Self::Lte), - _ => None, - } - } - } -} -/// Defines an operand to a comparison expression. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Operand { - #[prost(oneof="operand::Val", tags="1, 2, 3")] - pub val: ::core::option::Option, -} -/// Nested message and enum types in `Operand`. -pub mod operand { - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Val { - /// Can be a constant - #[prost(message, tag="1")] - Primitive(super::Primitive), - /// Or one of this node's input variables - #[prost(string, tag="2")] - Var(::prost::alloc::string::String), - /// Replace the primitive field - #[prost(message, tag="3")] - Scalar(super::Scalar), - } -} -/// Defines a boolean expression tree. It can be a simple or a conjunction expression. -/// Multiple expressions can be combined using a conjunction or a disjunction to result in a final boolean result. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct BooleanExpression { - #[prost(oneof="boolean_expression::Expr", tags="1, 2")] - pub expr: ::core::option::Option, -} -/// Nested message and enum types in `BooleanExpression`. -pub mod boolean_expression { - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Expr { - #[prost(message, tag="1")] - Conjunction(::prost::alloc::boxed::Box), - #[prost(message, tag="2")] - Comparison(super::ComparisonExpression), - } -} -/// Defines a conjunction expression of two boolean expressions. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ConjunctionExpression { - #[prost(enumeration="conjunction_expression::LogicalOperator", tag="1")] - pub operator: i32, - #[prost(message, optional, boxed, tag="2")] - pub left_expression: ::core::option::Option<::prost::alloc::boxed::Box>, - #[prost(message, optional, boxed, tag="3")] - pub right_expression: ::core::option::Option<::prost::alloc::boxed::Box>, -} -/// Nested message and enum types in `ConjunctionExpression`. -pub mod conjunction_expression { - /// Nested conditions. They can be conjoined using AND / OR - /// Order of evaluation is not important as the operators are Commutative - #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] - #[repr(i32)] - pub enum LogicalOperator { - /// Conjunction - And = 0, - Or = 1, - } - impl LogicalOperator { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - LogicalOperator::And => "AND", - LogicalOperator::Or => "OR", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "AND" => Some(Self::And), - "OR" => Some(Self::Or), - _ => None, - } - } - } -} /// Defines a condition and the execution unit that should be executed if the condition is satisfied. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -2652,6 +2600,58 @@ pub struct LaunchPlanTemplate { #[prost(message, optional, tag="3")] pub fixed_inputs: ::core::option::Option, } +/// Span represents a duration trace of Flyte execution. The id field denotes a Flyte execution entity or an operation +/// which uniquely identifies the Span. The spans attribute allows this Span to be further broken down into more +/// precise definitions. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Span { + /// start_time defines the instance this span began. + #[prost(message, optional, tag="1")] + pub start_time: ::core::option::Option<::prost_types::Timestamp>, + /// end_time defines the instance this span completed. + #[prost(message, optional, tag="2")] + pub end_time: ::core::option::Option<::prost_types::Timestamp>, + /// spans defines a collection of Spans that breakdown this execution. + #[prost(message, repeated, tag="7")] + pub spans: ::prost::alloc::vec::Vec, + #[prost(oneof="span::Id", tags="3, 4, 5, 6")] + pub id: ::core::option::Option, +} +/// Nested message and enum types in `Span`. +pub mod span { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Id { + /// workflow_id is the id of the workflow execution this Span represents. + #[prost(message, tag="3")] + WorkflowId(super::WorkflowExecutionIdentifier), + /// node_id is the id of the node execution this Span represents. + #[prost(message, tag="4")] + NodeId(super::NodeExecutionIdentifier), + /// task_id is the id of the task execution this Span represents. + #[prost(message, tag="5")] + TaskId(super::TaskExecutionIdentifier), + /// operation_id is the id of a unique operation that this Span represents. + #[prost(string, tag="6")] + OperationId(::prost::alloc::string::String), + } +} +/// ExecutionMetrics is a collection of metrics that are collected during the execution of a Flyte task. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionMetricResult { + /// The metric this data represents. e.g. EXECUTION_METRIC_USED_CPU_AVG or EXECUTION_METRIC_USED_MEMORY_BYTES_AVG. + #[prost(string, tag="1")] + pub metric: ::prost::alloc::string::String, + /// The result data in prometheus range query result format + /// + /// This may include multiple time series, differentiated by their metric labels. + /// Start time is greater of (execution attempt start, 48h ago) + /// End time is lesser of (execution attempt end, now) + #[prost(message, optional, tag="2")] + pub data: ::core::option::Option<::prost_types::Struct>, +} /// Adjacency list for the workflow. This is created as part of the compilation process. Every process after the compilation /// step uses this created ConnectionSet #[allow(clippy::derive_partial_eq_without_eq)] diff --git a/flyteidl/protos/flyteidl/admin/agent.proto b/flyteidl/protos/flyteidl/admin/agent.proto index 5b7043e86fd..0256483d8f5 100644 --- a/flyteidl/protos/flyteidl/admin/agent.proto +++ b/flyteidl/protos/flyteidl/admin/agent.proto @@ -5,15 +5,17 @@ option go_package = "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin import "flyteidl/core/literals.proto"; import "flyteidl/core/tasks.proto"; +import "flyteidl/core/workflow.proto"; import "flyteidl/core/identifier.proto"; import "flyteidl/core/execution.proto"; import "flyteidl/core/metrics.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; - +import "google/protobuf/struct.proto"; // The state of the execution is used to control its visibility in the UI/CLI. enum State { + option deprecated = true; RETRYABLE_FAILURE = 0; PERMANENT_FAILURE = 1; PENDING = 2; @@ -35,6 +37,19 @@ message TaskExecutionMetadata { string k8s_service_account = 5; // Environment variables attached to the task execution map environment_variables = 6; + // Represents the maximum number of attempts allowed for a task. + // If a task fails, it can be retried up to this maximum number of attempts. + int32 max_attempts = 7; + // Indicates whether the task execution can be interrupted. + // If set to true, the task can be stopped before completion. + bool interruptible = 8; + // Specifies the threshold for failure count at which the interruptible property + // will take effect. If the number of consecutive task failures exceeds this threshold, + // interruptible behavior will be activated. + int32 interruptible_failure_threshold = 9; + // Overrides for specific properties of the task node. + // These overrides can be used to customize the behavior of the task node. + core.TaskNodeOverrides overrides = 10; } // Represents a request structure to create task. @@ -53,28 +68,55 @@ message CreateTaskRequest { // Represents a create response structure. message CreateTaskResponse { + // ResourceMeta is created by the agent. It could be a string (jobId) or a dict (more complex metadata). + bytes resource_meta = 1; +} + +message CreateRequestHeader { + // Template of the task that encapsulates all the metadata of the task. + core.TaskTemplate template = 1; + // Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) + string output_prefix = 2; + // subset of runtime task execution metadata. + TaskExecutionMetadata task_execution_metadata = 3; + // MaxDatasetSizeBytes is the maximum size of the dataset that can be generated by the task. + int64 max_dataset_size_bytes = 4; +} + + +message ExecuteTaskSyncRequest { + oneof part { + CreateRequestHeader header = 1; + core.LiteralMap inputs = 2; + } +} + +message ExecuteTaskSyncResponseHeader { + Resource resource = 1; +} + +message ExecuteTaskSyncResponse { // Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). // Resource is for synchronous task execution. oneof res { - bytes resource_meta = 1; - Resource resource = 2; + ExecuteTaskSyncResponseHeader header = 1; + core.LiteralMap outputs = 2; } } // A message used to fetch a job resource from flyte agent server. message GetTaskRequest { // A predefined yet extensible Task type identifier. - string task_type = 1; + string task_type = 1 [deprecated = true]; // Metadata about the resource to be pass to the agent. bytes resource_meta = 2; + // A predefined yet extensible Task type identifier. + TaskCategory task_category = 3; } // Response to get an individual task resource. message GetTaskResponse { Resource resource = 1; - - // log information for the task execution - repeated core.TaskLog log_links = 2; } message Resource { @@ -90,14 +132,18 @@ message Resource { repeated core.TaskLog log_links = 4; // The phase of the execution is used to determine the phase of the plugin's execution. core.TaskExecution.Phase phase = 5; + // Custom data specific to the agent. + google.protobuf.Struct custom_info = 6; } // A message used to delete a task. message DeleteTaskRequest { // A predefined yet extensible Task type identifier. - string task_type = 1; + string task_type = 1 [deprecated = true]; // Metadata about the resource to be pass to the agent. bytes resource_meta = 2; + // A predefined yet extensible Task type identifier. + TaskCategory task_category = 3; } // Response to delete a task. @@ -109,7 +155,24 @@ message Agent { string name = 1; // SupportedTaskTypes are the types of the tasks that the agent can handle. - repeated string supported_task_types = 2; + repeated string supported_task_types = 2 [deprecated = true]; + + // IsSync indicates whether this agent is a sync agent. Sync agents are expected to return their + // results synchronously when called by propeller. Given that sync agents can affect the performance + // of the system, it's important to enforce strict timeout policies. + // An Async agent, on the other hand, is required to be able to identify jobs by an + // identifier and query for job statuses as jobs progress. + bool is_sync = 3; + + // Supported_task_categories are the categories of the tasks that the agent can handle. + repeated TaskCategory supported_task_categories = 4; +} + +message TaskCategory { + // The name of the task type. + string name = 1; + // The version of the task type. + int32 version = 2; } // A request to get an agent. @@ -134,7 +197,7 @@ message ListAgentsResponse { // A request to get the metrics from a task execution. message GetTaskMetricsRequest { // A predefined yet extensible Task type identifier. - string task_type = 1; + string task_type = 1 [deprecated = true]; // Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). bytes resource_meta = 2; // The metrics to query. If empty, will return a default set of metrics. @@ -146,6 +209,8 @@ message GetTaskMetricsRequest { google.protobuf.Timestamp end_time = 5; // Query resolution step width in duration format or float number of seconds. google.protobuf.Duration step = 6; + // A predefined yet extensible Task type identifier. + TaskCategory task_category = 7; } // A response containing a list of metrics for a task execution. @@ -157,7 +222,7 @@ message GetTaskMetricsResponse { // A request to get the log from a task execution. message GetTaskLogsRequest { // A predefined yet extensible Task type identifier. - string task_type = 1; + string task_type = 1 [deprecated = true]; // Metadata is created by the agent. It could be a string (jobId) or a dict (more complex metadata). bytes resource_meta = 2; // Number of lines to return. @@ -165,13 +230,25 @@ message GetTaskLogsRequest { // In the case of multiple pages of results, the server-provided token can be used to fetch the next page // in a query. If there are no more results, this value will be empty. string token = 4; + // A predefined yet extensible Task type identifier. + TaskCategory task_category = 5; } -// A response containing the logs for a task execution. -message GetTaskLogsResponse { - // The execution log results. - repeated string results = 1; +message GetTaskLogsResponseHeader { // In the case of multiple pages of results, the server-provided token can be used to fetch the next page // in a query. If there are no more results, this value will be empty. - string token = 2; -} \ No newline at end of file + string token = 1; +} + +message GetTaskLogsResponseBody { + // The execution log results. + repeated string results = 1; +} + +// A response containing the logs for a task execution. +message GetTaskLogsResponse { + oneof part { + GetTaskLogsResponseHeader header = 1; + GetTaskLogsResponseBody body = 2; + } +} diff --git a/flyteidl/protos/flyteidl/service/agent.proto b/flyteidl/protos/flyteidl/service/agent.proto index 7538c0b819f..cd6b93a972c 100644 --- a/flyteidl/protos/flyteidl/service/agent.proto +++ b/flyteidl/protos/flyteidl/service/agent.proto @@ -6,24 +6,58 @@ option go_package = "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/servi import "google/api/annotations.proto"; import "flyteidl/admin/agent.proto"; -// AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server. +// SyncAgentService defines an RPC Service that allows propeller to send the request to the agent server synchronously. +service SyncAgentService { + // ExecuteTaskSync streams the create request and inputs to the agent service and streams the outputs back. + rpc ExecuteTaskSync (stream flyteidl.admin.ExecuteTaskSyncRequest) returns (stream flyteidl.admin.ExecuteTaskSyncResponse){ + option (google.api.http) = { + post: "/api/v1/agent/task/stream" + body: "*" + }; + }; +} + +// AsyncAgentService defines an RPC Service that allows propeller to send the request to the agent server asynchronously. service AsyncAgentService { - // Send a task create request to the agent server. - rpc CreateTask (flyteidl.admin.CreateTaskRequest) returns (flyteidl.admin.CreateTaskResponse){}; + // CreateTask sends a task create request to the agent service. + rpc CreateTask (flyteidl.admin.CreateTaskRequest) returns (flyteidl.admin.CreateTaskResponse){ + option (google.api.http) = { + post: "/api/v1/agent/task" + body: "*" + }; + }; + // Get job status. - rpc GetTask (flyteidl.admin.GetTaskRequest) returns (flyteidl.admin.GetTaskResponse){}; + rpc GetTask (flyteidl.admin.GetTaskRequest) returns (flyteidl.admin.GetTaskResponse){ + option (google.api.http) = { + get: "/api/v1/agent/task/{task_category.name}/{task_category.version}/{resource_meta}" + }; + }; + // Delete the task resource. - rpc DeleteTask (flyteidl.admin.DeleteTaskRequest) returns (flyteidl.admin.DeleteTaskResponse){}; + rpc DeleteTask (flyteidl.admin.DeleteTaskRequest) returns (flyteidl.admin.DeleteTaskResponse){ + option (google.api.http) = { + delete: "/api/v1/agent/task_executions/{task_category.name}/{task_category.version}/{resource_meta}" + }; + }; // GetTaskMetrics returns one or more task execution metrics, if available. // // Errors include // * OutOfRange if metrics are not available for the specified task time range // * various other errors - rpc GetTaskMetrics(flyteidl.admin.GetTaskMetricsRequest) returns (flyteidl.admin.GetTaskMetricsResponse){}; + rpc GetTaskMetrics(flyteidl.admin.GetTaskMetricsRequest) returns (flyteidl.admin.GetTaskMetricsResponse){ + option (google.api.http) = { + get: "/api/v1/agent/task/metrics/{task_category.name}/{task_category.version}/{resource_meta}" + }; + }; // GetTaskLogs returns task execution logs, if available. - rpc GetTaskLogs(flyteidl.admin.GetTaskLogsRequest) returns (flyteidl.admin.GetTaskLogsResponse){}; + rpc GetTaskLogs(flyteidl.admin.GetTaskLogsRequest) returns (stream flyteidl.admin.GetTaskLogsResponse){ + option (google.api.http) = { + get: "/api/v1/agent/task/logs/{task_category.name}/{task_category.version}/{resource_meta}" + }; + }; } // AgentMetadataService defines an RPC service that is also served over HTTP via grpc-gateway. @@ -32,7 +66,7 @@ service AgentMetadataService { // Fetch a :ref:`ref_flyteidl.admin.Agent` definition. rpc GetAgent (flyteidl.admin.GetAgentRequest) returns (flyteidl.admin.GetAgentResponse){ option (google.api.http) = { - get: "/api/v1/agent/{name}" + get: "/api/v1/agent/{name}" }; }; diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/client.go b/flyteplugins/go/tasks/plugins/webapi/agent/client.go index b118f64596f..b525acc5c3d 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/client.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/client.go @@ -19,13 +19,27 @@ import ( "github.com/flyteorg/flyte/flytestdlib/logger" ) +const defaultTaskTypeVersion = 0 + +type Agent struct { + // IsSync indicates whether this agent is a sync agent. Sync agents are expected to return their + // results synchronously when called by propeller. Given that sync agents can affect the performance + // of the system, it's important to enforce strict timeout policies. + // An Async agent, on the other hand, is required to be able to identify jobs by an + // identifier and query for job statuses as jobs progress. + IsSync bool + // AgentDeployment is the agent deployment where this agent is running. + AgentDeployment *Deployment +} + // ClientSet contains the clients exposed to communicate with various agent services. type ClientSet struct { - agentClients map[string]service.AsyncAgentServiceClient // map[endpoint] => client - agentMetadataClients map[string]service.AgentMetadataServiceClient // map[endpoint] => client + asyncAgentClients map[string]service.AsyncAgentServiceClient // map[endpoint] => AsyncAgentServiceClient + syncAgentClients map[string]service.SyncAgentServiceClient // map[endpoint] => SyncAgentServiceClient + agentMetadataClients map[string]service.AgentMetadataServiceClient // map[endpoint] => AgentMetadataServiceClient } -func getGrpcConnection(ctx context.Context, agent *Agent) (*grpc.ClientConn, error) { +func getGrpcConnection(ctx context.Context, agent *Deployment) (*grpc.ClientConn, error) { var opts []grpc.DialOption if agent.Insecure { @@ -67,7 +81,7 @@ func getGrpcConnection(ctx context.Context, agent *Agent) (*grpc.ClientConn, err return conn, nil } -func getFinalTimeout(operation string, agent *Agent) config.Duration { +func getFinalTimeout(operation string, agent *Deployment) config.Duration { if t, exists := agent.Timeouts[operation]; exists { return t } @@ -75,7 +89,7 @@ func getFinalTimeout(operation string, agent *Agent) config.Duration { return agent.DefaultTimeout } -func getFinalContext(ctx context.Context, operation string, agent *Agent) (context.Context, context.CancelFunc) { +func getFinalContext(ctx context.Context, operation string, agent *Deployment) (context.Context, context.CancelFunc) { timeout := getFinalTimeout(operation, agent).Duration if timeout == 0 { return ctx, func() {} @@ -84,20 +98,21 @@ func getFinalContext(ctx context.Context, operation string, agent *Agent) (conte return context.WithTimeout(ctx, timeout) } -func initializeAgentRegistry(cs *ClientSet) (map[string]*Agent, error) { - agentRegistry := make(map[string]*Agent) +func initializeAgentRegistry(cs *ClientSet) (Registry, error) { + agentRegistry := make(Registry) cfg := GetConfig() - var agentDeployments []*Agent + var agentDeployments []*Deployment // Ensure that the old configuration is backward compatible - for taskType, agentID := range cfg.AgentForTaskTypes { - agentRegistry[taskType] = cfg.Agents[agentID] + for taskType, agentDeploymentID := range cfg.AgentForTaskTypes { + agent := Agent{AgentDeployment: cfg.AgentDeployments[agentDeploymentID], IsSync: false} + agentRegistry[taskType] = map[int32]*Agent{defaultTaskTypeVersion: &agent} } if len(cfg.DefaultAgent.Endpoint) != 0 { agentDeployments = append(agentDeployments, &cfg.DefaultAgent) } - agentDeployments = append(agentDeployments, maps.Values(cfg.Agents)...) + agentDeployments = append(agentDeployments, maps.Values(cfg.AgentDeployments)...) for _, agentDeployment := range agentDeployments { client := cs.agentMetadataClients[agentDeployment.Endpoint] @@ -120,12 +135,20 @@ func initializeAgentRegistry(cs *ClientSet) (map[string]*Agent, error) { return nil, fmt.Errorf("failed to list agent: [%v] with error: [%v]", agentDeployment, err) } - agents := res.GetAgents() - for _, agent := range agents { - supportedTaskTypes := agent.SupportedTaskTypes - for _, supportedTaskType := range supportedTaskTypes { - agentRegistry[supportedTaskType] = agentDeployment + for _, agent := range res.GetAgents() { + deprecatedSupportedTaskTypes := agent.SupportedTaskTypes + for _, supportedTaskType := range deprecatedSupportedTaskTypes { + agent := &Agent{AgentDeployment: agentDeployment, IsSync: agent.IsSync} + agentRegistry[supportedTaskType] = map[int32]*Agent{defaultTaskTypeVersion: agent} } + + supportedTaskCategories := agent.SupportedTaskCategories + for _, supportedCategory := range supportedTaskCategories { + agent := &Agent{AgentDeployment: agentDeployment, IsSync: agent.IsSync} + agentRegistry[supportedCategory.GetName()] = map[int32]*Agent{supportedCategory.GetVersion(): agent} + } + logger.Infof(context.Background(), "[%v] is a sync agent: [%v]", agent.Name, agent.IsSync) + logger.Infof(context.Background(), "[%v] supports task category: [%v]", agent.Name, supportedTaskCategories) } } @@ -133,27 +156,30 @@ func initializeAgentRegistry(cs *ClientSet) (map[string]*Agent, error) { } func initializeClients(ctx context.Context) (*ClientSet, error) { - agentClients := make(map[string]service.AsyncAgentServiceClient) + asyncAgentClients := make(map[string]service.AsyncAgentServiceClient) + syncAgentClients := make(map[string]service.SyncAgentServiceClient) agentMetadataClients := make(map[string]service.AgentMetadataServiceClient) - var agentDeployments []*Agent + var agentDeployments []*Deployment cfg := GetConfig() if len(cfg.DefaultAgent.Endpoint) != 0 { agentDeployments = append(agentDeployments, &cfg.DefaultAgent) } - agentDeployments = append(agentDeployments, maps.Values(cfg.Agents)...) - for _, agentDeployment := range agentDeployments { - conn, err := getGrpcConnection(ctx, agentDeployment) + agentDeployments = append(agentDeployments, maps.Values(cfg.AgentDeployments)...) + for _, agentService := range agentDeployments { + conn, err := getGrpcConnection(ctx, agentService) if err != nil { return nil, err } - agentClients[agentDeployment.Endpoint] = service.NewAsyncAgentServiceClient(conn) - agentMetadataClients[agentDeployment.Endpoint] = service.NewAgentMetadataServiceClient(conn) + syncAgentClients[agentService.Endpoint] = service.NewSyncAgentServiceClient(conn) + asyncAgentClients[agentService.Endpoint] = service.NewAsyncAgentServiceClient(conn) + agentMetadataClients[agentService.Endpoint] = service.NewAgentMetadataServiceClient(conn) } return &ClientSet{ - agentClients: agentClients, + syncAgentClients: syncAgentClients, + asyncAgentClients: asyncAgentClients, agentMetadataClients: agentMetadataClients, }, nil } diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/client_test.go b/flyteplugins/go/tasks/plugins/webapi/agent/client_test.go index d68811d037d..4ad7f8cbaab 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/client_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/client_test.go @@ -9,10 +9,22 @@ import ( func TestInitializeClients(t *testing.T) { cfg := defaultConfig + cfg.AgentDeployments = map[string]*Deployment{ + "x": { + Endpoint: "x", + }, + "y": { + Endpoint: "y", + }, + } ctx := context.Background() err := SetConfig(&cfg) assert.NoError(t, err) cs, err := initializeClients(ctx) assert.NoError(t, err) assert.NotNil(t, cs) + _, ok := cs.syncAgentClients["y"] + assert.True(t, ok) + _, ok = cs.asyncAgentClients["x"] + assert.True(t, ok) } diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/config.go b/flyteplugins/go/tasks/plugins/webapi/agent/config.go index cb0bd3089f5..3f9fd354b6f 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/config.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/config.go @@ -39,7 +39,7 @@ var ( Value: 50, }, }, - DefaultAgent: Agent{ + DefaultAgent: Deployment{ Endpoint: "", Insecure: true, DefaultTimeout: config.Duration{Duration: 10 * time.Second}, @@ -61,19 +61,19 @@ type Config struct { ResourceConstraints core.ResourceConstraintsSpec `json:"resourceConstraints" pflag:"-,Defines resource constraints on how many executions to be created per project/overall at any given time."` // The default agent if there does not exist a more specific matching against task types - DefaultAgent Agent `json:"defaultAgent" pflag:",The default agent."` + DefaultAgent Deployment `json:"defaultAgent" pflag:",The default agent."` - // The agents used to match against specific task types. {AgentId: Agent} - Agents map[string]*Agent `json:"agents" pflag:",The agents."` + // The agents used to match against specific task types. {agentDeploymentID: AgentDeployment} + AgentDeployments map[string]*Deployment `json:"agents" pflag:",The agents."` - // Maps task types to their agents. {TaskType: AgentId} + // Maps task types to their agents. {TaskType: agentDeploymentID} AgentForTaskTypes map[string]string `json:"agentForTaskTypes" pflag:"-,"` // SupportedTaskTypes is a list of task types that are supported by this plugin. SupportedTaskTypes []string `json:"supportedTaskTypes" pflag:"-,Defines a list of task types that are supported by this plugin."` } -type Agent struct { +type Deployment struct { // Endpoint points to an agent gRPC endpoint Endpoint string `json:"endpoint"` diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/config_test.go b/flyteplugins/go/tasks/plugins/webapi/agent/config_test.go index a3e6d69d669..09abffb83c7 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/config_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/config_test.go @@ -27,7 +27,7 @@ func TestGetAndSetConfig(t *testing.T) { }, } cfg.DefaultAgent.DefaultTimeout = config.Duration{Duration: 10 * time.Second} - cfg.Agents = map[string]*Agent{ + cfg.AgentDeployments = map[string]*Deployment{ "agent_1": { Insecure: cfg.DefaultAgent.Insecure, DefaultServiceConfig: cfg.DefaultAgent.DefaultServiceConfig, diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go b/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go index fe3b45b8815..a4ddc5e3031 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" + "io" "sync/atomic" "testing" "time" @@ -13,6 +14,7 @@ import ( "k8s.io/apimachinery/pkg/util/rand" "k8s.io/utils/strings/slices" + agentMocks "github.com/flyteorg/flyte/flyteidl/clients/go/admin/mocks" "github.com/flyteorg/flyte/flyteidl/clients/go/coreutils" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" flyteIdlCore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" @@ -24,7 +26,6 @@ import ( pluginCoreMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks" ioMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io/mocks" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/webapi" - agentMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/webapi/agent/mocks" "github.com/flyteorg/flyte/flyteplugins/tests" "github.com/flyteorg/flyte/flytestdlib/contextutils" "github.com/flyteorg/flyte/flytestdlib/promutils" @@ -72,9 +73,9 @@ func TestEndToEnd(t *testing.T) { } basePrefix := storage.DataReference("fake://bucket/prefix/") - t.Run("run a job", func(t *testing.T) { - pluginEntry := pluginmachinery.CreateRemotePlugin(newMockAgentPlugin()) - plugin, err := pluginEntry.LoadPlugin(context.TODO(), newFakeSetupContext("test1")) + t.Run("run an async task", func(t *testing.T) { + pluginEntry := pluginmachinery.CreateRemotePlugin(newMockAsyncAgentPlugin()) + plugin, err := pluginEntry.LoadPlugin(context.TODO(), newFakeSetupContext("async task")) assert.NoError(t, err) phase := tests.RunPluginEndToEndTest(t, plugin, &template, inputs, nil, nil, iter) @@ -85,14 +86,38 @@ func TestEndToEnd(t *testing.T) { assert.Equal(t, true, phase.Phase().IsSuccess()) }) + t.Run("run a sync task", func(t *testing.T) { + pluginEntry := pluginmachinery.CreateRemotePlugin(newMockSyncAgentPlugin()) + plugin, err := pluginEntry.LoadPlugin(context.TODO(), newFakeSetupContext("sync task")) + assert.NoError(t, err) + + template.Type = "openai" + template.Interface = &flyteIdlCore.TypedInterface{ + Outputs: &flyteIdlCore.VariableMap{ + Variables: map[string]*flyteIdlCore.Variable{ + "x": {Type: &flyteIdlCore.LiteralType{ + Type: &flyteIdlCore.LiteralType_Simple{ + Simple: flyteIdlCore.SimpleType_INTEGER, + }, + }, + }, + }, + }, + } + expectedOutputs, err := coreutils.MakeLiteralMap(map[string]interface{}{"x": 1}) + assert.NoError(t, err) + phase := tests.RunPluginEndToEndTest(t, plugin, &template, inputs, expectedOutputs, nil, iter) + assert.Equal(t, true, phase.Phase().IsSuccess()) + }) + t.Run("failed to create a job", func(t *testing.T) { - agentPlugin := newMockAgentPlugin() + agentPlugin := newMockAsyncAgentPlugin() agentPlugin.PluginLoader = func(ctx context.Context, iCtx webapi.PluginSetupContext) (webapi.AsyncPlugin, error) { return Plugin{ metricScope: iCtx.MetricsScope(), cfg: GetConfig(), cs: &ClientSet{ - agentClients: map[string]service.AsyncAgentServiceClient{}, + asyncAgentClients: map[string]service.AsyncAgentServiceClient{}, agentMetadataClients: map[string]service.AgentMetadataServiceClient{}, }, }, nil @@ -124,7 +149,7 @@ func TestEndToEnd(t *testing.T) { tr.OnRead(context.Background()).Return(nil, fmt.Errorf("read fail")) tCtx.OnTaskReader().Return(tr) - agentPlugin := newMockAgentPlugin() + agentPlugin := newMockAsyncAgentPlugin() pluginEntry := pluginmachinery.CreateRemotePlugin(agentPlugin) plugin, err := pluginEntry.LoadPlugin(context.TODO(), newFakeSetupContext("test3")) assert.NoError(t, err) @@ -145,7 +170,7 @@ func TestEndToEnd(t *testing.T) { inputReader.OnGetMatch(mock.Anything).Return(nil, fmt.Errorf("read fail")) tCtx.OnInputReader().Return(inputReader) - agentPlugin := newMockAgentPlugin() + agentPlugin := newMockAsyncAgentPlugin() pluginEntry := pluginmachinery.CreateRemotePlugin(agentPlugin) plugin, err := pluginEntry.LoadPlugin(context.TODO(), newFakeSetupContext("test4")) assert.NoError(t, err) @@ -224,26 +249,23 @@ func getTaskContext(t *testing.T) *pluginCoreMocks.TaskExecutionContext { return tCtx } -func newMockAgentPlugin() webapi.PluginEntry { - - agentClient := new(agentMocks.AsyncAgentServiceClient) +func newMockAsyncAgentPlugin() webapi.PluginEntry { + asyncAgentClient := new(agentMocks.AsyncAgentServiceClient) mockCreateRequestMatcher := mock.MatchedBy(func(request *admin.CreateTaskRequest) bool { expectedArgs := []string{"pyflyte-fast-execute", "--output-prefix", "/tmp/123"} return slices.Equal(request.Template.GetContainer().Args, expectedArgs) }) - agentClient.On("CreateTask", mock.Anything, mockCreateRequestMatcher).Return(&admin.CreateTaskResponse{ - Res: &admin.CreateTaskResponse_ResourceMeta{ - ResourceMeta: []byte{1, 2, 3, 4}, - }}, nil) + asyncAgentClient.On("CreateTask", mock.Anything, mockCreateRequestMatcher).Return(&admin.CreateTaskResponse{ + ResourceMeta: []byte{1, 2, 3, 4}}, nil) mockGetRequestMatcher := mock.MatchedBy(func(request *admin.GetTaskRequest) bool { - return request.GetTaskType() == "spark" + return request.GetTaskCategory().GetName() == "spark" }) - agentClient.On("GetTask", mock.Anything, mockGetRequestMatcher).Return( - &admin.GetTaskResponse{Resource: &admin.Resource{State: admin.State_SUCCEEDED}}, nil) + asyncAgentClient.On("GetTask", mock.Anything, mockGetRequestMatcher).Return( + &admin.GetTaskResponse{Resource: &admin.Resource{Phase: flyteIdlCore.TaskExecution_SUCCEEDED}}, nil) - agentClient.On("DeleteTask", mock.Anything, mock.Anything).Return( + asyncAgentClient.On("DeleteTask", mock.Anything, mock.Anything).Return( &admin.DeleteTaskResponse{}, nil) cfg := defaultConfig @@ -251,16 +273,57 @@ func newMockAgentPlugin() webapi.PluginEntry { return webapi.PluginEntry{ ID: "agent-service", - SupportedTaskTypes: []core.TaskType{"bigquery_query_job_task", "spark", "api_task"}, + SupportedTaskTypes: []core.TaskType{"bigquery_query_job_task", "spark"}, + PluginLoader: func(ctx context.Context, iCtx webapi.PluginSetupContext) (webapi.AsyncPlugin, error) { + return Plugin{ + metricScope: iCtx.MetricsScope(), + cfg: &cfg, + cs: &ClientSet{ + asyncAgentClients: map[string]service.AsyncAgentServiceClient{ + defaultAgentEndpoint: asyncAgentClient, + }, + }, + }, nil + }, + } +} + +func newMockSyncAgentPlugin() webapi.PluginEntry { + syncAgentClient := new(agentMocks.SyncAgentServiceClient) + output, _ := coreutils.MakeLiteralMap(map[string]interface{}{"x": 1}) + resource := &admin.Resource{Phase: flyteIdlCore.TaskExecution_SUCCEEDED, Outputs: output} + + stream := new(agentMocks.SyncAgentService_ExecuteTaskSyncClient) + stream.OnRecv().Return(&admin.ExecuteTaskSyncResponse{ + Res: &admin.ExecuteTaskSyncResponse_Header{ + Header: &admin.ExecuteTaskSyncResponseHeader{ + Resource: resource, + }, + }, + }, nil).Once() + + stream.OnRecv().Return(nil, io.EOF).Once() + stream.OnSendMatch(mock.Anything).Return(nil) + stream.OnCloseSendMatch(mock.Anything).Return(nil) + + syncAgentClient.OnExecuteTaskSyncMatch(mock.Anything).Return(stream, nil) + + cfg := defaultConfig + cfg.DefaultAgent.Endpoint = defaultAgentEndpoint + + return webapi.PluginEntry{ + ID: "agent-service", + SupportedTaskTypes: []core.TaskType{"openai"}, PluginLoader: func(ctx context.Context, iCtx webapi.PluginSetupContext) (webapi.AsyncPlugin, error) { return Plugin{ metricScope: iCtx.MetricsScope(), cfg: &cfg, cs: &ClientSet{ - agentClients: map[string]service.AsyncAgentServiceClient{ - "localhost:8000": agentClient, + syncAgentClients: map[string]service.SyncAgentServiceClient{ + defaultAgentEndpoint: syncAgentClient, }, }, + agentRegistry: Registry{"openai": {defaultTaskTypeVersion: {AgentDeployment: &Deployment{Endpoint: defaultAgentEndpoint}, IsSync: true}}}, }, nil }, } diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/mocks/AgentMetadataServiceClient.go b/flyteplugins/go/tasks/plugins/webapi/agent/mocks/AgentMetadataServiceClient.go deleted file mode 100644 index d7f40932b7c..00000000000 --- a/flyteplugins/go/tasks/plugins/webapi/agent/mocks/AgentMetadataServiceClient.go +++ /dev/null @@ -1,114 +0,0 @@ -// Code generated by mockery v1.0.1. DO NOT EDIT. - -package mocks - -import ( - context "context" - - admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" - - grpc "google.golang.org/grpc" - - mock "github.com/stretchr/testify/mock" -) - -// AgentMetadataServiceClient is an autogenerated mock type for the AgentMetadataServiceClient type -type AgentMetadataServiceClient struct { - mock.Mock -} - -type AgentMetadataServiceClient_GetAgent struct { - *mock.Call -} - -func (_m AgentMetadataServiceClient_GetAgent) Return(_a0 *admin.GetAgentResponse, _a1 error) *AgentMetadataServiceClient_GetAgent { - return &AgentMetadataServiceClient_GetAgent{Call: _m.Call.Return(_a0, _a1)} -} - -func (_m *AgentMetadataServiceClient) OnGetAgent(ctx context.Context, in *admin.GetAgentRequest, opts ...grpc.CallOption) *AgentMetadataServiceClient_GetAgent { - c_call := _m.On("GetAgent", ctx, in, opts) - return &AgentMetadataServiceClient_GetAgent{Call: c_call} -} - -func (_m *AgentMetadataServiceClient) OnGetAgentMatch(matchers ...interface{}) *AgentMetadataServiceClient_GetAgent { - c_call := _m.On("GetAgent", matchers...) - return &AgentMetadataServiceClient_GetAgent{Call: c_call} -} - -// GetAgent provides a mock function with given fields: ctx, in, opts -func (_m *AgentMetadataServiceClient) GetAgent(ctx context.Context, in *admin.GetAgentRequest, opts ...grpc.CallOption) (*admin.GetAgentResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - var r0 *admin.GetAgentResponse - if rf, ok := ret.Get(0).(func(context.Context, *admin.GetAgentRequest, ...grpc.CallOption) *admin.GetAgentResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*admin.GetAgentResponse) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *admin.GetAgentRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -type AgentMetadataServiceClient_ListAgents struct { - *mock.Call -} - -func (_m AgentMetadataServiceClient_ListAgents) Return(_a0 *admin.ListAgentsResponse, _a1 error) *AgentMetadataServiceClient_ListAgents { - return &AgentMetadataServiceClient_ListAgents{Call: _m.Call.Return(_a0, _a1)} -} - -func (_m *AgentMetadataServiceClient) OnListAgents(ctx context.Context, in *admin.ListAgentsRequest, opts ...grpc.CallOption) *AgentMetadataServiceClient_ListAgents { - c_call := _m.On("ListAgents", ctx, in, opts) - return &AgentMetadataServiceClient_ListAgents{Call: c_call} -} - -func (_m *AgentMetadataServiceClient) OnListAgentsMatch(matchers ...interface{}) *AgentMetadataServiceClient_ListAgents { - c_call := _m.On("ListAgents", matchers...) - return &AgentMetadataServiceClient_ListAgents{Call: c_call} -} - -// ListAgents provides a mock function with given fields: ctx, in, opts -func (_m *AgentMetadataServiceClient) ListAgents(ctx context.Context, in *admin.ListAgentsRequest, opts ...grpc.CallOption) (*admin.ListAgentsResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - var r0 *admin.ListAgentsResponse - if rf, ok := ret.Get(0).(func(context.Context, *admin.ListAgentsRequest, ...grpc.CallOption) *admin.ListAgentsResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*admin.ListAgentsResponse) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *admin.ListAgentsRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/mocks/AsyncAgentServiceClient.go b/flyteplugins/go/tasks/plugins/webapi/agent/mocks/AsyncAgentServiceClient.go deleted file mode 100644 index f11ef1adfe7..00000000000 --- a/flyteplugins/go/tasks/plugins/webapi/agent/mocks/AsyncAgentServiceClient.go +++ /dev/null @@ -1,258 +0,0 @@ -// Code generated by mockery v1.0.1. DO NOT EDIT. - -package mocks - -import ( - context "context" - - admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" - - grpc "google.golang.org/grpc" - - mock "github.com/stretchr/testify/mock" -) - -// AsyncAgentServiceClient is an autogenerated mock type for the AsyncAgentServiceClient type -type AsyncAgentServiceClient struct { - mock.Mock -} - -type AsyncAgentServiceClient_CreateTask struct { - *mock.Call -} - -func (_m AsyncAgentServiceClient_CreateTask) Return(_a0 *admin.CreateTaskResponse, _a1 error) *AsyncAgentServiceClient_CreateTask { - return &AsyncAgentServiceClient_CreateTask{Call: _m.Call.Return(_a0, _a1)} -} - -func (_m *AsyncAgentServiceClient) OnCreateTask(ctx context.Context, in *admin.CreateTaskRequest, opts ...grpc.CallOption) *AsyncAgentServiceClient_CreateTask { - c_call := _m.On("CreateTask", ctx, in, opts) - return &AsyncAgentServiceClient_CreateTask{Call: c_call} -} - -func (_m *AsyncAgentServiceClient) OnCreateTaskMatch(matchers ...interface{}) *AsyncAgentServiceClient_CreateTask { - c_call := _m.On("CreateTask", matchers...) - return &AsyncAgentServiceClient_CreateTask{Call: c_call} -} - -// CreateTask provides a mock function with given fields: ctx, in, opts -func (_m *AsyncAgentServiceClient) CreateTask(ctx context.Context, in *admin.CreateTaskRequest, opts ...grpc.CallOption) (*admin.CreateTaskResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - var r0 *admin.CreateTaskResponse - if rf, ok := ret.Get(0).(func(context.Context, *admin.CreateTaskRequest, ...grpc.CallOption) *admin.CreateTaskResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*admin.CreateTaskResponse) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *admin.CreateTaskRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -type AsyncAgentServiceClient_DeleteTask struct { - *mock.Call -} - -func (_m AsyncAgentServiceClient_DeleteTask) Return(_a0 *admin.DeleteTaskResponse, _a1 error) *AsyncAgentServiceClient_DeleteTask { - return &AsyncAgentServiceClient_DeleteTask{Call: _m.Call.Return(_a0, _a1)} -} - -func (_m *AsyncAgentServiceClient) OnDeleteTask(ctx context.Context, in *admin.DeleteTaskRequest, opts ...grpc.CallOption) *AsyncAgentServiceClient_DeleteTask { - c_call := _m.On("DeleteTask", ctx, in, opts) - return &AsyncAgentServiceClient_DeleteTask{Call: c_call} -} - -func (_m *AsyncAgentServiceClient) OnDeleteTaskMatch(matchers ...interface{}) *AsyncAgentServiceClient_DeleteTask { - c_call := _m.On("DeleteTask", matchers...) - return &AsyncAgentServiceClient_DeleteTask{Call: c_call} -} - -// DeleteTask provides a mock function with given fields: ctx, in, opts -func (_m *AsyncAgentServiceClient) DeleteTask(ctx context.Context, in *admin.DeleteTaskRequest, opts ...grpc.CallOption) (*admin.DeleteTaskResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - var r0 *admin.DeleteTaskResponse - if rf, ok := ret.Get(0).(func(context.Context, *admin.DeleteTaskRequest, ...grpc.CallOption) *admin.DeleteTaskResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*admin.DeleteTaskResponse) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *admin.DeleteTaskRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -type AsyncAgentServiceClient_GetTask struct { - *mock.Call -} - -func (_m AsyncAgentServiceClient_GetTask) Return(_a0 *admin.GetTaskResponse, _a1 error) *AsyncAgentServiceClient_GetTask { - return &AsyncAgentServiceClient_GetTask{Call: _m.Call.Return(_a0, _a1)} -} - -func (_m *AsyncAgentServiceClient) OnGetTask(ctx context.Context, in *admin.GetTaskRequest, opts ...grpc.CallOption) *AsyncAgentServiceClient_GetTask { - c_call := _m.On("GetTask", ctx, in, opts) - return &AsyncAgentServiceClient_GetTask{Call: c_call} -} - -func (_m *AsyncAgentServiceClient) OnGetTaskMatch(matchers ...interface{}) *AsyncAgentServiceClient_GetTask { - c_call := _m.On("GetTask", matchers...) - return &AsyncAgentServiceClient_GetTask{Call: c_call} -} - -// GetTask provides a mock function with given fields: ctx, in, opts -func (_m *AsyncAgentServiceClient) GetTask(ctx context.Context, in *admin.GetTaskRequest, opts ...grpc.CallOption) (*admin.GetTaskResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - var r0 *admin.GetTaskResponse - if rf, ok := ret.Get(0).(func(context.Context, *admin.GetTaskRequest, ...grpc.CallOption) *admin.GetTaskResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*admin.GetTaskResponse) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *admin.GetTaskRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -type AsyncAgentServiceClient_GetTaskLogs struct { - *mock.Call -} - -func (_m AsyncAgentServiceClient_GetTaskLogs) Return(_a0 *admin.GetTaskLogsResponse, _a1 error) *AsyncAgentServiceClient_GetTaskLogs { - return &AsyncAgentServiceClient_GetTaskLogs{Call: _m.Call.Return(_a0, _a1)} -} - -func (_m *AsyncAgentServiceClient) OnGetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) *AsyncAgentServiceClient_GetTaskLogs { - c_call := _m.On("GetTaskLogs", ctx, in, opts) - return &AsyncAgentServiceClient_GetTaskLogs{Call: c_call} -} - -func (_m *AsyncAgentServiceClient) OnGetTaskLogsMatch(matchers ...interface{}) *AsyncAgentServiceClient_GetTaskLogs { - c_call := _m.On("GetTaskLogs", matchers...) - return &AsyncAgentServiceClient_GetTaskLogs{Call: c_call} -} - -// GetTaskLogs provides a mock function with given fields: ctx, in, opts -func (_m *AsyncAgentServiceClient) GetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) (*admin.GetTaskLogsResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - var r0 *admin.GetTaskLogsResponse - if rf, ok := ret.Get(0).(func(context.Context, *admin.GetTaskLogsRequest, ...grpc.CallOption) *admin.GetTaskLogsResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*admin.GetTaskLogsResponse) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *admin.GetTaskLogsRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -type AsyncAgentServiceClient_GetTaskMetrics struct { - *mock.Call -} - -func (_m AsyncAgentServiceClient_GetTaskMetrics) Return(_a0 *admin.GetTaskMetricsResponse, _a1 error) *AsyncAgentServiceClient_GetTaskMetrics { - return &AsyncAgentServiceClient_GetTaskMetrics{Call: _m.Call.Return(_a0, _a1)} -} - -func (_m *AsyncAgentServiceClient) OnGetTaskMetrics(ctx context.Context, in *admin.GetTaskMetricsRequest, opts ...grpc.CallOption) *AsyncAgentServiceClient_GetTaskMetrics { - c_call := _m.On("GetTaskMetrics", ctx, in, opts) - return &AsyncAgentServiceClient_GetTaskMetrics{Call: c_call} -} - -func (_m *AsyncAgentServiceClient) OnGetTaskMetricsMatch(matchers ...interface{}) *AsyncAgentServiceClient_GetTaskMetrics { - c_call := _m.On("GetTaskMetrics", matchers...) - return &AsyncAgentServiceClient_GetTaskMetrics{Call: c_call} -} - -// GetTaskMetrics provides a mock function with given fields: ctx, in, opts -func (_m *AsyncAgentServiceClient) GetTaskMetrics(ctx context.Context, in *admin.GetTaskMetricsRequest, opts ...grpc.CallOption) (*admin.GetTaskMetricsResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - var r0 *admin.GetTaskMetricsResponse - if rf, ok := ret.Get(0).(func(context.Context, *admin.GetTaskMetricsRequest, ...grpc.CallOption) *admin.GetTaskMetricsResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*admin.GetTaskMetricsResponse) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *admin.GetTaskMetricsRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go index b7d33f0b265..11ef7871b3d 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go @@ -4,6 +4,7 @@ import ( "context" "encoding/gob" "fmt" + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service" "time" "golang.org/x/exp/maps" @@ -14,23 +15,26 @@ import ( "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/template" - "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io" + flyteIO "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/ioutils" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/webapi" "github.com/flyteorg/flyte/flytestdlib/logger" "github.com/flyteorg/flyte/flytestdlib/promutils" ) +type Registry map[string]map[int32]*Agent // map[taskTypeName][taskTypeVersion] => Agent + type Plugin struct { metricScope promutils.Scope cfg *Config cs *ClientSet - agentRegistry map[string]*Agent // map[taskType] => Agent + agentRegistry Registry } type ResourceWrapper struct { - Phase flyteIdl.TaskExecution_Phase - State admin.State // This is deprecated. + Phase flyteIdl.TaskExecution_Phase + // Deprecated: Please Use Phase instead. + State admin.State Outputs *flyteIdl.LiteralMap Message string LogLinks []*flyteIdl.TaskLog @@ -38,9 +42,8 @@ type ResourceWrapper struct { type ResourceMetaWrapper struct { OutputPrefix string - Token string AgentResourceMeta []byte - TaskType string + TaskCategory admin.TaskCategory } func (p Plugin) GetConfig() webapi.PluginConfig { @@ -79,62 +82,125 @@ func (p Plugin) Create(ctx context.Context, taskCtx webapi.TaskExecutionContextR return nil, nil, err } taskTemplate.GetContainer().Args = modifiedArgs + defer func() { + // Restore unrendered template for subsequent renders. + taskTemplate.GetContainer().Args = argTemplate + }() } outputPrefix := taskCtx.OutputWriter().GetOutputPrefixPath().String() - agent := getFinalAgent(taskTemplate.Type, p.cfg, p.agentRegistry) - - client := p.cs.agentClients[agent.Endpoint] - if client == nil { - return nil, nil, fmt.Errorf("default agent is not connected, please check if endpoint:[%v] is up and running", agent.Endpoint) - } + taskCategory := admin.TaskCategory{Name: taskTemplate.Type, Version: taskTemplate.TaskTypeVersion} + agent, isSync := getFinalAgent(&taskCategory, p.cfg, p.agentRegistry) finalCtx, cancel := getFinalContext(ctx, "CreateTask", agent) defer cancel() taskExecutionMetadata := buildTaskExecutionMetadata(taskCtx.TaskExecutionMetadata()) - res, err := client.CreateTask(finalCtx, &admin.CreateTaskRequest{Inputs: inputs, Template: taskTemplate, OutputPrefix: outputPrefix, TaskExecutionMetadata: &taskExecutionMetadata}) + + if isSync { + client, err := p.getSyncAgentClient(ctx, agent) + if err != nil { + return nil, nil, err + } + header := &admin.CreateRequestHeader{Template: taskTemplate, OutputPrefix: outputPrefix, TaskExecutionMetadata: &taskExecutionMetadata} + return p.ExecuteTaskSync(finalCtx, client, header, inputs) + } + + // Use async agent client + client, err := p.getAsyncAgentClient(ctx, agent) if err != nil { return nil, nil, err } - - // Restore unrendered template for subsequent renders. - if taskTemplate.GetContainer() != nil { - taskTemplate.GetContainer().Args = argTemplate - } - - // If the agent returned a resource, we assume this is a synchronous task. - // The state should be a terminal state, for example, SUCCEEDED, PERMANENT_FAILURE, or RETRYABLE_FAILURE. - if res.GetResource() != nil { - logger.Infof(ctx, "Agent is executing a synchronous task.") - return nil, - ResourceWrapper{ - Phase: res.GetResource().Phase, - State: res.GetResource().State, - Outputs: res.GetResource().Outputs, - Message: res.GetResource().Message, - LogLinks: res.GetResource().LogLinks, - }, nil + request := &admin.CreateTaskRequest{Inputs: inputs, Template: taskTemplate, OutputPrefix: outputPrefix, TaskExecutionMetadata: &taskExecutionMetadata} + res, err := client.CreateTask(finalCtx, request) + if err != nil { + return nil, nil, err } - logger.Infof(ctx, "Agent is executing an asynchronous task.") return ResourceMetaWrapper{ OutputPrefix: outputPrefix, AgentResourceMeta: res.GetResourceMeta(), - Token: "", - TaskType: taskTemplate.Type, + TaskCategory: taskCategory, }, nil, nil } +func (p Plugin) ExecuteTaskSync( + ctx context.Context, + client service.SyncAgentServiceClient, + header *admin.CreateRequestHeader, + inputs *flyteIdl.LiteralMap, +) (webapi.ResourceMeta, webapi.Resource, error) { + stream, err := client.ExecuteTaskSync(ctx) + if err != nil { + return nil, nil, err + } + + headerProto := &admin.ExecuteTaskSyncRequest{ + Part: &admin.ExecuteTaskSyncRequest_Header{ + Header: header, + }, + } + + err = stream.Send(headerProto) + if err != nil { + return nil, nil, fmt.Errorf("failed to send headerProto with error: %w", err) + } + inputsProto := &admin.ExecuteTaskSyncRequest{ + Part: &admin.ExecuteTaskSyncRequest_Inputs{ + Inputs: inputs, + }, + } + err = stream.Send(inputsProto) + + if err != nil { + return nil, nil, fmt.Errorf("failed to send inputsProto with error: %w", err) + } + + in, err := stream.Recv() + if err != nil { + return nil, nil, err + } + if in.GetHeader() == nil { + return nil, nil, fmt.Errorf("expected header in the response, but got none") + } + // TODO: Read the streaming output from the agent, and merge it into the final output. + // For now, Propeller assumes that the output is always in the header. + resource := in.GetHeader().GetResource() + + if err := stream.CloseSend(); err != nil { + return nil, nil, err + } + + if err != nil { + logger.Errorf(ctx, "Failed to write output with err %s", err.Error()) + return nil, nil, err + } + + return nil, ResourceWrapper{ + Phase: resource.Phase, + Outputs: resource.Outputs, + Message: resource.Message, + LogLinks: resource.LogLinks, + }, err +} + func (p Plugin) Get(ctx context.Context, taskCtx webapi.GetContext) (latest webapi.Resource, err error) { metadata := taskCtx.ResourceMeta().(ResourceMetaWrapper) - agent := getFinalAgent(metadata.TaskType, p.cfg, p.agentRegistry) + agent, _ := getFinalAgent(&metadata.TaskCategory, p.cfg, p.agentRegistry) - client := p.cs.agentClients[agent.Endpoint] + client, err := p.getAsyncAgentClient(ctx, agent) + if err != nil { + return nil, err + } finalCtx, cancel := getFinalContext(ctx, "GetTask", agent) defer cancel() - res, err := client.GetTask(finalCtx, &admin.GetTaskRequest{TaskType: metadata.TaskType, ResourceMeta: metadata.AgentResourceMeta}) + request := &admin.GetTaskRequest{ + TaskType: metadata.TaskCategory.Name, + TaskCategory: &metadata.TaskCategory, + ResourceMeta: metadata.AgentResourceMeta, + } + res, err := client.GetTask(finalCtx, request) if err != nil { return nil, err } @@ -144,7 +210,7 @@ func (p Plugin) Get(ctx context.Context, taskCtx webapi.GetContext) (latest weba State: res.Resource.State, Outputs: res.Resource.Outputs, Message: res.Resource.Message, - LogLinks: res.LogLinks, + LogLinks: res.Resource.LogLinks, }, nil } @@ -153,13 +219,21 @@ func (p Plugin) Delete(ctx context.Context, taskCtx webapi.DeleteContext) error return nil } metadata := taskCtx.ResourceMeta().(ResourceMetaWrapper) - agent := getFinalAgent(metadata.TaskType, p.cfg, p.agentRegistry) + agent, _ := getFinalAgent(&metadata.TaskCategory, p.cfg, p.agentRegistry) - client := p.cs.agentClients[agent.Endpoint] + client, err := p.getAsyncAgentClient(ctx, agent) + if err != nil { + return err + } finalCtx, cancel := getFinalContext(ctx, "DeleteTask", agent) defer cancel() - _, err := client.DeleteTask(finalCtx, &admin.DeleteTaskRequest{TaskType: metadata.TaskType, ResourceMeta: metadata.AgentResourceMeta}) + request := &admin.DeleteTaskRequest{ + TaskType: metadata.TaskCategory.Name, + TaskCategory: &metadata.TaskCategory, + ResourceMeta: metadata.AgentResourceMeta, + } + _, err = client.DeleteTask(finalCtx, request) return err } @@ -177,7 +251,7 @@ func (p Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phase case flyteIdl.TaskExecution_RUNNING: return core.PhaseInfoRunning(core.DefaultPhaseVersion, taskInfo), nil case flyteIdl.TaskExecution_SUCCEEDED: - err = writeOutput(ctx, taskCtx, resource) + err = writeOutput(ctx, taskCtx, resource.Outputs) if err != nil { logger.Errorf(ctx, "Failed to write output with err %s", err.Error()) return core.PhaseInfoUndefined, err @@ -205,7 +279,7 @@ func (p Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phase case admin.State_RETRYABLE_FAILURE: return core.PhaseInfoRetryableFailure(pluginErrors.TaskFailedWithError, "failed to run the job.\n"+resource.Message, taskInfo), nil case admin.State_SUCCEEDED: - err = writeOutput(ctx, taskCtx, resource) + err = writeOutput(ctx, taskCtx, resource.Outputs) if err != nil { logger.Errorf(ctx, "Failed to write output with err %s", err.Error()) return core.PhaseInfoUndefined, err @@ -215,7 +289,33 @@ func (p Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phase return core.PhaseInfoUndefined, pluginErrors.Errorf(core.SystemErrorCode, "unknown execution state [%v].", resource.State) } -func writeOutput(ctx context.Context, taskCtx webapi.StatusContext, resource ResourceWrapper) error { +func (p Plugin) getSyncAgentClient(ctx context.Context, agent *Deployment) (service.SyncAgentServiceClient, error) { + client, ok := p.cs.syncAgentClients[agent.Endpoint] + if !ok { + conn, err := getGrpcConnection(ctx, agent) + if err != nil { + return nil, fmt.Errorf("failed to get grpc connection with error: %v", err) + } + client = service.NewSyncAgentServiceClient(conn) + p.cs.syncAgentClients[agent.Endpoint] = client + } + return client, nil +} + +func (p Plugin) getAsyncAgentClient(ctx context.Context, agent *Deployment) (service.AsyncAgentServiceClient, error) { + client, ok := p.cs.asyncAgentClients[agent.Endpoint] + if !ok { + conn, err := getGrpcConnection(ctx, agent) + if err != nil { + return nil, fmt.Errorf("failed to get grpc connection with error: %v", err) + } + client = service.NewAsyncAgentServiceClient(conn) + p.cs.asyncAgentClients[agent.Endpoint] = client + } + return client, nil +} + +func writeOutput(ctx context.Context, taskCtx webapi.StatusContext, outputs *flyteIdl.LiteralMap) error { taskTemplate, err := taskCtx.TaskReader().Read(ctx) if err != nil { return err @@ -226,23 +326,23 @@ func writeOutput(ctx context.Context, taskCtx webapi.StatusContext, resource Res return nil } - var opReader io.OutputReader - if resource.Outputs != nil { - logger.Debugf(ctx, "Agent returned an output.") - opReader = ioutils.NewInMemoryOutputReader(resource.Outputs, nil, nil) + var opReader flyteIO.OutputReader + if outputs != nil { + logger.Debugf(ctx, "AgentDeployment returned an output.") + opReader = ioutils.NewInMemoryOutputReader(outputs, nil, nil) } else { - logger.Debugf(ctx, "Agent didn't return any output, assuming file based outputs.") + logger.Debugf(ctx, "AgentDeployment didn't return any output, assuming file based outputs.") opReader = ioutils.NewRemoteFileOutputReader(ctx, taskCtx.DataStore(), taskCtx.OutputWriter(), taskCtx.MaxDatasetSizeBytes()) } return taskCtx.OutputWriter().Put(ctx, opReader) } -func getFinalAgent(taskType string, cfg *Config, agentRegistry map[string]*Agent) *Agent { - if agent, exists := agentRegistry[taskType]; exists { - return agent +func getFinalAgent(taskCategory *admin.TaskCategory, cfg *Config, agentRegistry Registry) (*Deployment, bool) { + if agent, exists := agentRegistry[taskCategory.Name][taskCategory.Version]; exists { + return agent.AgentDeployment, agent.IsSync } - return &cfg.DefaultAgent + return &cfg.DefaultAgent, false } func buildTaskExecutionMetadata(taskExecutionMetadata core.TaskExecutionMetadata) admin.TaskExecutionMetadata { @@ -271,7 +371,7 @@ func newAgentPlugin() webapi.PluginEntry { cfg := GetConfig() supportedTaskTypes := append(maps.Keys(agentRegistry), cfg.SupportedTaskTypes...) - logger.Infof(context.Background(), "Agent supports task types: %v", supportedTaskTypes) + logger.Infof(context.Background(), "AgentDeployment service supports task types: %v", supportedTaskTypes) return webapi.PluginEntry{ ID: "agent-service", diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/plugin_test.go b/flyteplugins/go/tasks/plugins/webapi/agent/plugin_test.go index bddea6869e9..9fa36c5c422 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/plugin_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/plugin_test.go @@ -10,6 +10,7 @@ import ( "github.com/stretchr/testify/mock" "golang.org/x/exp/maps" + agentMocks "github.com/flyteorg/flyte/flyteidl/clients/go/admin/mocks" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" flyteIdl "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" flyteIdlCore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" @@ -17,7 +18,6 @@ import ( pluginsCore "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" pluginCoreMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks" webapiPlugin "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/webapi/mocks" - agentMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/plugins/webapi/agent/mocks" "github.com/flyteorg/flyte/flytestdlib/config" "github.com/flyteorg/flyte/flytestdlib/promutils" ) @@ -31,8 +31,8 @@ func TestPlugin(t *testing.T) { cfg := defaultConfig cfg.WebAPI.Caching.Workers = 1 cfg.WebAPI.Caching.ResyncInterval.Duration = 5 * time.Second - cfg.DefaultAgent = Agent{Endpoint: "test-agent.flyte.svc.cluster.local:80"} - cfg.Agents = map[string]*Agent{"spark_agent": {Endpoint: "localhost:80"}} + cfg.DefaultAgent = Deployment{Endpoint: "test-agent.flyte.svc.cluster.local:80"} + cfg.AgentDeployments = map[string]*Deployment{"spark_agent": {Endpoint: "localhost:80"}} cfg.AgentForTaskTypes = map[string]string{"spark": "spark_agent", "bar": "bar_agent"} plugin := Plugin{ @@ -52,34 +52,38 @@ func TestPlugin(t *testing.T) { }) t.Run("test newAgentPlugin", func(t *testing.T) { - p := newMockAgentPlugin() + p := newMockAsyncAgentPlugin() assert.NotNil(t, p) assert.Equal(t, "agent-service", p.ID) assert.NotNil(t, p.PluginLoader) }) t.Run("test getFinalAgent", func(t *testing.T) { - agentRegistry := map[string]*Agent{"spark": {Endpoint: "localhost:80"}} - agent := getFinalAgent("spark", &cfg, agentRegistry) - assert.Equal(t, agent.Endpoint, "localhost:80") - agent = getFinalAgent("foo", &cfg, agentRegistry) - assert.Equal(t, agent.Endpoint, cfg.DefaultAgent.Endpoint) - agent = getFinalAgent("bar", &cfg, agentRegistry) - assert.Equal(t, agent.Endpoint, cfg.DefaultAgent.Endpoint) + agent := &Agent{AgentDeployment: &Deployment{Endpoint: "localhost:80"}} + agentRegistry := Registry{"spark": {defaultTaskTypeVersion: agent}} + spark := &admin.TaskCategory{Name: "spark", Version: defaultTaskTypeVersion} + foo := &admin.TaskCategory{Name: "foo", Version: defaultTaskTypeVersion} + bar := &admin.TaskCategory{Name: "bar", Version: defaultTaskTypeVersion} + agentDeployment, _ := getFinalAgent(spark, &cfg, agentRegistry) + assert.Equal(t, agentDeployment.Endpoint, "localhost:80") + agentDeployment, _ = getFinalAgent(foo, &cfg, agentRegistry) + assert.Equal(t, agentDeployment.Endpoint, cfg.DefaultAgent.Endpoint) + agentDeployment, _ = getFinalAgent(bar, &cfg, agentRegistry) + assert.Equal(t, agentDeployment.Endpoint, cfg.DefaultAgent.Endpoint) }) t.Run("test getFinalTimeout", func(t *testing.T) { - timeout := getFinalTimeout("CreateTask", &Agent{Endpoint: "localhost:8080", Timeouts: map[string]config.Duration{"CreateTask": {Duration: 1 * time.Millisecond}}}) + timeout := getFinalTimeout("CreateTask", &Deployment{Endpoint: "localhost:8080", Timeouts: map[string]config.Duration{"CreateTask": {Duration: 1 * time.Millisecond}}}) assert.Equal(t, 1*time.Millisecond, timeout.Duration) - timeout = getFinalTimeout("DeleteTask", &Agent{Endpoint: "localhost:8080", DefaultTimeout: config.Duration{Duration: 10 * time.Second}}) + timeout = getFinalTimeout("DeleteTask", &Deployment{Endpoint: "localhost:8080", DefaultTimeout: config.Duration{Duration: 10 * time.Second}}) assert.Equal(t, 10*time.Second, timeout.Duration) }) t.Run("test getFinalContext", func(t *testing.T) { - ctx, _ := getFinalContext(context.TODO(), "DeleteTask", &Agent{}) + ctx, _ := getFinalContext(context.TODO(), "DeleteTask", &Deployment{}) assert.Equal(t, context.TODO(), ctx) - ctx, _ = getFinalContext(context.TODO(), "CreateTask", &Agent{Endpoint: "localhost:8080", Timeouts: map[string]config.Duration{"CreateTask": {Duration: 1 * time.Millisecond}}}) + ctx, _ = getFinalContext(context.TODO(), "CreateTask", &Deployment{Endpoint: "localhost:8080", Timeouts: map[string]config.Duration{"CreateTask": {Duration: 1 * time.Millisecond}}}) assert.NotEqual(t, context.TODO(), ctx) }) @@ -270,11 +274,15 @@ func TestPlugin(t *testing.T) { func getMockMetadataServiceClient() *agentMocks.AgentMetadataServiceClient { mockMetadataServiceClient := new(agentMocks.AgentMetadataServiceClient) mockRequest := &admin.ListAgentsRequest{} + supportedTaskCategories := make([]*admin.TaskCategory, 3) + supportedTaskCategories[0] = &admin.TaskCategory{Name: "task1", Version: defaultTaskTypeVersion} + supportedTaskCategories[1] = &admin.TaskCategory{Name: "task2", Version: defaultTaskTypeVersion} + supportedTaskCategories[2] = &admin.TaskCategory{Name: "task3", Version: defaultTaskTypeVersion} mockResponse := &admin.ListAgentsResponse{ Agents: []*admin.Agent{ { - Name: "test-agent", - SupportedTaskTypes: []string{"task1", "task2", "task3"}, + Name: "test-agent", + SupportedTaskCategories: supportedTaskCategories, }, }, } @@ -290,12 +298,12 @@ func TestInitializeAgentRegistry(t *testing.T) { agentMetadataClients[defaultAgentEndpoint] = getMockMetadataServiceClient() cs := &ClientSet{ - agentClients: agentClients, + asyncAgentClients: agentClients, agentMetadataClients: agentMetadataClients, } cfg := defaultConfig - cfg.Agents = map[string]*Agent{"custom_agent": {Endpoint: defaultAgentEndpoint}} + cfg.AgentDeployments = map[string]*Deployment{"custom_agent": {Endpoint: defaultAgentEndpoint}} cfg.AgentForTaskTypes = map[string]string{"task1": "agent-deployment-1", "task2": "agent-deployment-2"} err := SetConfig(&cfg) assert.NoError(t, err) From d751d0ba83a5c4596c3fa4d3d7de16478de30058 Mon Sep 17 00:00:00 2001 From: "Ethan Brown (Domino)" <111539728+ddl-ebrown@users.noreply.github.com> Date: Mon, 26 Feb 2024 05:55:05 -0800 Subject: [PATCH 040/107] Fix flyte-core rendering when flyteagent enabled (#4922) - Flyte agent now tries to render a specific set of podLabels, so assumes that there is an empty `podLabels: {}` set. This change to values.yaml for flyte-core ensures empty values are there. - Fixes: Error: template: flyte-core/charts/flyteagent/templates/agent/deployment.yaml:17:17: executing "flyte-core/charts/flyteagent/templates/agent/deployment.yaml" at : error calling include: template: flyte-core/templates/_helpers.tpl:122:16: executing "flyteagent.podLabels" at <.Values.flyteagent.podLabels>: nil pointer evaluating interface {}.podLabels Signed-off-by: ddl-ebrown --- charts/flyte-core/README.md | 1 + charts/flyte-core/values.yaml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index 460151fcbb2..ea4435945dc 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -194,6 +194,7 @@ helm install gateway bitnami/contour -n flyte | flyteagent.enabled | bool | `false` | | | flyteagent.plugin_config.plugins.agentService.defaultAgent.endpoint | string | `"dns:///flyteagent.flyte.svc.cluster.local:8000"` | | | flyteagent.plugin_config.plugins.agentService.defaultAgent.insecure | bool | `true` | | +| flyteagent.podLabels | object | `{}` | Labels for flyteagent pods | | flyteconsole.affinity | object | `{}` | affinity for Flyteconsole deployment | | flyteconsole.enabled | bool | `true` | | | flyteconsole.ga.enabled | bool | `false` | | diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index 109710edef7..36e2b87eaa8 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -279,6 +279,8 @@ flyteagent: defaultAgent: endpoint: "dns:///flyteagent.flyte.svc.cluster.local:8000" insecure: true + # -- Labels for flyteagent pods + podLabels: {} # # FLYTEPROPELLER SETTINGS From 0c771ef6b956c56a2d209900edc4cf7179b74fc4 Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Mon, 26 Feb 2024 14:03:55 -0600 Subject: [PATCH 041/107] Further edits to agents docs (#4952) * copy edits Signed-off-by: nikki everett * add anchor link Signed-off-by: nikki everett * add note about contribution Signed-off-by: nikki everett * add deprecated integrations section, update agents links Signed-off-by: nikki everett --------- Signed-off-by: nikki everett --- docs/conf.py | 3 ++- docs/core_use_cases/analytics.md | 4 ++-- docs/core_use_cases/data_engineering.md | 2 +- docs/flyte_agents/developing_agents.md | 12 ++++++++++++ docs/flyte_agents/index.md | 7 ++++--- docs/flyte_fundamentals/optimizing_tasks.md | 2 +- docs/index.md | 1 + 7 files changed, 23 insertions(+), 8 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 63a1ec94839..00c82afd2a9 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -339,7 +339,8 @@ "source_regex_mapping": REPLACE_PATTERNS, "list_table_toc": [ "flytesnacks/tutorials", - "flytesnacks/integrations", + "flytesnacks/integrations", + "flytesnacks/deprecated_integrations" ], "dev_build": bool(int(os.environ.get("MONODOCS_DEV_BUILD", 1))), } diff --git a/docs/core_use_cases/analytics.md b/docs/core_use_cases/analytics.md index 58b6ab770cd..886b75618dd 100644 --- a/docs/core_use_cases/analytics.md +++ b/docs/core_use_cases/analytics.md @@ -173,7 +173,7 @@ and [DBT](https://github.com/flyteorg/flytekit/tree/master/plugins/flytekit-dbt) integrations. If you need to connect to a database, Flyte provides first-party -support for {ref}`AWS Athena `, {ref}`Google Bigquery `, -{ref}`Snowflake `, {ref}`SQLAlchemy `, and +support for {ref}`AWS Athena `, {ref}`Google Bigquery `, +{ref}`Snowflake `, {ref}`SQLAlchemy `, and {ref}`SQLite3 `. ``` diff --git a/docs/core_use_cases/data_engineering.md b/docs/core_use_cases/data_engineering.md index 25eb802fc2d..9cbfca430c1 100644 --- a/docs/core_use_cases/data_engineering.md +++ b/docs/core_use_cases/data_engineering.md @@ -170,6 +170,6 @@ and [DBT](https://github.com/flyteorg/flytekit/tree/master/plugins/flytekit-dbt) integrations. For database connectors, Flyte provides first-party support for {ref}`AWS Athena `, -{ref}`Google Bigquery `, {ref}`Snowflake `, +{ref}`Google BigQuery `, {ref}`Snowflake `, {ref}`SQLAlchemy `, and {ref}`SQLite3 `. ``` diff --git a/docs/flyte_agents/developing_agents.md b/docs/flyte_agents/developing_agents.md index bd7d1c76107..688f2418522 100644 --- a/docs/flyte_agents/developing_agents.md +++ b/docs/flyte_agents/developing_agents.md @@ -13,6 +13,12 @@ The Flyte agent framework enables rapid agent development, since agents are deco If you need to create a new type of task, we recommend creating a new agent to run it rather than running the task in a pod. After testing the new agent, you can update your FlytePropeller configMap to specify the type of task that the agent should run. +```{note} + +We strongly encourage you to contribute your agent to the Flyte community. To do so, follow the steps in "[Contributing to Flyte](https://docs.flyte.org/en/latest/community/contribute.html)", and reach out to us on [Slack](https://docs.flyte.org/en/latest/community/contribute.html#) if you have any questions. + +``` + There are two types of agents: **async** and **sync**. * **Async agents** enable long-running jobs that execute on an external platform over time. They communicate with external services that have asynchronous APIs that support `create`, `get`, and `delete` operations. The vast majority of agents are async agents. * **Sync agents** enable request/response services that return immediate outputs (e.g. calling an internal API to fetch data or communicating with the OpenAI API). @@ -83,3 +89,9 @@ AgentRegistry.register(CustomAsyncAgent()) ``` For an example implementation, see the [BigQuery agent](https://github.com/flyteorg/flytekit/blob/master/plugins/flytekit-bigquery/flytekitplugins/bigquery/agent.py#L43). + +```{note} + +To contribute + +``` diff --git a/docs/flyte_agents/index.md b/docs/flyte_agents/index.md index d56c7fed4bf..293f661be9e 100644 --- a/docs/flyte_agents/index.md +++ b/docs/flyte_agents/index.md @@ -7,17 +7,18 @@ prev-page-title: Extending Flyte (flyte_agents_guide)= # Flyte agents -Flyte agents are long-running, stateless services that receive execution requests via gRPC and initiate jobs with appropriate external or internal services. They enable two key workflows: asynchronously launching jobs on hosted platforms (e.g. Databbricks or Snowflake) and calling external synchronous services, such as access control, data retrieval, and model inferencing. +Flyte agents are long-running, stateless services that receive execution requests via gRPC and initiate jobs with appropriate external or internal services. They enable two key workflows: asynchronously launching jobs on hosted platforms (e.g. Databricks or Snowflake) and calling external synchronous services, such as access control, data retrieval, and model inferencing. -Each agent service is a Kubernetes deployment that receives gRPC requests from FlytePropeller when users trigger a particular type of task (for example, the BigQuery agent handles BigQuery tasks). The agent service then initiates a job with the appropriate service. Since Agents can be spawned in process, they allow for running all services locally as long as the connection secrets are available. Moreover, Agents use a protobuf interface, thus can be implemented in any language, providing a lot of opportunity for flexibility and reuse of existing libraries, as well as simpler testing. +Each agent service is a Kubernetes deployment that receives gRPC requests from FlytePropeller when users trigger a particular type of task (for example, the BigQuery agent handles BigQuery tasks). The agent service then initiates a job with the appropriate service. Since agents can be spawned in process, they allow for running all services locally as long as the connection secrets are available. Moreover, agents use a protobuf interface, thus can be implemented in any language, enabling flexibility, reuse of existing libraries, and simpler testing. -You can create different agent services that host different agents, e.g., a production and a development agent service. +You can create different agent services that host different agents, e.g., a production and a development agent service: :::{figure} https://i.ibb.co/vXhBDjP/Screen-Shot-2023-05-29-at-2-54-14-PM.png :alt: Agent Service :class: with-shadow ::: +(using_agents_in_tasks)= ## Using agents in tasks If you need to connect to an external service in your workflow, we recommend using the corresponding agent rather than a web API plugin. Agents are designed to be scalable and can handle large workloads efficiently, and decrease load on FlytePropeller, since they run outside of it. You can also test agents locally without having to change the Flyte backend configuration, streamlining development. diff --git a/docs/flyte_fundamentals/optimizing_tasks.md b/docs/flyte_fundamentals/optimizing_tasks.md index 508767d05f2..00c27c881f3 100644 --- a/docs/flyte_fundamentals/optimizing_tasks.md +++ b/docs/flyte_fundamentals/optimizing_tasks.md @@ -243,7 +243,7 @@ When this task is executed on a Flyte cluster, it automatically provisions all o the resources that you need. In this case, that need is distributed training, but Flyte also provides integrations for {ref}`Spark `, {ref}`Ray `, {ref}`MPI `, {ref}`Sagemaker `, -{ref}`Snowflake `, and more. +{ref}`Snowflake `, and more. Even though Flyte itself is a powerful compute engine and orchestrator for data engineering, machine learning, and analytics, perhaps you have existing diff --git a/docs/index.md b/docs/index.md index 9df04ccd785..4720be51f75 100644 --- a/docs/index.md +++ b/docs/index.md @@ -151,6 +151,7 @@ Core use cases User Guide Tutorials Integrations +Deprecated integrations ``` ```{toctree} From b43af7987a45edc6f1efcbcbe7d5770d6d07723d Mon Sep 17 00:00:00 2001 From: WenChih Lo Date: Tue, 27 Feb 2024 09:30:05 +0800 Subject: [PATCH 042/107] Generating sandbox-bundled manifests via root Makefile (#4940) Signed-off-by: Ryan Lo --- Makefile | 1 + docker/sandbox-bundled/Makefile | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 7bcc6e8cf85..64af8207879 100644 --- a/Makefile +++ b/Makefile @@ -37,6 +37,7 @@ kustomize: .PHONY: helm helm: ## Generate K8s Manifest from Helm Charts. bash script/generate_helm.sh + make -C docker/sandbox-bundled manifests .PHONY: release_automation release_automation: diff --git a/docker/sandbox-bundled/Makefile b/docker/sandbox-bundled/Makefile index 0b4eac7e0a4..89468868403 100644 --- a/docker/sandbox-bundled/Makefile +++ b/docker/sandbox-bundled/Makefile @@ -15,12 +15,15 @@ flyte: FLYTECONSOLE_VERSION := latest flyte: $(foreach arch,amd64 arm64,$(call FLYTE_BINARY_BUILD,$(arch))) -.PHONY: manifests -manifests: - mkdir -p manifests +.PHONY: dep_update +dep_update: helm dependency update ../../charts/flyteagent helm dependency update ../../charts/flyte-binary helm dependency update ../../charts/flyte-sandbox + +.PHONY: manifests +manifests: + mkdir -p manifests kustomize build \ --enable-helm \ --load-restrictor=LoadRestrictionsNone \ @@ -35,7 +38,7 @@ manifests: kustomize/complete-agent > manifests/complete-agent.yaml .PHONY: build -build: flyte manifests +build: flyte dep_update manifests [ -n "$(shell docker buildx ls | awk '/^flyte-sandbox / {print $$1}')" ] || \ docker buildx create --name flyte-sandbox \ --driver docker-container --driver-opt image=moby/buildkit:master \ From 311de7057074b691f2437f7fbb575c13479be839 Mon Sep 17 00:00:00 2001 From: Paul Dittamo <37558497+pvditt@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:37:29 -0800 Subject: [PATCH 043/107] [BUG] Datacatalog put errors don't get persisted (#4938) * bubble up catalog put failures with populated catalogmetadata Signed-off-by: Paul Dittamo * tests Signed-off-by: Paul Dittamo * don't error on already exists catalog puts Signed-off-by: Paul Dittamo --------- Signed-off-by: Paul Dittamo --- .../tasks/pluginmachinery/catalog/client.go | 7 + .../pluginmachinery/catalog/client_test.go | 20 +++ .../nodes/catalog/datacatalog/datacatalog.go | 40 +++-- .../catalog/datacatalog/datacatalog_test.go | 166 +++++++++++++++++- 4 files changed, 214 insertions(+), 19 deletions(-) diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/client.go b/flyteplugins/go/tasks/pluginmachinery/catalog/client.go index 5d0e981e089..56cb4be2027 100644 --- a/flyteplugins/go/tasks/pluginmachinery/catalog/client.go +++ b/flyteplugins/go/tasks/pluginmachinery/catalog/client.go @@ -49,6 +49,13 @@ func (s Status) GetMetadata() *core.CatalogMetadata { return s.metadata } +func NewPutFailureStatus(key *Key) Status { + md := &core.CatalogMetadata{ + DatasetId: &key.Identifier, + } + return Status{cacheStatus: core.CatalogCacheStatus_CACHE_PUT_FAILURE, metadata: md} +} + func NewStatus(cacheStatus core.CatalogCacheStatus, md *core.CatalogMetadata) Status { return Status{cacheStatus: cacheStatus, metadata: md} } diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/client_test.go b/flyteplugins/go/tasks/pluginmachinery/catalog/client_test.go index 196b5374de4..15a4347351b 100644 --- a/flyteplugins/go/tasks/pluginmachinery/catalog/client_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/catalog/client_test.go @@ -23,8 +23,28 @@ var ( Name: "artifactName", }, } + key = &Key{ + Identifier: core.Identifier{ + Project: "project", + Domain: "domain", + Name: "name", + Version: "1.0.0", + }, + CacheVersion: "1.0.0", + TypedInterface: core.TypedInterface{ + Inputs: nil, + Outputs: nil, + }, + } ) +func TestNewPutFailureStatus(t *testing.T) { + status := NewPutFailureStatus(key) + + assert.Equal(t, status.GetCacheStatus(), core.CatalogCacheStatus_CACHE_PUT_FAILURE) + assert.EqualValues(t, status.GetMetadata().GetDatasetId(), &key.Identifier) +} + func TestStatus(t *testing.T) { status := NewStatus(cacheStatus, &catalogMetadata) diff --git a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog.go b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog.go index b3db72d129b..6a029255a82 100644 --- a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog.go +++ b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog.go @@ -147,8 +147,8 @@ 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_HIT, md)), nil } -// CreateDataset creates a Dataset in datacatalog including the associated metadata. -func (m *CatalogClient) CreateDataset(ctx context.Context, key catalog.Key, metadata *datacatalog.Metadata) (*datacatalog.DatasetID, error) { +// createDataset creates a Dataset in datacatalog including the associated metadata. +func (m *CatalogClient) createDataset(ctx context.Context, key catalog.Key, metadata *datacatalog.Metadata) (*datacatalog.DatasetID, error) { datasetID, err := GenerateDatasetIDForTask(ctx, key) if err != nil { logger.Errorf(ctx, "DataCatalog failed to generate dataset for ID: %s, err: %s", key.Identifier, err) @@ -205,9 +205,9 @@ func (m *CatalogClient) prepareInputsAndOutputs(ctx context.Context, key catalog return inputs, outputs, nil } -// CreateArtifact creates an Artifact in datacatalog including its associated ArtifactData and tags it with a hash of +// 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.LiteralMap, outputs *core.LiteralMap, 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 @@ -263,8 +263,8 @@ func (m *CatalogClient) CreateArtifact(ctx context.Context, key catalog.Key, dat return catalog.NewStatus(core.CatalogCacheStatus_CACHE_POPULATED, EventCatalogMetadata(datasetID, tag, nil)), nil } -// 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) { +// 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) { logger.Debugf(ctx, "Updating artifact for key %+v, dataset %+v and execution %+v", key, datasetID, metadata) artifactDataList := make([]*datacatalog.ArtifactData, 0, len(outputs.Literals)) @@ -316,17 +316,21 @@ func (m *CatalogClient) UpdateArtifact(ctx context.Context, key catalog.Key, dat // Lastly, CatalogClient will create an Artifact tagged with the input value hash and store the provided execution data. func (m *CatalogClient) Put(ctx context.Context, key catalog.Key, reader io.OutputReader, metadata catalog.Metadata) (catalog.Status, error) { // Ensure dataset exists, idempotent operations. Populate Metadata for later recovery - datasetID, err := m.CreateDataset(ctx, key, GetDatasetMetadataForSource(metadata.TaskExecutionIdentifier)) + datasetID, err := m.createDataset(ctx, key, GetDatasetMetadataForSource(metadata.TaskExecutionIdentifier)) if err != nil { - return catalog.Status{}, err + return catalog.NewPutFailureStatus(&key), err } inputs, outputs, err := m.prepareInputsAndOutputs(ctx, key, reader) if err != nil { - return catalog.Status{}, err + return catalog.NewPutFailureStatus(&key), err } - return m.CreateArtifact(ctx, key, datasetID, inputs, outputs, metadata) + createArtifactStatus, err := m.createArtifact(ctx, key, datasetID, inputs, outputs, metadata) + if err != nil { + return catalog.NewPutFailureStatus(&key), err + } + return createArtifactStatus, err } // Update stores the result of a task execution as a cached Artifact, overwriting any already stored data from a previous @@ -337,27 +341,31 @@ func (m *CatalogClient) Put(ctx context.Context, key catalog.Key, reader io.Outp // has of the input values will exist. func (m *CatalogClient) Update(ctx context.Context, key catalog.Key, reader io.OutputReader, metadata catalog.Metadata) (catalog.Status, error) { // Ensure dataset exists, idempotent operations. Populate Metadata for later recovery - datasetID, err := m.CreateDataset(ctx, key, GetDatasetMetadataForSource(metadata.TaskExecutionIdentifier)) + datasetID, err := m.createDataset(ctx, key, GetDatasetMetadataForSource(metadata.TaskExecutionIdentifier)) if err != nil { - return catalog.Status{}, err + return catalog.NewPutFailureStatus(&key), err } inputs, outputs, err := m.prepareInputsAndOutputs(ctx, key, reader) if err != nil { - return catalog.Status{}, err + return catalog.NewPutFailureStatus(&key), err } - catalogStatus, err := m.UpdateArtifact(ctx, key, datasetID, inputs, outputs, metadata) + catalogStatus, err := m.updateArtifact(ctx, key, datasetID, inputs, outputs, metadata) if err != nil { if status.Code(err) == codes.NotFound { // No existing artifact found (e.g. initial execution of task with overwrite flag already set), // silently ignore error and create artifact instead to make overwriting an idempotent operation. logger.Debugf(ctx, "Artifact %+v for dataset %+v does not exist while updating, creating instead", key, datasetID) - return m.CreateArtifact(ctx, key, datasetID, inputs, outputs, metadata) + createArtifactStatus, err := m.createArtifact(ctx, key, datasetID, inputs, outputs, metadata) + if err != nil { + return catalog.NewPutFailureStatus(&key), err + } + return createArtifactStatus, nil } logger.Errorf(ctx, "Failed to update artifact %+v for dataset %+v: %v", key, datasetID, err) - return catalog.Status{}, err + return catalog.NewPutFailureStatus(&key), err } logger.Debugf(ctx, "Successfully updated artifact %+v for dataset %+v", key, datasetID) diff --git a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog_test.go b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog_test.go index d9787ceeaa2..ce8f6f4069c 100644 --- a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog_test.go +++ b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog_test.go @@ -443,6 +443,73 @@ func TestCatalog_Put(t *testing.T) { assert.Equal(t, "flyte_cached-BE6CZsMk6N3ExR_4X9EuwBgj2Jh2UwasXK3a_pM9xlY", s.GetMetadata().ArtifactTag.Name) }) + t.Run("Create dataset fails", func(t *testing.T) { + ir := &mocks2.InputReader{} + ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + + mockClient := &mocks.DataCatalogClient{} + discovery := &CatalogClient{ + client: mockClient, + } + + mockClient.On("CreateDataset", + ctx, + mock.MatchedBy(func(o *datacatalog.CreateDatasetRequest) bool { + return true + }), + ).Return(&datacatalog.CreateDatasetResponse{}, errors.New("generic error")) + + newKey := sampleKey + newKey.InputReader = ir + or := ioutils.NewInMemoryOutputReader(sampleParameters, nil, nil) + s, err := discovery.Put(ctx, newKey, or, catalog.Metadata{ + WorkflowExecutionIdentifier: &core.WorkflowExecutionIdentifier{ + Name: "test", + }, + TaskExecutionIdentifier: nil, + }) + assert.Error(t, err) + assert.Equal(t, core.CatalogCacheStatus_CACHE_PUT_FAILURE, s.GetCacheStatus()) + assert.NotNil(t, s.GetMetadata()) + }) + + t.Run("Create artifact fails", func(t *testing.T) { + ir := &mocks2.InputReader{} + ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + + mockClient := &mocks.DataCatalogClient{} + discovery := &CatalogClient{ + client: mockClient, + } + + mockClient.On("CreateDataset", + ctx, + mock.MatchedBy(func(o *datacatalog.CreateDatasetRequest) bool { + return true + }), + ).Return(&datacatalog.CreateDatasetResponse{}, nil) + + mockClient.On("CreateArtifact", + ctx, + mock.MatchedBy(func(o *datacatalog.CreateArtifactRequest) bool { + return true + }), + ).Return(&datacatalog.CreateArtifactResponse{}, errors.New("generic error")) + + newKey := sampleKey + newKey.InputReader = ir + or := ioutils.NewInMemoryOutputReader(sampleParameters, nil, nil) + s, err := discovery.Put(ctx, newKey, or, catalog.Metadata{ + WorkflowExecutionIdentifier: &core.WorkflowExecutionIdentifier{ + Name: "test", + }, + TaskExecutionIdentifier: nil, + }) + assert.Error(t, err) + assert.Equal(t, core.CatalogCacheStatus_CACHE_PUT_FAILURE, s.GetCacheStatus()) + assert.NotNil(t, s.GetMetadata()) + }) + t.Run("Create new cached execution with no inputs/outputs", func(t *testing.T) { mockClient := &mocks.DataCatalogClient{} catalogClient := &CatalogClient{ @@ -611,6 +678,70 @@ func TestCatalog_Update(t *testing.T) { assert.Equal(t, taskID.NodeExecutionId.String(), sourceTID.NodeExecutionId.String()) }) + t.Run("Overwrite non-existing execution", func(t *testing.T) { + ir := &mocks2.InputReader{} + ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + + mockClient := &mocks.DataCatalogClient{} + discovery := &CatalogClient{ + client: mockClient, + } + + mockClient.On("CreateDataset", + ctx, + mock.MatchedBy(func(o *datacatalog.CreateDatasetRequest) bool { + return true + }), + ).Return(&datacatalog.CreateDatasetResponse{}, nil) + + mockClient.On("UpdateArtifact", ctx, mock.Anything).Return(nil, status.New(codes.NotFound, "missing entity of type Artifact with identifier id").Err()) + + mockClient.On("CreateArtifact", + ctx, + mock.MatchedBy(func(o *datacatalog.CreateArtifactRequest) bool { + return true + }), + ).Return(&datacatalog.CreateArtifactResponse{}, errors.New("generic error")) + + taskID := &core.TaskExecutionIdentifier{ + TaskId: &core.Identifier{ + ResourceType: core.ResourceType_TASK, + Name: sampleKey.Identifier.Name, + Project: sampleKey.Identifier.Project, + Domain: sampleKey.Identifier.Domain, + Version: "version", + }, + NodeExecutionId: &core.NodeExecutionIdentifier{ + ExecutionId: &core.WorkflowExecutionIdentifier{ + Name: "wf", + Project: "p1", + Domain: "d1", + }, + NodeId: "unknown", // not set in Put request below --> defaults to "unknown" + }, + RetryAttempt: 0, + } + + newKey := sampleKey + newKey.InputReader = ir + or := ioutils.NewInMemoryOutputReader(sampleParameters, nil, nil) + s, err := discovery.Update(ctx, newKey, or, catalog.Metadata{ + WorkflowExecutionIdentifier: &core.WorkflowExecutionIdentifier{ + Name: taskID.NodeExecutionId.ExecutionId.Name, + Domain: taskID.NodeExecutionId.ExecutionId.Domain, + Project: taskID.NodeExecutionId.ExecutionId.Project, + }, + TaskExecutionIdentifier: &core.TaskExecutionIdentifier{ + TaskId: &sampleKey.Identifier, + NodeExecutionId: taskID.NodeExecutionId, + RetryAttempt: 0, + }, + }) + assert.Error(t, err) + assert.Equal(t, core.CatalogCacheStatus_CACHE_PUT_FAILURE, s.GetCacheStatus()) + assert.NotNil(t, s.GetMetadata()) + }) + t.Run("Overwrite non-existing execution", func(t *testing.T) { ir := &mocks2.InputReader{} ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) @@ -702,6 +833,36 @@ func TestCatalog_Update(t *testing.T) { assert.True(t, addTagCalled) }) + t.Run("Error while creating dataset", func(t *testing.T) { + ir := &mocks2.InputReader{} + ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + + mockClient := &mocks.DataCatalogClient{} + discovery := &CatalogClient{ + client: mockClient, + } + + mockClient.On("CreateDataset", + ctx, + mock.MatchedBy(func(o *datacatalog.CreateDatasetRequest) bool { + return true + }), + ).Return(&datacatalog.CreateDatasetResponse{}, errors.New("generic error")) + + newKey := sampleKey + newKey.InputReader = ir + or := ioutils.NewInMemoryOutputReader(sampleParameters, nil, nil) + s, err := discovery.Update(ctx, newKey, or, catalog.Metadata{ + WorkflowExecutionIdentifier: &core.WorkflowExecutionIdentifier{ + Name: "test", + }, + TaskExecutionIdentifier: nil, + }) + assert.Error(t, err) + assert.Equal(t, core.CatalogCacheStatus_CACHE_PUT_FAILURE, s.GetCacheStatus()) + assert.NotNil(t, s.GetMetadata()) + }) + t.Run("Error while overwriting execution", func(t *testing.T) { ir := &mocks2.InputReader{} ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) @@ -714,7 +875,6 @@ func TestCatalog_Update(t *testing.T) { mockClient.On("CreateDataset", ctx, mock.MatchedBy(func(o *datacatalog.CreateDatasetRequest) bool { - assert.True(t, proto.Equal(o.Dataset.Id, datasetID)) return true }), ).Return(&datacatalog.CreateDatasetResponse{}, nil) @@ -733,8 +893,8 @@ func TestCatalog_Update(t *testing.T) { }) assert.Error(t, err) assert.Equal(t, genericErr, err) - assert.Equal(t, core.CatalogCacheStatus_CACHE_DISABLED, s.GetCacheStatus()) - assert.Nil(t, s.GetMetadata()) + assert.Equal(t, core.CatalogCacheStatus_CACHE_PUT_FAILURE, s.GetCacheStatus()) + assert.NotNil(t, s.GetMetadata()) }) } From 2b709f1c4788fe598f9159acd31f8ae769da1849 Mon Sep 17 00:00:00 2001 From: Yee Hing Tong Date: Tue, 27 Feb 2024 15:23:12 -0800 Subject: [PATCH 044/107] Update launch condition column (#4903) Signed-off-by: Yee Hing Tong --- .../impl/validation/launch_plan_validator.go | 6 + .../validation/launch_plan_validator_test.go | 2 +- .../pkg/repositories/config/migrations.go | 43 ++- .../gormimpl/launch_plan_repo_test.go | 8 +- .../pkg/repositories/models/launch_plan.go | 14 +- .../repositories/transformers/launch_plan.go | 11 +- flyteidl/clients/go/assets/admin.swagger.json | 9 +- .../gen/pb-es/flyteidl/admin/execution_pb.ts | 8 + .../gen/pb-es/flyteidl/core/artifact_id_pb.ts | 6 - .../gen/pb-go/flyteidl/admin/execution.pb.go | 305 +++++++++--------- .../gen/pb-go/flyteidl/core/artifact_id.pb.go | 195 ++++++----- .../flyteidl/service/admin.swagger.json | 9 +- .../flyteidl/service/agent.swagger.json | 4 - .../external_plugin_service.swagger.json | 4 - flyteidl/gen/pb-js/flyteidl.d.ts | 9 +- flyteidl/gen/pb-js/flyteidl.js | 20 +- .../pb_python/flyteidl/admin/execution_pb2.py | 54 ++-- .../flyteidl/admin/execution_pb2.pyi | 2 + .../flyteidl/core/artifact_id_pb2.py | 36 +-- .../flyteidl/core/artifact_id_pb2.pyi | 6 +- flyteidl/gen/pb_rust/flyteidl.admin.rs | 4 + flyteidl/gen/pb_rust/flyteidl.core.rs | 2 - .../protos/flyteidl/admin/execution.proto | 3 + .../protos/flyteidl/core/artifact_id.proto | 2 - 24 files changed, 396 insertions(+), 366 deletions(-) diff --git a/flyteadmin/pkg/manager/impl/validation/launch_plan_validator.go b/flyteadmin/pkg/manager/impl/validation/launch_plan_validator.go index 732c00666ac..6a4a3b137f9 100644 --- a/flyteadmin/pkg/manager/impl/validation/launch_plan_validator.go +++ b/flyteadmin/pkg/manager/impl/validation/launch_plan_validator.go @@ -54,12 +54,18 @@ func ValidateLaunchPlan(ctx context.Context, if err := validateSchedule(request, expectedInputs); err != nil { return err } + // Augment default inputs with the unbound workflow inputs. request.Spec.DefaultInputs = expectedInputs if request.Spec.EntityMetadata != nil { if err := validateNotifications(request.Spec.EntityMetadata.Notifications); err != nil { return err } + if request.GetSpec().GetEntityMetadata().GetLaunchConditions() != nil { + return errors.NewFlyteAdminErrorf( + codes.InvalidArgument, + "Launch condition must be empty, found %v", request.GetSpec().GetEntityMetadata().GetLaunchConditions()) + } } return nil } diff --git a/flyteadmin/pkg/manager/impl/validation/launch_plan_validator_test.go b/flyteadmin/pkg/manager/impl/validation/launch_plan_validator_test.go index 8c2c768d42f..86bfc5c6b7b 100644 --- a/flyteadmin/pkg/manager/impl/validation/launch_plan_validator_test.go +++ b/flyteadmin/pkg/manager/impl/validation/launch_plan_validator_test.go @@ -317,7 +317,7 @@ func TestValidateSchedule_ArgNotFixed(t *testing.T) { }) t.Run("with rate", func(t *testing.T) { request := testutils.GetLaunchPlanRequestWithFixedRateSchedule(2, admin.FixedRateUnit_HOUR) - + err := validateSchedule(request, inputMap) assert.NotNil(t, err) }) diff --git a/flyteadmin/pkg/repositories/config/migrations.go b/flyteadmin/pkg/repositories/config/migrations.go index 891a80db1da..a3e5484a7d1 100644 --- a/flyteadmin/pkg/repositories/config/migrations.go +++ b/flyteadmin/pkg/repositories/config/migrations.go @@ -1182,7 +1182,48 @@ var NoopMigrations = []*gormigrate.Migration{ }, } -var Migrations = append(LegacyMigrations, NoopMigrations...) +// ContinuedMigrations - Above are a series of migrations labeled as no-op migrations. These are migrations that we +// wrote to bring the then-existing migrations up to the Gorm standard, which is to write from scratch, each struct +// that we want auto-migrated, inside each function. Previously we had not been doing that. The idea is that we will +// one day delete the migrations prior to the no-op series. New migrations should continue in this array here, again +// using the proper Gorm methodology of including the struct definitions inside each migration function. +var ContinuedMigrations = []*gormigrate.Migration{ + { + ID: "pg-continue-2024-02-launchplan", + Migrate: func(tx *gorm.DB) error { + type LaunchPlanScheduleType string + type LaunchConditionType string + + type LaunchPlan struct { + ID uint `gorm:"index;autoIncrement;not null"` + CreatedAt time.Time `gorm:"type:time"` + UpdatedAt time.Time `gorm:"type:time"` + DeletedAt *time.Time `gorm:"index"` + Project string `gorm:"primary_key;index:lp_project_domain_name_idx,lp_project_domain_idx" valid:"length(0|255)"` + Domain string `gorm:"primary_key;index:lp_project_domain_name_idx,lp_project_domain_idx" valid:"length(0|255)"` + Name string `gorm:"primary_key;index:lp_project_domain_name_idx" valid:"length(0|255)"` + Version string `gorm:"primary_key" valid:"length(0|255)"` + Spec []byte `gorm:"not null"` + WorkflowID uint `gorm:"index"` + Closure []byte `gorm:"not null"` + // GORM doesn't save the zero value for ints, so we use a pointer for the State field + State *int32 `gorm:"default:0"` + // Hash of the launch plan + Digest []byte + ScheduleType LaunchPlanScheduleType + // store the type of event that this launch plan is triggered by, can be empty, or SCHED + LaunchConditionType *LaunchConditionType `gorm:"type:varchar(32);index:idx_launch_plans_launch_conditions,where:launch_condition_type is not null"` + } + return tx.AutoMigrate(&LaunchPlan{}) + }, + Rollback: func(tx *gorm.DB) error { + return tx.Table("launch_plans").Migrator().DropColumn(&models.LaunchPlan{}, "launch_condition_type") + }, + }, +} + +var m = append(LegacyMigrations, NoopMigrations...) +var Migrations = append(m, ContinuedMigrations...) func alterTableColumnType(db *sql.DB, columnName, columnType string) error { var err error diff --git a/flyteadmin/pkg/repositories/gormimpl/launch_plan_repo_test.go b/flyteadmin/pkg/repositories/gormimpl/launch_plan_repo_test.go index b43b9d75ff4..05487fe4c9a 100644 --- a/flyteadmin/pkg/repositories/gormimpl/launch_plan_repo_test.go +++ b/flyteadmin/pkg/repositories/gormimpl/launch_plan_repo_test.go @@ -264,7 +264,7 @@ func TestListLaunchPlans_Pagination(t *testing.T) { GlobalMock := mocket.Catcher.Reset() GlobalMock.NewMock().WithQuery( - `SELECT "launch_plans"."id","launch_plans"."created_at","launch_plans"."updated_at","launch_plans"."deleted_at","launch_plans"."project","launch_plans"."domain","launch_plans"."name","launch_plans"."version","launch_plans"."spec","launch_plans"."workflow_id","launch_plans"."closure","launch_plans"."state","launch_plans"."digest","launch_plans"."schedule_type" FROM "launch_plans" inner join workflows on launch_plans.workflow_id = workflows.id WHERE launch_plans.project = $1 AND launch_plans.domain = $2 AND launch_plans.name = $3 LIMIT 2 OFFSET 1`).WithReply(launchPlans) + `SELECT "launch_plans"."id","launch_plans"."created_at","launch_plans"."updated_at","launch_plans"."deleted_at","launch_plans"."project","launch_plans"."domain","launch_plans"."name","launch_plans"."version","launch_plans"."spec","launch_plans"."workflow_id","launch_plans"."closure","launch_plans"."state","launch_plans"."digest","launch_plans"."schedule_type","launch_plans"."launch_condition_type" FROM "launch_plans" inner join workflows on launch_plans.workflow_id = workflows.id WHERE launch_plans.project = $1 AND launch_plans.domain = $2 AND launch_plans.name = $3 LIMIT 2 OFFSET 1`).WithReply(launchPlans) collection, err := launchPlanRepo.List(context.Background(), interfaces.ListResourceInput{ InlineFilters: []common.InlineFilter{ @@ -311,7 +311,7 @@ func TestListLaunchPlans_Filters(t *testing.T) { GlobalMock := mocket.Catcher.Reset() GlobalMock.Logging = true // Only match on queries that append the name filter - GlobalMock.NewMock().WithQuery(`SELECT "launch_plans"."id","launch_plans"."created_at","launch_plans"."updated_at","launch_plans"."deleted_at","launch_plans"."project","launch_plans"."domain","launch_plans"."name","launch_plans"."version","launch_plans"."spec","launch_plans"."workflow_id","launch_plans"."closure","launch_plans"."state","launch_plans"."digest","launch_plans"."schedule_type" FROM "launch_plans" inner join workflows on launch_plans.workflow_id = workflows.id WHERE launch_plans.project = $1 AND launch_plans.domain = $2 AND launch_plans.name = $3 AND launch_plans.version = $4 LIMIT 20`).WithReply(launchPlans[0:1]) + GlobalMock.NewMock().WithQuery(`SELECT "launch_plans"."id","launch_plans"."created_at","launch_plans"."updated_at","launch_plans"."deleted_at","launch_plans"."project","launch_plans"."domain","launch_plans"."name","launch_plans"."version","launch_plans"."spec","launch_plans"."workflow_id","launch_plans"."closure","launch_plans"."state","launch_plans"."digest","launch_plans"."schedule_type","launch_plans"."launch_condition_type" FROM "launch_plans" inner join workflows on launch_plans.workflow_id = workflows.id WHERE launch_plans.project = $1 AND launch_plans.domain = $2 AND launch_plans.name = $3 AND launch_plans.version = $4 LIMIT 20`).WithReply(launchPlans[0:1]) collection, err := launchPlanRepo.List(context.Background(), interfaces.ListResourceInput{ InlineFilters: []common.InlineFilter{ @@ -403,8 +403,8 @@ func TestListLaunchPlansForWorkflow(t *testing.T) { // HACK: gorm orders the filters on join clauses non-deterministically. Ordering of filters doesn't affect // correctness, but because the mocket library only pattern matches on substrings, both variations of the (valid) // SQL that gorm produces are checked below. - query := `SELECT "launch_plans"."id","launch_plans"."created_at","launch_plans"."updated_at","launch_plans"."deleted_at","launch_plans"."project","launch_plans"."domain","launch_plans"."name","launch_plans"."version","launch_plans"."spec","launch_plans"."workflow_id","launch_plans"."closure","launch_plans"."state","launch_plans"."digest","launch_plans"."schedule_type" FROM "launch_plans" inner join workflows on launch_plans.workflow_id = workflows.id WHERE launch_plans.project = $1 AND launch_plans.domain = $2 AND launch_plans.name = $3 AND workflows.deleted_at = $4 LIMIT 20` - alternateQuery := `SELECT "launch_plans"."id","launch_plans"."created_at","launch_plans"."updated_at","launch_plans"."deleted_at","launch_plans"."project","launch_plans"."domain","launch_plans"."name","launch_plans"."version","launch_plans"."spec","launch_plans"."workflow_id","launch_plans"."closure","launch_plans"."state","launch_plans"."digest","launch_plans"."schedule_type" FROM "launch_plans" inner join workflows on launch_plans.workflow_id = workflows.id WHERE launch_plans.project = $1 AND launch_plans.domain = $2 AND launch_plans.name = $3 AND workflows.deleted_at = $4 LIMIT 20` + query := `SELECT "launch_plans"."id","launch_plans"."created_at","launch_plans"."updated_at","launch_plans"."deleted_at","launch_plans"."project","launch_plans"."domain","launch_plans"."name","launch_plans"."version","launch_plans"."spec","launch_plans"."workflow_id","launch_plans"."closure","launch_plans"."state","launch_plans"."digest","launch_plans"."schedule_type","launch_plans"."launch_condition_type" FROM "launch_plans" inner join workflows on launch_plans.workflow_id = workflows.id WHERE launch_plans.project = $1 AND launch_plans.domain = $2 AND launch_plans.name = $3 AND workflows.deleted_at = $4 LIMIT 20` + alternateQuery := `SELECT "launch_plans"."id","launch_plans"."created_at","launch_plans"."updated_at","launch_plans"."deleted_at","launch_plans"."project","launch_plans"."domain","launch_plans"."name","launch_plans"."version","launch_plans"."spec","launch_plans"."workflow_id","launch_plans"."closure","launch_plans"."state","launch_plans"."digest","launch_plans"."schedule_type","launch_plans"."launch_condition_type" FROM "launch_plans" inner join workflows on launch_plans.workflow_id = workflows.id WHERE launch_plans.project = $1 AND launch_plans.domain = $2 AND launch_plans.name = $3 AND workflows.deleted_at = $4 LIMIT 20` GlobalMock.NewMock().WithQuery(query).WithReply(launchPlans) GlobalMock.NewMock().WithQuery(alternateQuery).WithReply(launchPlans) diff --git a/flyteadmin/pkg/repositories/models/launch_plan.go b/flyteadmin/pkg/repositories/models/launch_plan.go index 1a12dd259ac..75d4c636699 100644 --- a/flyteadmin/pkg/repositories/models/launch_plan.go +++ b/flyteadmin/pkg/repositories/models/launch_plan.go @@ -19,7 +19,14 @@ const ( LaunchPlanScheduleTypeRATE LaunchPlanScheduleType = "RATE" ) -// Database model to encapsulate a launch plan. +type LaunchConditionType string + +const ( + // LaunchConditionTypeSCHED is the const representing the launch plan has a trigger type of schedule + LaunchConditionTypeSCHED LaunchConditionType = "SCHED" +) + +// LaunchPlan Database model to encapsulate a launch plan. type LaunchPlan struct { BaseModel LaunchPlanKey @@ -29,8 +36,9 @@ type LaunchPlan struct { // GORM doesn't save the zero value for ints, so we use a pointer for the State field State *int32 `gorm:"default:0"` // Hash of the launch plan - Digest []byte - ScheduleType LaunchPlanScheduleType + Digest []byte + ScheduleType LaunchPlanScheduleType + LaunchConditionType *LaunchConditionType `gorm:"type:varchar(32);index:idx_launch_plans_launch_conditions,where:launch_condition_type is not null"` } var LaunchPlanColumns = modelColumns(LaunchPlan{}) diff --git a/flyteadmin/pkg/repositories/transformers/launch_plan.go b/flyteadmin/pkg/repositories/transformers/launch_plan.go index f11cdacb5f9..f716f3cc4e0 100644 --- a/flyteadmin/pkg/repositories/transformers/launch_plan.go +++ b/flyteadmin/pkg/repositories/transformers/launch_plan.go @@ -40,18 +40,21 @@ func CreateLaunchPlanModel( return models.LaunchPlan{}, errors.NewFlyteAdminError(codes.Internal, "Failed to serialize launch plan closure") } + var launchConditionType models.LaunchConditionType scheduleType := models.LaunchPlanScheduleTypeNONE if launchPlan.Spec.EntityMetadata != nil && launchPlan.Spec.EntityMetadata.Schedule != nil { if launchPlan.Spec.EntityMetadata.Schedule.GetCronExpression() != "" || launchPlan.Spec.EntityMetadata.Schedule.GetCronSchedule() != nil { scheduleType = models.LaunchPlanScheduleTypeCRON + launchConditionType = models.LaunchConditionTypeSCHED } else if launchPlan.Spec.EntityMetadata.Schedule.GetRate() != nil { scheduleType = models.LaunchPlanScheduleTypeRATE + launchConditionType = models.LaunchConditionTypeSCHED } } state := int32(initState) - return models.LaunchPlan{ + lpModel := models.LaunchPlan{ LaunchPlanKey: models.LaunchPlanKey{ Project: launchPlan.Id.Project, Domain: launchPlan.Id.Domain, @@ -64,7 +67,11 @@ func CreateLaunchPlanModel( WorkflowID: workflowRepoID, Digest: digest, ScheduleType: scheduleType, - }, nil + } + if launchConditionType != "" { + lpModel.LaunchConditionType = &launchConditionType + } + return lpModel, nil } // Transforms a LaunchPlanModel to a LaunchPlan diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 1adf1fa70c6..191143dd894 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -4273,10 +4273,11 @@ "SYSTEM", "RELAUNCH", "CHILD_WORKFLOW", - "RECOVERED" + "RECOVERED", + "TRIGGER" ], "default": "MANUAL", - "description": "The method by which this execution was launched.\n\n - MANUAL: The default execution mode, MANUAL implies that an execution was launched by an individual.\n - SCHEDULED: A schedule triggered this execution launch.\n - SYSTEM: A system process was responsible for launching this execution rather an individual.\n - RELAUNCH: This execution was launched with identical inputs as a previous execution.\n - CHILD_WORKFLOW: This execution was triggered by another execution.\n - RECOVERED: This execution was recovered from another execution." + "description": "The method by which this execution was launched.\n\n - MANUAL: The default execution mode, MANUAL implies that an execution was launched by an individual.\n - SCHEDULED: A schedule triggered this execution launch.\n - SYSTEM: A system process was responsible for launching this execution rather an individual.\n - RELAUNCH: This execution was launched with identical inputs as a previous execution.\n - CHILD_WORKFLOW: This execution was triggered by another execution.\n - RECOVERED: This execution was recovered from another execution.\n - TRIGGER: Execution was kicked off by the artifact trigger system" }, "IOStrategyDownloadMode": { "type": "string", @@ -6474,10 +6475,6 @@ "coreArtifactBindingData": { "type": "object", "properties": { - "index": { - "type": "integer", - "format": "int64" - }, "partition_key": { "type": "string" }, diff --git a/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts b/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts index 409a27d96f8..bce98af489c 100644 --- a/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts @@ -914,6 +914,13 @@ export enum ExecutionMetadata_ExecutionMode { * @generated from enum value: RECOVERED = 5; */ RECOVERED = 5, + + /** + * Execution was kicked off by the artifact trigger system + * + * @generated from enum value: TRIGGER = 6; + */ + TRIGGER = 6, } // Retrieve enum metadata with: proto3.getEnumType(ExecutionMetadata_ExecutionMode) proto3.util.setEnumType(ExecutionMetadata_ExecutionMode, "flyteidl.admin.ExecutionMetadata.ExecutionMode", [ @@ -923,6 +930,7 @@ proto3.util.setEnumType(ExecutionMetadata_ExecutionMode, "flyteidl.admin.Executi { no: 3, name: "RELAUNCH" }, { no: 4, name: "CHILD_WORKFLOW" }, { no: 5, name: "RECOVERED" }, + { no: 6, name: "TRIGGER" }, ]); /** diff --git a/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts index 2e03e3916f6..42d063161dd 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts @@ -69,11 +69,6 @@ export class ArtifactKey extends Message { * @generated from message flyteidl.core.ArtifactBindingData */ export class ArtifactBindingData extends Message { - /** - * @generated from field: uint32 index = 1; - */ - index = 0; - /** * These two fields are only relevant in the partition value case * @@ -108,7 +103,6 @@ export class ArtifactBindingData extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "flyteidl.core.ArtifactBindingData"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "index", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, { no: 2, name: "partition_key", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "partition_data" }, { no: 3, name: "bind_to_time_partition", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "partition_data" }, { no: 4, name: "transform", kind: "scalar", T: 9 /* ScalarType.STRING */ }, diff --git a/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go index 205ea0f3033..e288f658adb 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go @@ -89,6 +89,8 @@ const ( ExecutionMetadata_CHILD_WORKFLOW ExecutionMetadata_ExecutionMode = 4 // This execution was recovered from another execution. ExecutionMetadata_RECOVERED ExecutionMetadata_ExecutionMode = 5 + // Execution was kicked off by the artifact trigger system + ExecutionMetadata_TRIGGER ExecutionMetadata_ExecutionMode = 6 ) // Enum value maps for ExecutionMetadata_ExecutionMode. @@ -100,6 +102,7 @@ var ( 3: "RELAUNCH", 4: "CHILD_WORKFLOW", 5: "RECOVERED", + 6: "TRIGGER", } ExecutionMetadata_ExecutionMode_value = map[string]int32{ "MANUAL": 0, @@ -108,6 +111,7 @@ var ( "RELAUNCH": 3, "CHILD_WORKFLOW": 4, "RECOVERED": 5, + "TRIGGER": 6, } ) @@ -2113,7 +2117,7 @@ var file_flyteidl_admin_execution_proto_rawDesc = []byte{ 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, 0xf8, 0x04, 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 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, @@ -2146,166 +2150,167 @@ var file_flyteidl_admin_execution_proto_rawDesc = []byte{ 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, 0x67, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 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, 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, 0x90, 0x08, 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, 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, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 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, + 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, 0x90, 0x08, 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, 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, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x61, 0x67, 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, - 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, + 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, 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, + 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, 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, + 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, } var ( diff --git a/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go b/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go index 86cc4025eb7..7d692916a75 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go @@ -99,7 +99,6 @@ type ArtifactBindingData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // These two fields are only relevant in the partition value case // // Types that are assignable to PartitionData: @@ -143,13 +142,6 @@ func (*ArtifactBindingData) Descriptor() ([]byte, []int) { return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{1} } -func (x *ArtifactBindingData) GetIndex() uint32 { - if x != nil { - return x.Index - } - return 0 -} - func (m *ArtifactBindingData) GetPartitionData() isArtifactBindingData_PartitionData { if m != nil { return m.PartitionData @@ -708,102 +700,101 @@ var file_flyteidl_core_artifact_id_proto_rawDesc = []byte{ 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x41, 0x72, 0x74, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x22, 0xa3, 0x01, 0x0a, 0x13, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x0a, - 0x16, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x13, 0x62, 0x69, 0x6e, 0x64, 0x54, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x24, 0x0a, 0x10, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x22, 0x92, 0x02, 0x0a, 0x0a, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, - 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 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, 0x48, 0x00, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x74, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x74, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x46, - 0x0a, 0x0d, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x9d, 0x01, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x53, 0x0a, 0x0a, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x16, 0x62, 0x69, 0x6e, 0x64, 0x5f, + 0x74, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x13, 0x62, 0x69, 0x6e, 0x64, 0x54, + 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x10, 0x0a, 0x0e, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x24, + 0x0a, 0x10, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x76, 0x61, 0x72, 0x22, 0x92, 0x02, 0x0a, 0x0a, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 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, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x65, 0x64, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, + 0x64, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x0d, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, + 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9d, 0x01, 0x0a, 0x0a, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x53, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x40, 0x0a, 0x0d, 0x54, 0x69, 0x6d, + 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x40, 0x0a, 0x0d, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, - 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, - 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x0b, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x61, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x0d, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 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, - 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x61, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3e, 0x0a, - 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, - 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0xb5, 0x01, 0x0a, 0x11, - 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x42, 0x0f, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 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, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x0a, + 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, + 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, + 0x61, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, + 0x74, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, + 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 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, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, + 0x63, 0x74, 0x49, 0x44, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, + 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, + 0x74, 0x54, 0x61, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, + 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x07, + 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0xb5, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0f, 0x41, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 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 ( 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 1adf1fa70c6..191143dd894 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -4273,10 +4273,11 @@ "SYSTEM", "RELAUNCH", "CHILD_WORKFLOW", - "RECOVERED" + "RECOVERED", + "TRIGGER" ], "default": "MANUAL", - "description": "The method by which this execution was launched.\n\n - MANUAL: The default execution mode, MANUAL implies that an execution was launched by an individual.\n - SCHEDULED: A schedule triggered this execution launch.\n - SYSTEM: A system process was responsible for launching this execution rather an individual.\n - RELAUNCH: This execution was launched with identical inputs as a previous execution.\n - CHILD_WORKFLOW: This execution was triggered by another execution.\n - RECOVERED: This execution was recovered from another execution." + "description": "The method by which this execution was launched.\n\n - MANUAL: The default execution mode, MANUAL implies that an execution was launched by an individual.\n - SCHEDULED: A schedule triggered this execution launch.\n - SYSTEM: A system process was responsible for launching this execution rather an individual.\n - RELAUNCH: This execution was launched with identical inputs as a previous execution.\n - CHILD_WORKFLOW: This execution was triggered by another execution.\n - RECOVERED: This execution was recovered from another execution.\n - TRIGGER: Execution was kicked off by the artifact trigger system" }, "IOStrategyDownloadMode": { "type": "string", @@ -6474,10 +6475,6 @@ "coreArtifactBindingData": { "type": "object", "properties": { - "index": { - "type": "integer", - "format": "int64" - }, "partition_key": { "type": "string" }, 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 985b8acb99e..ff115cad219 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -837,10 +837,6 @@ "coreArtifactBindingData": { "type": "object", "properties": { - "index": { - "type": "integer", - "format": "int64" - }, "partition_key": { "type": "string" }, 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 5dd386c39c5..eda2434bcd4 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 @@ -167,10 +167,6 @@ "coreArtifactBindingData": { "type": "object", "properties": { - "index": { - "type": "integer", - "format": "int64" - }, "partition_key": { "type": "string" }, diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 03d2ac7c2f3..c876340a61d 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -78,9 +78,6 @@ export namespace flyteidl { /** Properties of an ArtifactBindingData. */ interface IArtifactBindingData { - /** ArtifactBindingData index */ - index?: (number|null); - /** ArtifactBindingData partitionKey */ partitionKey?: (string|null); @@ -100,9 +97,6 @@ export namespace flyteidl { */ constructor(properties?: flyteidl.core.IArtifactBindingData); - /** ArtifactBindingData index. */ - public index: number; - /** ArtifactBindingData partitionKey. */ public partitionKey: string; @@ -13693,7 +13687,8 @@ export namespace flyteidl { SYSTEM = 2, RELAUNCH = 3, CHILD_WORKFLOW = 4, - RECOVERED = 5 + RECOVERED = 5, + TRIGGER = 6 } } diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index a97bd6951f2..161d05475ba 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -201,7 +201,6 @@ * Properties of an ArtifactBindingData. * @memberof flyteidl.core * @interface IArtifactBindingData - * @property {number|null} [index] ArtifactBindingData index * @property {string|null} [partitionKey] ArtifactBindingData partitionKey * @property {boolean|null} [bindToTimePartition] ArtifactBindingData bindToTimePartition * @property {string|null} [transform] ArtifactBindingData transform @@ -222,14 +221,6 @@ this[keys[i]] = properties[keys[i]]; } - /** - * ArtifactBindingData index. - * @member {number} index - * @memberof flyteidl.core.ArtifactBindingData - * @instance - */ - ArtifactBindingData.prototype.index = 0; - /** * ArtifactBindingData partitionKey. * @member {string} partitionKey @@ -292,8 +283,6 @@ ArtifactBindingData.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.index != null && message.hasOwnProperty("index")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.index); if (message.partitionKey != null && message.hasOwnProperty("partitionKey")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.partitionKey); if (message.bindToTimePartition != null && message.hasOwnProperty("bindToTimePartition")) @@ -321,9 +310,6 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.index = reader.uint32(); - break; case 2: message.partitionKey = reader.string(); break; @@ -353,9 +339,6 @@ if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.index != null && message.hasOwnProperty("index")) - if (!$util.isInteger(message.index)) - return "index: integer expected"; if (message.partitionKey != null && message.hasOwnProperty("partitionKey")) { properties.partitionData = 1; if (!$util.isString(message.partitionKey)) @@ -33126,6 +33109,7 @@ case 3: case 4: case 5: + case 6: break; } if (message.principal != null && message.hasOwnProperty("principal")) @@ -33176,6 +33160,7 @@ * @property {number} RELAUNCH=3 RELAUNCH value * @property {number} CHILD_WORKFLOW=4 CHILD_WORKFLOW value * @property {number} RECOVERED=5 RECOVERED value + * @property {number} TRIGGER=6 TRIGGER value */ ExecutionMetadata.ExecutionMode = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -33185,6 +33170,7 @@ values[valuesById[3] = "RELAUNCH"] = 3; values[valuesById[4] = "CHILD_WORKFLOW"] = 4; values[valuesById[5] = "RECOVERED"] = 5; + values[valuesById[6] = "TRIGGER"] = 6; return values; })(); diff --git a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py index 918db78e564..4c2a628407b 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/execution_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\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\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\"\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\"\xf8\x04\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\"g\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\"V\n\x10NotificationList\x12\x42\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\"\x90\x08\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\x12\n\x04tags\x18\x18 \x03(\tR\x04tagsB\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\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\"\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\"\x90\x08\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\x12\n\x04tags\x18\x18 \x03(\tR\x04tagsB\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') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -51,8 +51,8 @@ _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=5409 - _globals['_EXECUTIONSTATE']._serialized_end=5471 + _globals['_EXECUTIONSTATE']._serialized_start=5422 + _globals['_EXECUTIONSTATE']._serialized_end=5484 _globals['_EXECUTIONCREATEREQUEST']._serialized_start=403 _globals['_EXECUTIONCREATEREQUEST']._serialized_end=617 _globals['_EXECUTIONRELAUNCHREQUEST']._serialized_start=620 @@ -76,29 +76,29 @@ _globals['_SYSTEMMETADATA']._serialized_start=2502 _globals['_SYSTEMMETADATA']._serialized_end=2593 _globals['_EXECUTIONMETADATA']._serialized_start=2596 - _globals['_EXECUTIONMETADATA']._serialized_end=3228 + _globals['_EXECUTIONMETADATA']._serialized_end=3241 _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_start=3125 - _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_end=3228 - _globals['_NOTIFICATIONLIST']._serialized_start=3230 - _globals['_NOTIFICATIONLIST']._serialized_end=3316 - _globals['_EXECUTIONSPEC']._serialized_start=3319 - _globals['_EXECUTIONSPEC']._serialized_end=4359 - _globals['_EXECUTIONTERMINATEREQUEST']._serialized_start=4361 - _globals['_EXECUTIONTERMINATEREQUEST']._serialized_end=4470 - _globals['_EXECUTIONTERMINATERESPONSE']._serialized_start=4472 - _globals['_EXECUTIONTERMINATERESPONSE']._serialized_end=4500 - _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_start=4502 - _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_end=4595 - _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_start=4598 - _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_end=4862 - _globals['_EXECUTIONUPDATEREQUEST']._serialized_start=4865 - _globals['_EXECUTIONUPDATEREQUEST']._serialized_end=5003 - _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_start=5006 - _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_end=5180 - _globals['_EXECUTIONUPDATERESPONSE']._serialized_start=5182 - _globals['_EXECUTIONUPDATERESPONSE']._serialized_end=5207 - _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_start=5209 - _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_end=5327 - _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_start=5329 - _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_end=5407 + _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_end=3241 + _globals['_NOTIFICATIONLIST']._serialized_start=3243 + _globals['_NOTIFICATIONLIST']._serialized_end=3329 + _globals['_EXECUTIONSPEC']._serialized_start=3332 + _globals['_EXECUTIONSPEC']._serialized_end=4372 + _globals['_EXECUTIONTERMINATEREQUEST']._serialized_start=4374 + _globals['_EXECUTIONTERMINATEREQUEST']._serialized_end=4483 + _globals['_EXECUTIONTERMINATERESPONSE']._serialized_start=4485 + _globals['_EXECUTIONTERMINATERESPONSE']._serialized_end=4513 + _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_start=4515 + _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_end=4608 + _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_start=4611 + _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_end=4875 + _globals['_EXECUTIONUPDATEREQUEST']._serialized_start=4878 + _globals['_EXECUTIONUPDATEREQUEST']._serialized_end=5016 + _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_start=5019 + _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_end=5193 + _globals['_EXECUTIONUPDATERESPONSE']._serialized_start=5195 + _globals['_EXECUTIONUPDATERESPONSE']._serialized_end=5220 + _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_start=5222 + _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_end=5340 + _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_start=5342 + _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_end=5420 # @@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 bee241d74db..c832b3a4299 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.pyi @@ -156,12 +156,14 @@ class ExecutionMetadata(_message.Message): RELAUNCH: _ClassVar[ExecutionMetadata.ExecutionMode] CHILD_WORKFLOW: _ClassVar[ExecutionMetadata.ExecutionMode] RECOVERED: _ClassVar[ExecutionMetadata.ExecutionMode] + TRIGGER: _ClassVar[ExecutionMetadata.ExecutionMode] MANUAL: ExecutionMetadata.ExecutionMode SCHEDULED: ExecutionMetadata.ExecutionMode SYSTEM: ExecutionMetadata.ExecutionMode RELAUNCH: ExecutionMetadata.ExecutionMode CHILD_WORKFLOW: ExecutionMetadata.ExecutionMode RECOVERED: ExecutionMetadata.ExecutionMode + TRIGGER: ExecutionMetadata.ExecutionMode MODE_FIELD_NUMBER: _ClassVar[int] PRINCIPAL_FIELD_NUMBER: _ClassVar[int] NESTING_FIELD_NUMBER: _ClassVar[int] diff --git a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py index 06e8ff7f81f..cffe1484c7f 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py @@ -15,7 +15,7 @@ from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x66lyteidl/core/artifact_id.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\"e\n\x0b\x41rtifactKey\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\x10\n\x03org\x18\x04 \x01(\tR\x03org\"\xb9\x01\n\x13\x41rtifactBindingData\x12\x14\n\x05index\x18\x01 \x01(\rR\x05index\x12%\n\rpartition_key\x18\x02 \x01(\tH\x00R\x0cpartitionKey\x12\x35\n\x16\x62ind_to_time_partition\x18\x03 \x01(\x08H\x00R\x13\x62indToTimePartition\x12\x1c\n\ttransform\x18\x04 \x01(\tR\ttransformB\x10\n\x0epartition_data\"$\n\x10InputBindingData\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\"\x92\x02\n\nLabelValue\x12#\n\x0cstatic_value\x18\x01 \x01(\tH\x00R\x0bstaticValue\x12;\n\ntime_value\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimeValue\x12Q\n\x11triggered_binding\x18\x03 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x10triggeredBinding\x12\x46\n\rinput_binding\x18\x04 \x01(\x0b\x32\x1f.flyteidl.core.InputBindingDataH\x00R\x0cinputBindingB\x07\n\x05value\"\x9d\x01\n\nPartitions\x12:\n\x05value\x18\x01 \x03(\x0b\x32$.flyteidl.core.Partitions.ValueEntryR\x05value\x1aS\n\nValueEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value:\x02\x38\x01\"@\n\rTimePartition\x12/\n\x05value\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xe5\x01\n\nArtifactID\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12\x39\n\npartitions\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.PartitionsR\npartitions\x12\x43\n\x0etime_partition\x18\x04 \x01(\x0b\x32\x1c.flyteidl.core.TimePartitionR\rtimePartition\"}\n\x0b\x41rtifactTag\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xf0\x01\n\rArtifactQuery\x12<\n\x0b\x61rtifact_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.ArtifactIDH\x00R\nartifactId\x12?\n\x0c\x61rtifact_tag\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactTagH\x00R\x0b\x61rtifactTag\x12\x12\n\x03uri\x18\x03 \x01(\tH\x00R\x03uri\x12>\n\x07\x62inding\x18\x04 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x07\x62indingB\x0c\n\nidentifierB\xb5\x01\n\x11\x63om.flyteidl.coreB\x0f\x41rtifactIdProtoP\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\x1f\x66lyteidl/core/artifact_id.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\"e\n\x0b\x41rtifactKey\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\x10\n\x03org\x18\x04 \x01(\tR\x03org\"\xa3\x01\n\x13\x41rtifactBindingData\x12%\n\rpartition_key\x18\x02 \x01(\tH\x00R\x0cpartitionKey\x12\x35\n\x16\x62ind_to_time_partition\x18\x03 \x01(\x08H\x00R\x13\x62indToTimePartition\x12\x1c\n\ttransform\x18\x04 \x01(\tR\ttransformB\x10\n\x0epartition_data\"$\n\x10InputBindingData\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\"\x92\x02\n\nLabelValue\x12#\n\x0cstatic_value\x18\x01 \x01(\tH\x00R\x0bstaticValue\x12;\n\ntime_value\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimeValue\x12Q\n\x11triggered_binding\x18\x03 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x10triggeredBinding\x12\x46\n\rinput_binding\x18\x04 \x01(\x0b\x32\x1f.flyteidl.core.InputBindingDataH\x00R\x0cinputBindingB\x07\n\x05value\"\x9d\x01\n\nPartitions\x12:\n\x05value\x18\x01 \x03(\x0b\x32$.flyteidl.core.Partitions.ValueEntryR\x05value\x1aS\n\nValueEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value:\x02\x38\x01\"@\n\rTimePartition\x12/\n\x05value\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xe5\x01\n\nArtifactID\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12\x39\n\npartitions\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.PartitionsR\npartitions\x12\x43\n\x0etime_partition\x18\x04 \x01(\x0b\x32\x1c.flyteidl.core.TimePartitionR\rtimePartition\"}\n\x0b\x41rtifactTag\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xf0\x01\n\rArtifactQuery\x12<\n\x0b\x61rtifact_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.ArtifactIDH\x00R\nartifactId\x12?\n\x0c\x61rtifact_tag\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactTagH\x00R\x0b\x61rtifactTag\x12\x12\n\x03uri\x18\x03 \x01(\tH\x00R\x03uri\x12>\n\x07\x62inding\x18\x04 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x07\x62indingB\x0c\n\nidentifierB\xb5\x01\n\x11\x63om.flyteidl.coreB\x0f\x41rtifactIdProtoP\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) @@ -29,21 +29,21 @@ _globals['_ARTIFACTKEY']._serialized_start=115 _globals['_ARTIFACTKEY']._serialized_end=216 _globals['_ARTIFACTBINDINGDATA']._serialized_start=219 - _globals['_ARTIFACTBINDINGDATA']._serialized_end=404 - _globals['_INPUTBINDINGDATA']._serialized_start=406 - _globals['_INPUTBINDINGDATA']._serialized_end=442 - _globals['_LABELVALUE']._serialized_start=445 - _globals['_LABELVALUE']._serialized_end=719 - _globals['_PARTITIONS']._serialized_start=722 - _globals['_PARTITIONS']._serialized_end=879 - _globals['_PARTITIONS_VALUEENTRY']._serialized_start=796 - _globals['_PARTITIONS_VALUEENTRY']._serialized_end=879 - _globals['_TIMEPARTITION']._serialized_start=881 - _globals['_TIMEPARTITION']._serialized_end=945 - _globals['_ARTIFACTID']._serialized_start=948 - _globals['_ARTIFACTID']._serialized_end=1177 - _globals['_ARTIFACTTAG']._serialized_start=1179 - _globals['_ARTIFACTTAG']._serialized_end=1304 - _globals['_ARTIFACTQUERY']._serialized_start=1307 - _globals['_ARTIFACTQUERY']._serialized_end=1547 + _globals['_ARTIFACTBINDINGDATA']._serialized_end=382 + _globals['_INPUTBINDINGDATA']._serialized_start=384 + _globals['_INPUTBINDINGDATA']._serialized_end=420 + _globals['_LABELVALUE']._serialized_start=423 + _globals['_LABELVALUE']._serialized_end=697 + _globals['_PARTITIONS']._serialized_start=700 + _globals['_PARTITIONS']._serialized_end=857 + _globals['_PARTITIONS_VALUEENTRY']._serialized_start=774 + _globals['_PARTITIONS_VALUEENTRY']._serialized_end=857 + _globals['_TIMEPARTITION']._serialized_start=859 + _globals['_TIMEPARTITION']._serialized_end=923 + _globals['_ARTIFACTID']._serialized_start=926 + _globals['_ARTIFACTID']._serialized_end=1155 + _globals['_ARTIFACTTAG']._serialized_start=1157 + _globals['_ARTIFACTTAG']._serialized_end=1282 + _globals['_ARTIFACTQUERY']._serialized_start=1285 + _globals['_ARTIFACTQUERY']._serialized_end=1525 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi index 5eacdbb52ff..e1e688c8e4c 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi @@ -20,16 +20,14 @@ class ArtifactKey(_message.Message): def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., name: _Optional[str] = ..., org: _Optional[str] = ...) -> None: ... class ArtifactBindingData(_message.Message): - __slots__ = ["index", "partition_key", "bind_to_time_partition", "transform"] - INDEX_FIELD_NUMBER: _ClassVar[int] + __slots__ = ["partition_key", "bind_to_time_partition", "transform"] PARTITION_KEY_FIELD_NUMBER: _ClassVar[int] BIND_TO_TIME_PARTITION_FIELD_NUMBER: _ClassVar[int] TRANSFORM_FIELD_NUMBER: _ClassVar[int] - index: int partition_key: str bind_to_time_partition: bool transform: str - def __init__(self, index: _Optional[int] = ..., partition_key: _Optional[str] = ..., bind_to_time_partition: bool = ..., transform: _Optional[str] = ...) -> None: ... + def __init__(self, partition_key: _Optional[str] = ..., bind_to_time_partition: bool = ..., transform: _Optional[str] = ...) -> None: ... class InputBindingData(_message.Message): __slots__ = ["var"] diff --git a/flyteidl/gen/pb_rust/flyteidl.admin.rs b/flyteidl/gen/pb_rust/flyteidl.admin.rs index c8caad6d244..7205966c770 100644 --- a/flyteidl/gen/pb_rust/flyteidl.admin.rs +++ b/flyteidl/gen/pb_rust/flyteidl.admin.rs @@ -1309,6 +1309,8 @@ pub mod execution_metadata { ChildWorkflow = 4, /// This execution was recovered from another execution. Recovered = 5, + /// Execution was kicked off by the artifact trigger system + Trigger = 6, } impl ExecutionMode { /// String value of the enum field names used in the ProtoBuf definition. @@ -1323,6 +1325,7 @@ pub mod execution_metadata { ExecutionMode::Relaunch => "RELAUNCH", ExecutionMode::ChildWorkflow => "CHILD_WORKFLOW", ExecutionMode::Recovered => "RECOVERED", + ExecutionMode::Trigger => "TRIGGER", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -1334,6 +1337,7 @@ pub mod execution_metadata { "RELAUNCH" => Some(Self::Relaunch), "CHILD_WORKFLOW" => Some(Self::ChildWorkflow), "RECOVERED" => Some(Self::Recovered), + "TRIGGER" => Some(Self::Trigger), _ => None, } } diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index 63a1d3f7264..07973186b48 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -730,8 +730,6 @@ pub struct ArtifactKey { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ArtifactBindingData { - #[prost(uint32, tag="1")] - pub index: u32, /// This is only relevant in the time partition case #[prost(string, tag="4")] pub transform: ::prost::alloc::string::String, diff --git a/flyteidl/protos/flyteidl/admin/execution.proto b/flyteidl/protos/flyteidl/admin/execution.proto index f3dbad3fb3d..a46d6efdd37 100644 --- a/flyteidl/protos/flyteidl/admin/execution.proto +++ b/flyteidl/protos/flyteidl/admin/execution.proto @@ -221,6 +221,9 @@ message ExecutionMetadata { // This execution was recovered from another execution. RECOVERED = 5; + + // Execution was kicked off by the artifact trigger system + TRIGGER = 6; } ExecutionMode mode = 1; diff --git a/flyteidl/protos/flyteidl/core/artifact_id.proto b/flyteidl/protos/flyteidl/core/artifact_id.proto index 11efd831608..fe887e336a9 100644 --- a/flyteidl/protos/flyteidl/core/artifact_id.proto +++ b/flyteidl/protos/flyteidl/core/artifact_id.proto @@ -18,8 +18,6 @@ message ArtifactKey { // Only valid for triggers message ArtifactBindingData { - uint32 index = 1; - // These two fields are only relevant in the partition value case oneof partition_data { string partition_key = 2; From eaac04d0a3b72a3182500642478d607b79de0885 Mon Sep 17 00:00:00 2001 From: Dan Rammer Date: Wed, 28 Feb 2024 08:40:14 -0600 Subject: [PATCH 045/107] not setting IsParent on ArrayNode unless new eventing scheme (#4967) Signed-off-by: Daniel Rammer --- flyteadmin/pkg/repositories/transformers/node_execution.go | 2 +- flytepropeller/pkg/controller/nodes/transformers.go | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/flyteadmin/pkg/repositories/transformers/node_execution.go b/flyteadmin/pkg/repositories/transformers/node_execution.go index 59ea230f7e1..817f53290ac 100644 --- a/flyteadmin/pkg/repositories/transformers/node_execution.go +++ b/flyteadmin/pkg/repositories/transformers/node_execution.go @@ -284,7 +284,7 @@ func UpdateNodeExecutionModel( // In the case of dynamic nodes reporting DYNAMIC_RUNNING, the IsParent and IsDynamic bits will be set for this event. // Update the node execution metadata accordingly. - if request.Event.IsParent || request.Event.IsDynamic { + if request.Event.IsParent || request.Event.IsDynamic || request.Event.IsArray { var nodeExecutionMetadata admin.NodeExecutionMetaData if len(nodeExecutionModel.NodeExecutionMetadata) > 0 { if err := proto.Unmarshal(nodeExecutionModel.NodeExecutionMetadata, &nodeExecutionMetadata); err != nil { diff --git a/flytepropeller/pkg/controller/nodes/transformers.go b/flytepropeller/pkg/controller/nodes/transformers.go index eb96a38d9c4..b034c5b90f5 100644 --- a/flytepropeller/pkg/controller/nodes/transformers.go +++ b/flytepropeller/pkg/controller/nodes/transformers.go @@ -178,8 +178,10 @@ func ToNodeExecutionEvent(nodeExecID *core.NodeExecutionIdentifier, if node.GetKind() == v1alpha1.NodeKindWorkflow && node.GetWorkflowNode() != nil && node.GetWorkflowNode().GetSubWorkflowRef() != nil { nev.IsParent = true } else if node.GetKind() == v1alpha1.NodeKindArray { - nev.IsParent = true nev.IsArray = true + if config.GetConfig().ArrayNodeEventVersion == 1 { + nev.IsParent = true + } } else if dynamicNodePhase != v1alpha1.DynamicNodePhaseNone { nev.IsDynamic = true if nev.GetTaskNodeMetadata() != nil && nev.GetTaskNodeMetadata().DynamicWorkflow != nil { From d0d1b7f14ad0dee7f74e243e4ab6f5f768e62474 Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Wed, 28 Feb 2024 10:10:12 -0600 Subject: [PATCH 046/107] Add failure node example from flytesnacks #1328 (#4958) * add failure node example from https://github.com/flyteorg/flytesnacks/pull/1328 Signed-off-by: nikki everett * fix formatting and index toc Signed-off-by: nikki everett * copy edits Signed-off-by: nikki everett --------- Signed-off-by: nikki everett --- .../development_lifecycle/failure_node.md | 89 +++++++++++++++++++ .../user_guide/development_lifecycle/index.md | 1 + 2 files changed, 90 insertions(+) create mode 100644 docs/user_guide/development_lifecycle/failure_node.md diff --git a/docs/user_guide/development_lifecycle/failure_node.md b/docs/user_guide/development_lifecycle/failure_node.md new file mode 100644 index 00000000000..61756e4a8a3 --- /dev/null +++ b/docs/user_guide/development_lifecycle/failure_node.md @@ -0,0 +1,89 @@ +(failure_node)= +# Failure node + +```{eval-rst} + .. tags:: FailureNode, Intermediate +``` + +The failure node feature enables you to designate a specific node to execute in the event of a failure within your workflow. + +For example, a workflow involves creating a cluster at the beginning, followed by the execution of tasks, and concludes with the deletion of the cluster once all tasks are completed. However, if any task within the workflow encounters an error, flyte will abort the entire workflow and won’t delete the cluster. This poses a challenge if you still need to clean up the cluster even in a task failure. + +To address this issue, you can add a failure node into your workflow. This ensures that critical actions, such as deleting the cluster, are executed even in the event of failures occurring throughout the workflow execution: + +```python +from flytekit import WorkflowFailurePolicy, task, workflow + + +@task +def create_cluster(name: str): + print(f"Creating cluster: {name}") + +``` + +Create a task that will fail during execution: + +```python +@task +def t1(a: int, b: str): + print(f"{a} {b}") + raise ValueError("Fail!") + + +@task +def delete_cluster(name: str): + print(f"Deleting cluster {name}") +``` + +Create a task that will be executed if any of the tasks in the workflow fail: + +```python +@task +def clean_up(name: str): + print(f"Cleaning up cluster {name}") + +``` + +Specify the `on_failure` to a cleanup task. This task will be executed if any of the tasks in the workflow fail: + + +:::{note} +The input of `clean_up` should be the exact same as the input of the workflow. +::: + +```python +@workflow(on_failure=clean_up) +def subwf(name: str): + c = create_cluster(name=name) + t = t1(a=1, b="2") + d = delete_cluster(name=name) + c >> t >> d +``` + +By setting the failure policy to `FAIL_AFTER_EXECUTABLE_NODES_COMPLETE` to ensure that the `wf1` is executed even if the subworkflow fails. In this case, both parent and child workflows will fail, resulting in the `clean_up` task being executed twice: + +```python +@workflow(on_failure=clean_up, failure_policy=WorkflowFailurePolicy.FAIL_AFTER_EXECUTABLE_NODES_COMPLETE) +def wf1(name: str = "my_cluster"): + c = create_cluster(name=name) + subwf(name="another_cluster") + t = t1(a=1, b="2") + d = delete_cluster(name=name) + c >> t >> d + + +@workflow +def clean_up_wf(name: str): + return clean_up(name=name) +``` + +You can also set the `on_failure` to a workflow. This workflow will be executed if any of the tasks in the workflow fail: + +```python +@workflow(on_failure=clean_up_wf) +def wf2(name: str = "my_cluster"): + c = create_cluster(name=name) + t = t1(a=1, b="2") + d = delete_cluster(name=name) + c >> t >> d +``` diff --git a/docs/user_guide/development_lifecycle/index.md b/docs/user_guide/development_lifecycle/index.md index 693740c661f..8c21abc2914 100644 --- a/docs/user_guide/development_lifecycle/index.md +++ b/docs/user_guide/development_lifecycle/index.md @@ -13,6 +13,7 @@ private_images caching cache_serializing decks +failure_node creating_a_new_project running_tasks running_workflows From 971c5ad4b13d2a532cea67539456d8aa67e1f949 Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Wed, 28 Feb 2024 10:18:03 -0800 Subject: [PATCH 047/107] [DOC] Update agent API (#4943) * [DOC] Update agnet API Signed-off-by: Kevin Su * nit Signed-off-by: Kevin Su * nit Signed-off-by: Kevin Su * Apply suggestions from code review Co-authored-by: Future-Outlier Signed-off-by: Nikki Everett --------- Signed-off-by: Kevin Su Signed-off-by: Nikki Everett Signed-off-by: nikki everett Co-authored-by: Nikki Everett Co-authored-by: Future-Outlier Co-authored-by: nikki everett --- docs/flyte_agents/developing_agents.md | 79 +++++++++++---------- docs/flyte_agents/testing_agents_locally.md | 41 +++++++++-- 2 files changed, 77 insertions(+), 43 deletions(-) diff --git a/docs/flyte_agents/developing_agents.md b/docs/flyte_agents/developing_agents.md index 688f2418522..ba114be6c7c 100644 --- a/docs/flyte_agents/developing_agents.md +++ b/docs/flyte_agents/developing_agents.md @@ -31,67 +31,70 @@ While agents can be written in any programming language, we currently only suppo ## Async agent interface specification -To create a new async agent, extend the `AgentBase` class in the `flytekit.backend` module and implement `create`, `get`, and `delete` methods. All calls must be idempotent. +To create a new async agent, extend the `AsyncAgentBase` and implement `create`, `get`, and `delete` methods. These methods must be idempotent. - `create`: This method is used to initiate a new job. Users have the flexibility to use gRPC, REST, or an SDK to create a job. - `get`: This method retrieves the job resource (jobID or output literal) associated with the task, such as a BigQuery job ID or Databricks task ID. - `delete`: Invoking this method will send a request to delete the corresponding job. ```python -from flytekit.extend.backend.base_agent import AgentBase, AgentRegistry +from flytekit.extend.backend.base_agent import AsyncAgentBase, AgentRegistry, Resource +from flytekit import StructuredDataset from dataclasses import dataclass -import requests @dataclass -class Metadata: - # FlytePropeller will pass the metadata specified in this class to the agent. - # For example, if you add job_id to the metadata, the agent will use the job_id to get the job status. - # If you add s3 file path, the agent will check if the file exists. +class BigQueryMetadata(ResourceMeta): + """ + This is the metadata for the job. For example, the id of the job. + """ job_id: str -class CustomAsyncAgent(AsyncAgentBase): - def __init__(self, task_type: str): - # Each agent should have a unique task type. - # The Flyte agent service will use the task type - # to find the corresponding agent. - self._task_type = task_type +class BigQueryAgent(AsyncAgentBase): + def __init__(self): + super().__init__(task_type_name="bigquery", metadata_type=BigQueryMetadata) def create( self, - output_prefix: str, task_template: TaskTemplate, inputs: typing.Optional[LiteralMap] = None, **kwargs, - ) -> TaskCreateResponse: - # 1. Submit the task to the external service (BigQuery, DataBricks, etc.) - # 2. Create metadata for the task, such as jobID. - # 3. Return the metadata, serialized to bytes. - res = requests.post(url, json=data) - return CreateTaskResponse(resource_meta=json.dumps(asdict(Metadata(job_id=str(res.job_id)))).encode("utf-8")) - - def get(self, resource_meta: bytes, **kwargs) -> TaskGetResponse: - # 1. Deserialize the metadata. - # 2. Use the metadata to get the job status. - # 3. Return the job status. - metadata = Metadata(**json.loads(resource_meta.decode("utf-8"))) - res = requests.get(url, json={"job_id": metadata.job_id}) - return GetTaskResponse(resource=Resource(state=res.state) - - def delete(self, resource_meta: bytes, **kwargs) -> TaskDeleteResponse: - # 1. Deserialize the metadata. - # 2. Use the metadata to delete the job. - metadata = Metadata(**json.loads(resource_meta.decode("utf-8"))) - requests.delete(url, json={"job_id": metadata.job_id}) - return DeleteTaskResponse() + ) -> BigQueryMetadata: + # Submit the job to BigQuery here. + return BigQueryMetadata(job_id=job_id, outputs={"o0": StructuredDataset(uri=result_table_uri))} + + def get(self, resource_meta: BigQueryMetadata, **kwargs) -> Resource: + # Get the job status from BigQuery. + return Resource(phase=res.phase) + + def delete(self, resource_meta: BigQueryMetadata, **kwargs): + # Delete the job from BigQuery. + ... # To register the custom agent -AgentRegistry.register(CustomAsyncAgent()) +AgentRegistry.register(BigQueryAgent()) ``` For an example implementation, see the [BigQuery agent](https://github.com/flyteorg/flytekit/blob/master/plugins/flytekit-bigquery/flytekitplugins/bigquery/agent.py#L43). -```{note} +## Sync agent interface specification + +To create a new sync agent, extend the `SyncAgentBase` class and implement a `do` method. This method must be idempotent. + +- `do`: This method is used to execute the synchronous task, and the worker in Flyte will be blocked until the method returns. + +```python +from flytekit.extend.backend.base_agent import SyncAgentBase, AgentRegistry, Resource + +class OpenAIAgent(SyncAgentBase): + def __init__(self): + super().__init__(task_type_name="openai") -To contribute + def do(self, task_template: TaskTemplate, inputs: Optional[LiteralMap], **kwargs) -> Resource: + # Convert the literal map to python value. + ctx = FlyteContextManager.current_context() + python_inputs = TypeEngine.literal_map_to_kwargs(ctx, inputs, literal_types=task_template.interface.inputs) + # Call the OpenAI API here. + return Resource(phase=phaseTaskExecution.SUCCEEDED, outputs={"o0": "Hello world!"}) +AgentRegistry.register(OpenAIAgent()) ``` diff --git a/docs/flyte_agents/testing_agents_locally.md b/docs/flyte_agents/testing_agents_locally.md index 7874d0bca1f..2d7b98ba3ea 100644 --- a/docs/flyte_agents/testing_agents_locally.md +++ b/docs/flyte_agents/testing_agents_locally.md @@ -15,7 +15,7 @@ To test an agent locally, create a class for the agent task that inherits from [ ## BigQuery example -To test the BigQuery example, copy the following code to a file called `wf.py`, modifying as needed. +To test the BigQuery agent, copy the following code to a file called `bigquery_task.py`, modifying as needed. ```{note} @@ -24,14 +24,15 @@ For example, you need to set the `GOOGLE_APPLICATION_CREDENTIALS` environment va ``` +Add `AsyncAgentExecutorMixin` to this class to tell flytekit to use the agent to run the task. ```python class BigQueryTask(AsyncAgentExecutorMixin, SQLTask[BigQueryConfig]): def __init__(self, name: str, **kwargs): ... +``` - -# Instantiate the task class. Flytekit will automatically call the agent -# to `create`, `get`, or `delete` the job. +Flytekit will automatically use the agent to run the task in the local execution. +```python bigquery_doge_coin = BigQueryTask( name=f"bigquery.doge_coin", inputs=kwtypes(version=int), @@ -44,5 +45,35 @@ bigquery_doge_coin = BigQueryTask( You can run the above example task locally and test the agent with the following command: ```bash -pyflyte run wf.py bigquery_doge_coin --version 10 +pyflyte run bigquery_task.py bigquery_doge_coin --version 10 +``` + +## Databricks example +To test the Databricks agent, copy the following code to a file called `databricks_task.py`, modifying as needed. + +```python +@task(task_config=Databricks(...)) +def hello_spark(partitions: int) -> float: + print("Starting Spark with Partitions: {}".format(partitions)) + + n = 100000 * partitions + sess = flytekit.current_context().spark_session + count = ( + sess.sparkContext.parallelize(range(1, n + 1), partitions).map(f).reduce(add) + ) + pi_val = 4.0 * count / n + print("Pi val is :{}".format(pi_val)) + return pi_val +``` + +To execute the Spark task on the agent, you must configure the `raw-output-data-prefix` with a remote path. +This configuration ensures that flytekit transfers the input data to the blob storage and allows the Spark job running on Databricks to access the input data directly from the designated bucket. + +```{note} +The Spark task will run locally if the `raw-output-data-prefix` is not set. +``` + +```bash +pyflyte run --raw-output-data-prefix s3://my-s3-bucket/databricks databricks_task.py hello_spark ``` + From e1d5a7ae3de8dba381661dd8c31721387380af30 Mon Sep 17 00:00:00 2001 From: Yee Hing Tong Date: Wed, 28 Feb 2024 15:44:34 -0800 Subject: [PATCH 048/107] add mux option for application/json (#4976) * add mux option for application/json Signed-off-by: Yee Hing Tong * Emit unpopulated and default values Signed-off-by: Eduardo Apolinario * Add comment Signed-off-by: Eduardo Apolinario --------- Signed-off-by: Yee Hing Tong Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- flyteadmin/pkg/server/service.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/flyteadmin/pkg/server/service.go b/flyteadmin/pkg/server/service.go index 07eb1938836..d51f1c4f312 100644 --- a/flyteadmin/pkg/server/service.go +++ b/flyteadmin/pkg/server/service.go @@ -4,6 +4,7 @@ import ( "context" "crypto/tls" "fmt" + "google.golang.org/protobuf/encoding/protojson" "net" "net/http" "strings" @@ -201,6 +202,19 @@ func newHTTPServer(ctx context.Context, pluginRegistry *plugins.Registry, cfg *c var gwmuxOptions = make([]runtime.ServeMuxOption, 0) // This option means that http requests are served with protobufs, instead of json. We always want this. gwmuxOptions = append(gwmuxOptions, runtime.WithMarshalerOption("application/octet-stream", &runtime.ProtoMarshaller{})) + // grpc-gateway v2 switched the marshaller used to encode JSON messages in 2.5.0. This changed the + // default encoding from snake_case (the v1 behavior) to lowerCamelCase, which is the case recommended + // by protobuf. However the protobuf docs do mention that JSON printers may provide a way to use + // the proto names as field names instead. This option in grpc-gateway v2 does just that, + // by setting a custom marshaler. We are enabling this narrowly however, by applying it only for + // the application/json content type. + gwmuxOptions = append(gwmuxOptions, runtime.WithMarshalerOption("application/json", &runtime.JSONPb{ + MarshalOptions: protojson.MarshalOptions{ + UseProtoNames: true, + EmitUnpopulated: true, + EmitDefaultValues: true, + }, + })) // This option sets subject in the user info response gwmuxOptions = append(gwmuxOptions, runtime.WithForwardResponseOption(auth.GetUserInfoForwardResponseHandler())) From 2cc916986316cccc8a27929efd831ad1f01af88e Mon Sep 17 00:00:00 2001 From: Chi-Sheng Liu Date: Thu, 29 Feb 2024 08:40:19 +0800 Subject: [PATCH 049/107] docs(troubleshooting): Add spark task execution troubleshooting (#4974) When executing spark test, if the spark plugin enabled in the config file, then it will show 'JavaPackage' object is not callable error. Which is difficult to know from this error message, so add it to the troubleshooting guide. Resolves: flyteorg/flyte#4826 Signed-off-by: Chi-Sheng Liu --- docs/community/troubleshoot.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/community/troubleshoot.rst b/docs/community/troubleshoot.rst index b4f6c271d4c..1228b5f5a0f 100644 --- a/docs/community/troubleshoot.rst +++ b/docs/community/troubleshoot.rst @@ -133,3 +133,21 @@ Example output: $ kubectl annotate serviceaccount -n eks.amazonaws.com/role-arn=arn:aws:iam::xxxx:role/ - Refer to this community-maintained `guides `_ for further information about Flyte deployment on EKS + +``FlyteScopedUserException: 'JavaPackage' object is not callable`` when running a Spark task +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Please add ``spark`` to the list of `enabled-plugins` in the config yaml file. For example, + +.. code-block:: yaml + + tasks: + task-plugins: + enabled-plugins: + - container + - sidecar + - K8S-ARRAY + - spark + default-for-task-types: + - container: container + - container_array: K8S-ARRAY From 1caa754fa81fdfca7a11d1a74c7ca2fa3a2ecafb Mon Sep 17 00:00:00 2001 From: Yee Hing Tong Date: Wed, 28 Feb 2024 19:48:09 -0800 Subject: [PATCH 050/107] also run dep update (#4977) Signed-off-by: Yee Hing Tong --- docker/sandbox-bundled/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/sandbox-bundled/Makefile b/docker/sandbox-bundled/Makefile index 89468868403..d2ec89de8ba 100644 --- a/docker/sandbox-bundled/Makefile +++ b/docker/sandbox-bundled/Makefile @@ -22,7 +22,7 @@ dep_update: helm dependency update ../../charts/flyte-sandbox .PHONY: manifests -manifests: +manifests: dep_update mkdir -p manifests kustomize build \ --enable-helm \ From a2a63eb893bdff3c2d1a01242d0d25b73f287b1f Mon Sep 17 00:00:00 2001 From: Flyte Bot Date: Wed, 28 Feb 2024 21:24:39 -0800 Subject: [PATCH 051/107] Update Flyte components (#4980) Signed-off-by: Flyte-Bot --------- Signed-off-by: Flyte-Bot Co-authored-by: wild-endeavor --- CHANGELOG/CHANGELOG-v1.11.0-b0.md | 3 ++ charts/flyte-binary/README.md | 2 +- charts/flyte-binary/values.yaml | 2 +- charts/flyte-core/README.md | 14 ++++---- charts/flyte-core/values.yaml | 12 +++---- charts/flyte/README.md | 18 +++++----- charts/flyte/values.yaml | 12 +++---- charts/flyteagent/README.md | 2 +- charts/flyteagent/values.yaml | 2 +- .../agent/flyte_agent_helm_generated.yaml | 2 +- .../flyte_aws_scheduler_helm_generated.yaml | 32 ++++++++--------- deployment/eks/flyte_generated.yaml | 24 ++++++------- .../flyte_helm_controlplane_generated.yaml | 22 ++++++------ .../eks/flyte_helm_dataplane_generated.yaml | 14 ++++---- deployment/eks/flyte_helm_generated.yaml | 36 +++++++++---------- .../flyte_helm_controlplane_generated.yaml | 22 ++++++------ .../gcp/flyte_helm_dataplane_generated.yaml | 14 ++++---- deployment/gcp/flyte_helm_generated.yaml | 36 +++++++++---------- .../flyte_sandbox_binary_helm_generated.yaml | 4 +-- deployment/sandbox/flyte_helm_generated.yaml | 36 +++++++++---------- .../manifests/complete-agent.yaml | 10 +++--- .../sandbox-bundled/manifests/complete.yaml | 8 ++--- docker/sandbox-bundled/manifests/dev.yaml | 4 +-- docs/conf.py | 2 +- .../generated/flytepropeller_config.rst | 19 ++++++++-- kustomize/overlays/eks/kustomization.yaml | 10 +++--- 26 files changed, 189 insertions(+), 173 deletions(-) create mode 100644 CHANGELOG/CHANGELOG-v1.11.0-b0.md diff --git a/CHANGELOG/CHANGELOG-v1.11.0-b0.md b/CHANGELOG/CHANGELOG-v1.11.0-b0.md new file mode 100644 index 00000000000..4d5e5ccb144 --- /dev/null +++ b/CHANGELOG/CHANGELOG-v1.11.0-b0.md @@ -0,0 +1,3 @@ +# Flyte v1.11.0-b0 + +Beta release to test new idl \ No newline at end of file diff --git a/charts/flyte-binary/README.md b/charts/flyte-binary/README.md index 9d1c3ddb549..99aa1c40b13 100644 --- a/charts/flyte-binary/README.md +++ b/charts/flyte-binary/README.md @@ -42,7 +42,7 @@ Chart for basic single Flyte executable deployment | configuration.auth.oidc.clientId | string | `""` | | | configuration.auth.oidc.clientSecret | string | `""` | | | configuration.co-pilot.image.repository | string | `"cr.flyte.org/flyteorg/flytecopilot"` | | -| configuration.co-pilot.image.tag | string | `"v1.10.7"` | | +| configuration.co-pilot.image.tag | string | `"v1.11.0-b0"` | | | configuration.database.dbname | string | `"flyte"` | | | configuration.database.host | string | `"127.0.0.1"` | | | configuration.database.options | string | `"sslmode=disable"` | | diff --git a/charts/flyte-binary/values.yaml b/charts/flyte-binary/values.yaml index 3b95aed614b..0da15a1855a 100644 --- a/charts/flyte-binary/values.yaml +++ b/charts/flyte-binary/values.yaml @@ -159,7 +159,7 @@ configuration: # repository CoPilot sidecar image repository repository: cr.flyte.org/flyteorg/flytecopilot # FLYTECOPILOT_IMAGE # tag CoPilot sidecar image tag - tag: v1.10.7 # FLYTECOPILOT_TAG + tag: v1.11.0-b0 # FLYTECOPILOT_TAG # agentService Flyte Agent configuration agentService: defaultAgent: diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index ea4435945dc..73b5fceae5f 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -94,8 +94,8 @@ helm install gateway bitnami/contour -n flyte | configmap.clusters.clusterConfigs | list | `[]` | | | configmap.clusters.labelClusterMap | object | `{}` | | | configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | configmap.core | object | `{"manager":{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"},"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | configmap.core.manager | object | `{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/manager/config#Config). | | configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | @@ -129,7 +129,7 @@ helm install gateway bitnami/contour -n flyte | datacatalog.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| datacatalog.image.tag | string | `"v1.10.7"` | Docker image tag | +| datacatalog.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | datacatalog.podEnv | object | `{}` | Additional Datacatalog container environment variables | @@ -164,7 +164,7 @@ helm install gateway bitnami/contour -n flyte | flyteadmin.extraArgs | object | `{}` | Appends extra command line arguments to the serve command | | flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | | | flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyteadmin.image.tag | string | `"v1.10.7"` | | +| flyteadmin.image.tag | string | `"v1.11.0-b0"` | | | flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -201,7 +201,7 @@ helm install gateway bitnami/contour -n flyte | flyteconsole.ga.tracking_id | string | `"G-0QW4DJWJ20"` | | | flyteconsole.image.pullPolicy | string | `"IfNotPresent"` | | | flyteconsole.image.repository | string | `"cr.flyte.org/flyteorg/flyteconsole"` | Docker image for Flyteconsole deployment | -| flyteconsole.image.tag | string | `"v1.10.2"` | | +| flyteconsole.image.tag | string | `"v1.10.3"` | | | flyteconsole.imagePullSecrets | list | `[]` | ImagePullSecrets to assign to the Flyteconsole deployment | | flyteconsole.nodeSelector | object | `{}` | nodeSelector for Flyteconsole deployment | | flyteconsole.podAnnotations | object | `{}` | Annotations for Flyteconsole pods | @@ -225,7 +225,7 @@ helm install gateway bitnami/contour -n flyte | flytepropeller.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | | | flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flytepropeller.image.tag | string | `"v1.10.7"` | | +| flytepropeller.image.tag | string | `"v1.11.0-b0"` | | | flytepropeller.manager | bool | `false` | | | flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | @@ -255,7 +255,7 @@ helm install gateway bitnami/contour -n flyte | flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flytescheduler.image.tag | string | `"v1.10.7"` | Docker image tag | +| flytescheduler.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flytescheduler.podEnv | object | `{}` | Additional Flytescheduler container environment variables | diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index 36e2b87eaa8..c104af3e758 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -16,7 +16,7 @@ flyteadmin: image: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE - tag: v1.10.7 # FLYTEADMIN_TAG + tag: v1.11.0-b0 # FLYTEADMIN_TAG pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables # @@ -142,7 +142,7 @@ flytescheduler: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.10.7 # FLYTESCHEDULER_TAG + tag: v1.11.0-b0 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -208,7 +208,7 @@ datacatalog: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.10.7 # DATACATALOG_TAG + tag: v1.11.0-b0 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -296,7 +296,7 @@ flytepropeller: image: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE - tag: v1.10.7 # FLYTEPROPELLER_TAG + tag: v1.11.0-b0 # FLYTEPROPELLER_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment resources: @@ -379,7 +379,7 @@ flyteconsole: image: # -- Docker image for Flyteconsole deployment repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE - tag: v1.10.2 # FLYTECONSOLE_TAG + tag: v1.10.3 # FLYTECONSOLE_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flyteconsole deployment resources: @@ -725,7 +725,7 @@ configmap: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/charts/flyte/README.md b/charts/flyte/README.md index 59113be64b7..0bce53a417c 100644 --- a/charts/flyte/README.md +++ b/charts/flyte/README.md @@ -71,7 +71,7 @@ helm upgrade -f values-sandbox.yaml flyte . | contour.tolerations | list | `[]` | tolerations for Contour deployment | | daskoperator | object | `{"enabled":false}` | Optional: Dask Plugin using the Dask Operator | | daskoperator.enabled | bool | `false` | - enable or disable the dask operator deployment installation | -| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.10.7"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.10.7"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.2"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.10.7"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.10.7"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | +| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.11.0-b0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.11.0-b0"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.3"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.11.0-b0"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.11.0-b0"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | | flyte.cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | | flyte.cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. | | flyte.cluster_resource_manager.config.cluster_resources.standaloneDeployment | bool | `false` | Starts the cluster resource manager in standalone mode with requisite auth credentials to call flyteadmin service endpoints | @@ -91,15 +91,15 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.common.ingress.separateGrpcIngressAnnotations | object | `{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"}` | - Extra Ingress annotations applied only to the GRPC ingress. Only makes sense if `separateGrpcIngress` is enabled. | | flyte.common.ingress.tls | object | `{"enabled":false}` | - TLS Settings | | flyte.common.ingress.webpackHMR | bool | `true` | - Enable or disable HMR route to flyteconsole. This is useful only for frontend development. | -| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | +| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | | flyte.configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration | | flyte.configmap.adminServer.auth | object | `{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}}` | Authentication configuration | | flyte.configmap.adminServer.server.security.secure | bool | `false` | Controls whether to serve requests over SSL/TLS. | | flyte.configmap.adminServer.server.security.useAuth | bool | `false` | Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. | | flyte.configmap.catalog | object | `{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}}` | Catalog Client configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/catalog#Config) Additional advanced Catalog configuration [here](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/catalog#Config) | | flyte.configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.10.7","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | flyte.configmap.core | object | `{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | flyte.configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | | flyte.configmap.datacatalogServer | object | `{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config | @@ -120,7 +120,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.datacatalog.configPath | string | `"/etc/datacatalog/config/*.yaml"` | Default regex string for searching configuration files | | flyte.datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| flyte.datacatalog.image.tag | string | `"v1.10.7"` | Docker image tag | +| flyte.datacatalog.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flyte.datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | flyte.datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | flyte.datacatalog.replicaCount | int | `1` | Replicas count for Datacatalog deployment | @@ -136,7 +136,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flyteadmin.env | list | `[]` | Additional flyteadmin container environment variables e.g. SendGrid's API key - name: SENDGRID_API_KEY value: "" e.g. secret environment variable (you can combine it with .additionalVolumes): - name: SENDGRID_API_KEY valueFrom: secretKeyRef: name: sendgrid-secret key: api_key | | flyte.flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyte.flyteadmin.image.tag | string | `"v1.10.7"` | Docker image tag | +| flyte.flyteadmin.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flyte.flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyte.flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyte.flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -151,7 +151,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flyteconsole.affinity | object | `{}` | affinity for Flyteconsole deployment | | flyte.flyteconsole.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flyteconsole.image.repository | string | `"cr.flyte.org/flyteorg/flyteconsole"` | Docker image for Flyteconsole deployment | -| flyte.flyteconsole.image.tag | string | `"v1.10.2"` | Docker image tag | +| flyte.flyteconsole.image.tag | string | `"v1.10.3"` | Docker image tag | | flyte.flyteconsole.nodeSelector | object | `{}` | nodeSelector for Flyteconsole deployment | | flyte.flyteconsole.podAnnotations | object | `{}` | Annotations for Flyteconsole pods | | flyte.flyteconsole.replicaCount | int | `1` | Replicas count for Flyteconsole deployment | @@ -162,7 +162,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytepropeller.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flyte.flytepropeller.image.tag | string | `"v1.10.7"` | Docker image tag | +| flyte.flytepropeller.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flyte.flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flyte.flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | | flyte.flytepropeller.replicaCount | int | `1` | Replicas count for Flytepropeller deployment | @@ -176,7 +176,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flyte.flytescheduler.image.tag | string | `"v1.10.7"` | Docker image tag | +| flyte.flytescheduler.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flyte.flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flyte.flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flyte.flytescheduler.resources | object | `{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}}` | Default resources requests and limits for Flytescheduler deployment | diff --git a/charts/flyte/values.yaml b/charts/flyte/values.yaml index 1044202e702..aecfce362f6 100755 --- a/charts/flyte/values.yaml +++ b/charts/flyte/values.yaml @@ -16,7 +16,7 @@ flyte: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE # -- Docker image tag - tag: v1.10.7 # FLYTEADMIN_TAG + tag: v1.11.0-b0 # FLYTEADMIN_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables @@ -84,7 +84,7 @@ flyte: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.10.7 # FLYTESCHEDULER_TAG + tag: v1.11.0-b0 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -129,7 +129,7 @@ flyte: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.10.7 # DATACATALOG_TAG + tag: v1.11.0-b0 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -178,7 +178,7 @@ flyte: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE # -- Docker image tag - tag: v1.10.7 # FLYTEPROPELLER_TAG + tag: v1.11.0-b0 # FLYTEPROPELLER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment @@ -223,7 +223,7 @@ flyte: # -- Docker image for Flyteconsole deployment repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE # -- Docker image tag - tag: v1.10.2 # FLYTECONSOLE_TAG + tag: v1.10.3 # FLYTECONSOLE_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flyteconsole deployment @@ -471,7 +471,7 @@ flyte: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/charts/flyteagent/README.md b/charts/flyteagent/README.md index cd482d1a20b..f889c095bd4 100644 --- a/charts/flyteagent/README.md +++ b/charts/flyteagent/README.md @@ -20,7 +20,7 @@ A Helm chart for Flyte agent | fullnameOverride | string | `""` | | | image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | image.repository | string | `"ghcr.io/flyteorg/flyteagent"` | Docker image for flyteagent deployment | -| image.tag | string | `"1.10.3"` | Docker image tag | +| image.tag | string | `"1.10.7"` | Docker image tag | | nameOverride | string | `""` | | | nodeSelector | object | `{}` | nodeSelector for flyteagent deployment | | podAnnotations | object | `{}` | Annotations for flyteagent pods | diff --git a/charts/flyteagent/values.yaml b/charts/flyteagent/values.yaml index 508caf19842..aee84dc2b28 100755 --- a/charts/flyteagent/values.yaml +++ b/charts/flyteagent/values.yaml @@ -23,7 +23,7 @@ image: # -- Docker image for flyteagent deployment repository: ghcr.io/flyteorg/flyteagent # -- Docker image tag - tag: 1.10.3 # FLYTEAGENT_TAG + tag: 1.10.7 # FLYTEAGENT_TAG # -- Docker image pull policy pullPolicy: IfNotPresent ports: diff --git a/deployment/agent/flyte_agent_helm_generated.yaml b/deployment/agent/flyte_agent_helm_generated.yaml index de54cfda222..46762b4cff2 100644 --- a/deployment/agent/flyte_agent_helm_generated.yaml +++ b/deployment/agent/flyte_agent_helm_generated.yaml @@ -78,7 +78,7 @@ spec: - pyflyte - serve - agent - image: "ghcr.io/flyteorg/flyteagent:1.10.3" + image: "ghcr.io/flyteorg/flyteagent:1.10.7" imagePullPolicy: "IfNotPresent" name: flyteagent volumeMounts: diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index 324828a9663..c1865eeb870 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -429,7 +429,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -868,7 +868,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -889,7 +889,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -907,7 +907,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -924,7 +924,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -951,7 +951,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1056,7 +1056,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1112,7 +1112,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -1186,7 +1186,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1204,7 +1204,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1267,7 +1267,7 @@ spec: template: metadata: annotations: - configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" + configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1293,7 +1293,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1347,9 +1347,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" + configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" spec: securityContext: fsGroup: 65534 @@ -1361,7 +1361,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1388,7 +1388,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_generated.yaml b/deployment/eks/flyte_generated.yaml index d12576c3aff..b4b8f63584d 100644 --- a/deployment/eks/flyte_generated.yaml +++ b/deployment/eks/flyte_generated.yaml @@ -8640,7 +8640,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: cr.flyte.org/flyteorg/datacatalog:v1.10.7 + image: cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0 imagePullPolicy: IfNotPresent name: datacatalog ports: @@ -8663,7 +8663,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: cr.flyte.org/flyteorg/datacatalog:v1.10.7 + image: cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0 imagePullPolicy: IfNotPresent name: run-migrations volumeMounts: @@ -8724,7 +8724,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7 + image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0 imagePullPolicy: IfNotPresent name: webhook volumeMounts: @@ -8751,7 +8751,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7 + image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0 imagePullPolicy: IfNotPresent name: generate-secrets volumeMounts: @@ -8799,7 +8799,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 imagePullPolicy: IfNotPresent name: flyteadmin ports: @@ -8846,7 +8846,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 imagePullPolicy: IfNotPresent name: run-migrations volumeMounts: @@ -8863,7 +8863,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 imagePullPolicy: IfNotPresent name: seed-projects volumeMounts: @@ -8877,7 +8877,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 imagePullPolicy: IfNotPresent name: sync-cluster-resources volumeMounts: @@ -8897,7 +8897,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 imagePullPolicy: IfNotPresent name: generate-secrets volumeMounts: @@ -8951,7 +8951,7 @@ spec: - envFrom: - configMapRef: name: flyte-console-config - image: cr.flyte.org/flyteorg/flyteconsole:v1.10.2 + image: cr.flyte.org/flyteorg/flyteconsole:v1.10.3 name: flyteconsole ports: - containerPort: 8080 @@ -9002,7 +9002,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7 + image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0 imagePullPolicy: IfNotPresent name: flytepropeller ports: @@ -9270,7 +9270,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 imagePullPolicy: IfNotPresent name: sync-cluster-resources volumeMounts: diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml index 166446ce796..1ae984cf69f 100644 --- a/deployment/eks/flyte_helm_controlplane_generated.yaml +++ b/deployment/eks/flyte_helm_controlplane_generated.yaml @@ -574,7 +574,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -595,7 +595,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -613,7 +613,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -630,7 +630,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -657,7 +657,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -762,7 +762,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -818,7 +818,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -892,7 +892,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -910,7 +910,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -993,7 +993,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1013,7 +1013,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index b6dd553ba44..510ef5c3c88 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -427,7 +427,7 @@ spec: template: metadata: annotations: - configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" + configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -453,7 +453,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -507,9 +507,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" + configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" spec: securityContext: fsGroup: 65534 @@ -521,7 +521,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -548,7 +548,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index 94743f22aa9..4cd67923ba9 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -460,7 +460,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -899,7 +899,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -920,7 +920,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -938,7 +938,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -955,7 +955,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -982,7 +982,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1087,7 +1087,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1143,7 +1143,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -1217,7 +1217,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1235,7 +1235,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1318,7 +1318,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1338,7 +1338,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1397,7 +1397,7 @@ spec: template: metadata: annotations: - configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" + configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1423,7 +1423,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1477,9 +1477,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "305d6f36301e10e952435f597dbe6700381a43c496a3be2cca60c175439fc9a" + configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" spec: securityContext: fsGroup: 65534 @@ -1491,7 +1491,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1518,7 +1518,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml index 38dfe201ddb..0f1ebf13814 100644 --- a/deployment/gcp/flyte_helm_controlplane_generated.yaml +++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml @@ -589,7 +589,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -610,7 +610,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -628,7 +628,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -645,7 +645,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -672,7 +672,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -777,7 +777,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -833,7 +833,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -907,7 +907,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -925,7 +925,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1008,7 +1008,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1028,7 +1028,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index 4ba186eb481..59a0fca4f63 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -435,7 +435,7 @@ spec: template: metadata: annotations: - configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" + configChecksum: "bfe89fce66aa8eee9543c676ab07345b9c05c4ec7859daefd51da6bf414f0f4" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -460,7 +460,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -514,9 +514,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" + configChecksum: "bfe89fce66aa8eee9543c676ab07345b9c05c4ec7859daefd51da6bf414f0f4" spec: securityContext: fsGroup: 65534 @@ -528,7 +528,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -555,7 +555,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index 659babf8389..f220536479b 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -473,7 +473,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -922,7 +922,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -943,7 +943,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -961,7 +961,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -978,7 +978,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -1005,7 +1005,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1110,7 +1110,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1166,7 +1166,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -1240,7 +1240,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1258,7 +1258,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1341,7 +1341,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1361,7 +1361,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1420,7 +1420,7 @@ spec: template: metadata: annotations: - configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" + configChecksum: "bfe89fce66aa8eee9543c676ab07345b9c05c4ec7859daefd51da6bf414f0f4" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1445,7 +1445,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1499,9 +1499,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "74e9568d4bf785885a1103d7c39c1b2ede648fc59f8f714c28ba6578e5d5ca1" + configChecksum: "bfe89fce66aa8eee9543c676ab07345b9c05c4ec7859daefd51da6bf414f0f4" spec: securityContext: fsGroup: 65534 @@ -1513,7 +1513,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1540,7 +1540,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml index a8c637e0a3e..2d93910a5c4 100644 --- a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml +++ b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml @@ -116,7 +116,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.10.7" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0" k8s-array: logs: config: @@ -358,7 +358,7 @@ spec: app.kubernetes.io/instance: flyte app.kubernetes.io/component: flyte-binary annotations: - checksum/configuration: da323d1ce8e93e67668afc8b940ef2ee926464950f41ef618ed65b7ca1c42ada + checksum/configuration: 882c31ec18bdac7aa4f1a9057f9e549b1307b60b5d76839dfb6bc526958bee57 checksum/configuration-secret: d5d93f4e67780b21593dc3799f0f6682aab0765e708e4020939975d14d44f929 checksum/cluster-resource-templates: 7dfa59f3d447e9c099b8f8ffad3af466fecbc9cf9f8c97295d9634254a55d4ae spec: diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index 7417c9bdf27..bfd40edd37e 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -585,7 +585,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.10.7 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -6705,7 +6705,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -6725,7 +6725,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -6742,7 +6742,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -6758,7 +6758,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -6785,7 +6785,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -6880,7 +6880,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.10.7" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -6933,7 +6933,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.2" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -7005,7 +7005,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -7022,7 +7022,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.10.7" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -7095,7 +7095,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -7114,7 +7114,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.10.7" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -7170,7 +7170,7 @@ spec: template: metadata: annotations: - configChecksum: "348a3f88031dd95422276b1d3162236cfae3cf720040a8465668611ca6b1948" + configChecksum: "8d992b3c2174350d363ddbf3b1ac0d7f8017a546ec794a9551a4f2b1f4e6ea7" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -7195,7 +7195,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -7242,9 +7242,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.10.7 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "348a3f88031dd95422276b1d3162236cfae3cf720040a8465668611ca6b1948" + configChecksum: "8d992b3c2174350d363ddbf3b1ac0d7f8017a546ec794a9551a4f2b1f4e6ea7" spec: securityContext: fsGroup: 65534 @@ -7256,7 +7256,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -7283,7 +7283,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.10.7" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 85eb73622d1..6de7c86be98 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -468,7 +468,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.10.7" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0" k8s-array: logs: config: @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: ZzlBSjNLWDhDcTdqZ05xUg== + haSharedSecret: UDI2NklEa2dSNUhNeTFteA== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1246,7 +1246,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: 475406181c84abf6c22db03375314bebedd360d52cc923e32579238d93075b2b + checksum/configuration: 9ab632fe7ac69bcf63d6965a44986a05e23798beda4a3175d1601e61057a9832 checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 883bf21ceceed4d8d6b24949d400a6df8eb33b71e5056782a702fcf3baaa7f01 + checksum/secret: d57403ae8ea0fce27bceda25f6af446fe51652e99e95a07fddae387006ee29f1 labels: app: docker-registry release: flyte-sandbox @@ -1755,7 +1755,7 @@ spec: value: minio - name: FLYTE_AWS_SECRET_ACCESS_KEY value: miniostorage - image: ghcr.io/flyteorg/flyteagent:1.10.3 + image: ghcr.io/flyteorg/flyteagent:1.10.7 imagePullPolicy: IfNotPresent name: flyteagent ports: diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index 8bd0ca2b005..b56e367ac40 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -457,7 +457,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.10.7" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0" k8s-array: logs: config: @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: aGtXbUVsYnhhcVRRS0RwRA== + haSharedSecret: T21pWVJOUEdxMXBTSVE1RQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1194,7 +1194,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: ebc0c801b378ad16b6df2e54a8796fb57e71130935130b9f8e3201faf2fd09e2 + checksum/configuration: 11cd65708fd872839c6e561e84c30e045567486f06757f4549c69cc22aea5697 checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 9f699df433a7f3227784261437025f01a0ddb97d1514041ab1d3a93533b70135 + checksum/secret: b0e1d465fbab24856443e463cb7846c898d03f1e00ac443b08e5474d28418ba3 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index a5fe4c4109b..2a8383a1dd2 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: R2NGVWU3dmpId2prNHFlbw== + haSharedSecret: bGRYdlJtdmZ5Qm14ZEJnNg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: ddccf9a515ebaf4fcc214a064ef0223cca9d7c0b063247810d7f1e5c5ef51311 + checksum/secret: b3f9230da427e818d5a63cbbf15159f2b165c98e6f56e269983c0a8fff6b6099 labels: app: docker-registry release: flyte-sandbox diff --git a/docs/conf.py b/docs/conf.py index 00c82afd2a9..b4666d94a44 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -35,7 +35,7 @@ # The short X.Y version version = "" # The full version, including alpha/beta/rc tags -release = "1.10.7" +release = "1.11.0-b0" # -- General configuration --------------------------------------------------- diff --git a/docs/deployment/configuration/generated/flytepropeller_config.rst b/docs/deployment/configuration/generated/flytepropeller_config.rst index 6ddf08273c5..db4f9a543e7 100644 --- a/docs/deployment/configuration/generated/flytepropeller_config.rst +++ b/docs/deployment/configuration/generated/flytepropeller_config.rst @@ -1195,6 +1195,7 @@ ray (`ray.Config`_) enabled: false endpoint: "" name: "" + serviceAccount: default serviceType: NodePort shutdownAfterJobFinishes: true ttlSecondsAfterFinished: 3600 @@ -1342,7 +1343,7 @@ resourceConstraints (`core.ResourceConstraintsSpec`_) Value: 100 -defaultAgent (`agent.Agent`_) +defaultAgent (`agent.Deployment`_) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" The default agent. @@ -1358,7 +1359,7 @@ The default agent. timeouts: null -agents (map[string]*agent.Agent) +agents (map[string]*agent.Deployment) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" The agents. @@ -1391,7 +1392,7 @@ supportedTaskTypes ([]string) - task_type_2 -agent.Agent +agent.Deployment ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ endpoint (string) @@ -3567,6 +3568,18 @@ Version of the Ray CRD to use when creating RayClusters or RayJobs. v1alpha1 +serviceAccount (string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +The k8s service account to run as + +**Default Value**: + +.. code-block:: yaml + + default + + ray.DefaultConfig ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/kustomize/overlays/eks/kustomization.yaml b/kustomize/overlays/eks/kustomization.yaml index f116ed2b78a..d50b42c64f0 100644 --- a/kustomize/overlays/eks/kustomization.yaml +++ b/kustomize/overlays/eks/kustomization.yaml @@ -21,23 +21,23 @@ bases: images: # FlyteAdmin - name: flyteadmin # match images with this name - newTag: v1.10.7 # FLYTEADMIN_TAG override the tag + newTag: v1.11.0-b0 # FLYTEADMIN_TAG override the tag newName: cr.flyte.org/flyteorg/flyteadmin # override the name # FlyteConsole - name: flyteconsole # match images with this name - newTag: v1.10.2 # FLYTECONSOLE_TAG the tag + newTag: v1.10.3 # FLYTECONSOLE_TAG the tag newName: cr.flyte.org/flyteorg/flyteconsole # override the namep # Flyte DataCatalog - name: datacatalog # match images with this name - newTag: v1.10.7 # DATACATALOG_TAG override the tag + newTag: v1.11.0-b0 # DATACATALOG_TAG override the tag newName: cr.flyte.org/flyteorg/datacatalog # override the name # FlytePropeller - name: flytepropeller # match images with this name - newTag: v1.10.7 # FLYTEPROPELLER_TAG override the tag + newTag: v1.11.0-b0 # FLYTEPROPELLER_TAG override the tag newName: cr.flyte.org/flyteorg/flytepropeller # override the name # Webhook - name: webhook # match images with this name - newTag: v1.10.7 # FLYTEPROPELLER_TAG override the tag + newTag: v1.11.0-b0 # FLYTEPROPELLER_TAG override the tag newName: cr.flyte.org/flyteorg/flytepropeller # override the name # Override postgres image to use alpine based (rather smaller) docker image - name: postgres From 33265b9b6098b9a009ff2c6299f2f69565c2e9dc Mon Sep 17 00:00:00 2001 From: Paul Dittamo <37558497+pvditt@users.noreply.github.com> Date: Thu, 29 Feb 2024 10:16:29 -0800 Subject: [PATCH 052/107] add cacheservice to idl defintions (#4978) Signed-off-by: Paul Dittamo --- .../cacheservice/mocks/CacheServiceClient.go | 258 ++++ .../cacheservice/cacheservice_connect.ts | 75 + .../flyteidl/cacheservice/cacheservice_pb.ts | 690 +++++++++ .../flyteidl/cacheservice/cacheservice.pb.go | 1228 +++++++++++++++++ .../cacheservice/cacheservice_grpc.pb.go | 265 ++++ .../cacheservice/cacheservice.swagger.json | 640 +++++++++ .../flyteidl/cacheservice/__init__.py | 0 .../flyteidl/cacheservice/cacheservice_pb2.py | 65 + .../cacheservice/cacheservice_pb2.pyi | 123 ++ .../cacheservice/cacheservice_pb2_grpc.py | 209 +++ flyteidl/gen/pb_rust/flyteidl.cacheservice.rs | 172 +++ flyteidl/generate_mocks.sh | 1 + .../flyteidl/cacheservice/cacheservice.proto | 143 ++ 13 files changed, 3869 insertions(+) create mode 100644 flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go create mode 100644 flyteidl/gen/pb-es/flyteidl/cacheservice/cacheservice_connect.ts create mode 100644 flyteidl/gen/pb-es/flyteidl/cacheservice/cacheservice_pb.ts create mode 100644 flyteidl/gen/pb-go/flyteidl/cacheservice/cacheservice.pb.go create mode 100644 flyteidl/gen/pb-go/flyteidl/cacheservice/cacheservice_grpc.pb.go create mode 100644 flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json create mode 100644 flyteidl/gen/pb_python/flyteidl/cacheservice/__init__.py create mode 100644 flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2.py create mode 100644 flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2.pyi create mode 100644 flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2_grpc.py create mode 100644 flyteidl/gen/pb_rust/flyteidl.cacheservice.rs create mode 100644 flyteidl/protos/flyteidl/cacheservice/cacheservice.proto diff --git a/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go b/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go new file mode 100644 index 00000000000..53916fe9910 --- /dev/null +++ b/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go @@ -0,0 +1,258 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + cacheservice "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/cacheservice" + + grpc "google.golang.org/grpc" + + mock "github.com/stretchr/testify/mock" +) + +// CacheServiceClient is an autogenerated mock type for the CacheServiceClient type +type CacheServiceClient struct { + mock.Mock +} + +type CacheServiceClient_Delete struct { + *mock.Call +} + +func (_m CacheServiceClient_Delete) Return(_a0 *cacheservice.DeleteCacheResponse, _a1 error) *CacheServiceClient_Delete { + return &CacheServiceClient_Delete{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *CacheServiceClient) OnDelete(ctx context.Context, in *cacheservice.DeleteCacheRequest, opts ...grpc.CallOption) *CacheServiceClient_Delete { + c_call := _m.On("Delete", ctx, in, opts) + return &CacheServiceClient_Delete{Call: c_call} +} + +func (_m *CacheServiceClient) OnDeleteMatch(matchers ...interface{}) *CacheServiceClient_Delete { + c_call := _m.On("Delete", matchers...) + return &CacheServiceClient_Delete{Call: c_call} +} + +// Delete provides a mock function with given fields: ctx, in, opts +func (_m *CacheServiceClient) Delete(ctx context.Context, in *cacheservice.DeleteCacheRequest, opts ...grpc.CallOption) (*cacheservice.DeleteCacheResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *cacheservice.DeleteCacheResponse + if rf, ok := ret.Get(0).(func(context.Context, *cacheservice.DeleteCacheRequest, ...grpc.CallOption) *cacheservice.DeleteCacheResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*cacheservice.DeleteCacheResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *cacheservice.DeleteCacheRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type CacheServiceClient_Get struct { + *mock.Call +} + +func (_m CacheServiceClient_Get) Return(_a0 *cacheservice.GetCacheResponse, _a1 error) *CacheServiceClient_Get { + return &CacheServiceClient_Get{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *CacheServiceClient) OnGet(ctx context.Context, in *cacheservice.GetCacheRequest, opts ...grpc.CallOption) *CacheServiceClient_Get { + c_call := _m.On("Get", ctx, in, opts) + return &CacheServiceClient_Get{Call: c_call} +} + +func (_m *CacheServiceClient) OnGetMatch(matchers ...interface{}) *CacheServiceClient_Get { + c_call := _m.On("Get", matchers...) + return &CacheServiceClient_Get{Call: c_call} +} + +// Get provides a mock function with given fields: ctx, in, opts +func (_m *CacheServiceClient) Get(ctx context.Context, in *cacheservice.GetCacheRequest, opts ...grpc.CallOption) (*cacheservice.GetCacheResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *cacheservice.GetCacheResponse + if rf, ok := ret.Get(0).(func(context.Context, *cacheservice.GetCacheRequest, ...grpc.CallOption) *cacheservice.GetCacheResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*cacheservice.GetCacheResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *cacheservice.GetCacheRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type CacheServiceClient_GetOrExtendReservation struct { + *mock.Call +} + +func (_m CacheServiceClient_GetOrExtendReservation) Return(_a0 *cacheservice.GetOrExtendReservationResponse, _a1 error) *CacheServiceClient_GetOrExtendReservation { + return &CacheServiceClient_GetOrExtendReservation{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *CacheServiceClient) OnGetOrExtendReservation(ctx context.Context, in *cacheservice.GetOrExtendReservationRequest, opts ...grpc.CallOption) *CacheServiceClient_GetOrExtendReservation { + c_call := _m.On("GetOrExtendReservation", ctx, in, opts) + return &CacheServiceClient_GetOrExtendReservation{Call: c_call} +} + +func (_m *CacheServiceClient) OnGetOrExtendReservationMatch(matchers ...interface{}) *CacheServiceClient_GetOrExtendReservation { + c_call := _m.On("GetOrExtendReservation", matchers...) + return &CacheServiceClient_GetOrExtendReservation{Call: c_call} +} + +// GetOrExtendReservation provides a mock function with given fields: ctx, in, opts +func (_m *CacheServiceClient) GetOrExtendReservation(ctx context.Context, in *cacheservice.GetOrExtendReservationRequest, opts ...grpc.CallOption) (*cacheservice.GetOrExtendReservationResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *cacheservice.GetOrExtendReservationResponse + if rf, ok := ret.Get(0).(func(context.Context, *cacheservice.GetOrExtendReservationRequest, ...grpc.CallOption) *cacheservice.GetOrExtendReservationResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*cacheservice.GetOrExtendReservationResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *cacheservice.GetOrExtendReservationRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type CacheServiceClient_Put struct { + *mock.Call +} + +func (_m CacheServiceClient_Put) Return(_a0 *cacheservice.PutCacheResponse, _a1 error) *CacheServiceClient_Put { + return &CacheServiceClient_Put{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *CacheServiceClient) OnPut(ctx context.Context, in *cacheservice.PutCacheRequest, opts ...grpc.CallOption) *CacheServiceClient_Put { + c_call := _m.On("Put", ctx, in, opts) + return &CacheServiceClient_Put{Call: c_call} +} + +func (_m *CacheServiceClient) OnPutMatch(matchers ...interface{}) *CacheServiceClient_Put { + c_call := _m.On("Put", matchers...) + return &CacheServiceClient_Put{Call: c_call} +} + +// Put provides a mock function with given fields: ctx, in, opts +func (_m *CacheServiceClient) Put(ctx context.Context, in *cacheservice.PutCacheRequest, opts ...grpc.CallOption) (*cacheservice.PutCacheResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *cacheservice.PutCacheResponse + if rf, ok := ret.Get(0).(func(context.Context, *cacheservice.PutCacheRequest, ...grpc.CallOption) *cacheservice.PutCacheResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*cacheservice.PutCacheResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *cacheservice.PutCacheRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type CacheServiceClient_ReleaseReservation struct { + *mock.Call +} + +func (_m CacheServiceClient_ReleaseReservation) Return(_a0 *cacheservice.ReleaseReservationResponse, _a1 error) *CacheServiceClient_ReleaseReservation { + return &CacheServiceClient_ReleaseReservation{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *CacheServiceClient) OnReleaseReservation(ctx context.Context, in *cacheservice.ReleaseReservationRequest, opts ...grpc.CallOption) *CacheServiceClient_ReleaseReservation { + c_call := _m.On("ReleaseReservation", ctx, in, opts) + return &CacheServiceClient_ReleaseReservation{Call: c_call} +} + +func (_m *CacheServiceClient) OnReleaseReservationMatch(matchers ...interface{}) *CacheServiceClient_ReleaseReservation { + c_call := _m.On("ReleaseReservation", matchers...) + return &CacheServiceClient_ReleaseReservation{Call: c_call} +} + +// ReleaseReservation provides a mock function with given fields: ctx, in, opts +func (_m *CacheServiceClient) ReleaseReservation(ctx context.Context, in *cacheservice.ReleaseReservationRequest, opts ...grpc.CallOption) (*cacheservice.ReleaseReservationResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *cacheservice.ReleaseReservationResponse + if rf, ok := ret.Get(0).(func(context.Context, *cacheservice.ReleaseReservationRequest, ...grpc.CallOption) *cacheservice.ReleaseReservationResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*cacheservice.ReleaseReservationResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *cacheservice.ReleaseReservationRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/flyteidl/gen/pb-es/flyteidl/cacheservice/cacheservice_connect.ts b/flyteidl/gen/pb-es/flyteidl/cacheservice/cacheservice_connect.ts new file mode 100644 index 00000000000..3a4956b93bc --- /dev/null +++ b/flyteidl/gen/pb-es/flyteidl/cacheservice/cacheservice_connect.ts @@ -0,0 +1,75 @@ +// @generated by protoc-gen-connect-es v1.3.0 with parameter "target=ts" +// @generated from file flyteidl/cacheservice/cacheservice.proto (package flyteidl.cacheservice, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import { DeleteCacheRequest, DeleteCacheResponse, GetCacheRequest, GetCacheResponse, GetOrExtendReservationRequest, GetOrExtendReservationResponse, PutCacheRequest, PutCacheResponse, ReleaseReservationRequest, ReleaseReservationResponse } from "./cacheservice_pb.js"; +import { MethodKind } from "@bufbuild/protobuf"; + +/** + * + * CacheService defines operations for cache management including retrieval, storage, and deletion of cached task/workflow outputs. + * + * @generated from service flyteidl.cacheservice.CacheService + */ +export const CacheService = { + typeName: "flyteidl.cacheservice.CacheService", + methods: { + /** + * Retrieves cached data by key. + * + * @generated from rpc flyteidl.cacheservice.CacheService.Get + */ + get: { + name: "Get", + I: GetCacheRequest, + O: GetCacheResponse, + kind: MethodKind.Unary, + }, + /** + * Stores or updates cached data by key. + * + * @generated from rpc flyteidl.cacheservice.CacheService.Put + */ + put: { + name: "Put", + I: PutCacheRequest, + O: PutCacheResponse, + kind: MethodKind.Unary, + }, + /** + * Deletes cached data by key. + * + * @generated from rpc flyteidl.cacheservice.CacheService.Delete + */ + delete: { + name: "Delete", + I: DeleteCacheRequest, + O: DeleteCacheResponse, + kind: MethodKind.Unary, + }, + /** + * Get or extend a reservation for a cache key + * + * @generated from rpc flyteidl.cacheservice.CacheService.GetOrExtendReservation + */ + getOrExtendReservation: { + name: "GetOrExtendReservation", + I: GetOrExtendReservationRequest, + O: GetOrExtendReservationResponse, + kind: MethodKind.Unary, + }, + /** + * Release the reservation for a cache key + * + * @generated from rpc flyteidl.cacheservice.CacheService.ReleaseReservation + */ + releaseReservation: { + name: "ReleaseReservation", + I: ReleaseReservationRequest, + O: ReleaseReservationResponse, + kind: MethodKind.Unary, + }, + } +} as const; + diff --git a/flyteidl/gen/pb-es/flyteidl/cacheservice/cacheservice_pb.ts b/flyteidl/gen/pb-es/flyteidl/cacheservice/cacheservice_pb.ts new file mode 100644 index 00000000000..ff6304fde4f --- /dev/null +++ b/flyteidl/gen/pb-es/flyteidl/cacheservice/cacheservice_pb.ts @@ -0,0 +1,690 @@ +// @generated by protoc-gen-es v1.7.2 with parameter "target=ts" +// @generated from file flyteidl/cacheservice/cacheservice.proto (package flyteidl.cacheservice, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Duration, Message, proto3, Timestamp } from "@bufbuild/protobuf"; +import { Identifier } from "../core/identifier_pb.js"; +import { LiteralMap } from "../core/literals_pb.js"; + +/** + * + * Additional metadata as key-value pairs + * + * @generated from message flyteidl.cacheservice.KeyMapMetadata + */ +export class KeyMapMetadata extends Message { + /** + * Additional metadata as key-value pairs + * + * @generated from field: map values = 1; + */ + values: { [key: string]: string } = {}; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.KeyMapMetadata"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): KeyMapMetadata { + return new KeyMapMetadata().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): KeyMapMetadata { + return new KeyMapMetadata().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): KeyMapMetadata { + return new KeyMapMetadata().fromJsonString(jsonString, options); + } + + static equals(a: KeyMapMetadata | PlainMessage | undefined, b: KeyMapMetadata | PlainMessage | undefined): boolean { + return proto3.util.equals(KeyMapMetadata, a, b); + } +} + +/** + * + * Metadata for cached outputs, including the source identifier and timestamps. + * + * @generated from message flyteidl.cacheservice.Metadata + */ +export class Metadata extends Message { + /** + * Source task or workflow identifier + * + * @generated from field: flyteidl.core.Identifier source_identifier = 1; + */ + sourceIdentifier?: Identifier; + + /** + * Additional metadata as key-value pairs + * + * @generated from field: flyteidl.cacheservice.KeyMapMetadata key_map = 2; + */ + keyMap?: KeyMapMetadata; + + /** + * Creation timestamp + * + * @generated from field: google.protobuf.Timestamp created_at = 3; + */ + createdAt?: Timestamp; + + /** + * Last update timestamp + * + * @generated from field: google.protobuf.Timestamp last_updated_at = 4; + */ + lastUpdatedAt?: Timestamp; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.Metadata"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "source_identifier", kind: "message", T: Identifier }, + { no: 2, name: "key_map", kind: "message", T: KeyMapMetadata }, + { no: 3, name: "created_at", kind: "message", T: Timestamp }, + { no: 4, name: "last_updated_at", kind: "message", T: Timestamp }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Metadata { + return new Metadata().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Metadata { + return new Metadata().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Metadata { + return new Metadata().fromJsonString(jsonString, options); + } + + static equals(a: Metadata | PlainMessage | undefined, b: Metadata | PlainMessage | undefined): boolean { + return proto3.util.equals(Metadata, a, b); + } +} + +/** + * + * Represents cached output, either as literals or an URI, with associated metadata. + * + * @generated from message flyteidl.cacheservice.CachedOutput + */ +export class CachedOutput extends Message { + /** + * @generated from oneof flyteidl.cacheservice.CachedOutput.output + */ + output: { + /** + * Output literals + * + * @generated from field: flyteidl.core.LiteralMap output_literals = 1; + */ + value: LiteralMap; + case: "outputLiterals"; + } | { + /** + * URI to output data + * + * @generated from field: string output_uri = 2; + */ + value: string; + case: "outputUri"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * Associated metadata + * + * @generated from field: flyteidl.cacheservice.Metadata metadata = 3; + */ + metadata?: Metadata; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.CachedOutput"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "output_literals", kind: "message", T: LiteralMap, oneof: "output" }, + { no: 2, name: "output_uri", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "output" }, + { no: 3, name: "metadata", kind: "message", T: Metadata }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CachedOutput { + return new CachedOutput().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CachedOutput { + return new CachedOutput().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CachedOutput { + return new CachedOutput().fromJsonString(jsonString, options); + } + + static equals(a: CachedOutput | PlainMessage | undefined, b: CachedOutput | PlainMessage | undefined): boolean { + return proto3.util.equals(CachedOutput, a, b); + } +} + +/** + * + * Request to retrieve cached data by key. + * + * @generated from message flyteidl.cacheservice.GetCacheRequest + */ +export class GetCacheRequest extends Message { + /** + * Cache key + * + * @generated from field: string key = 1; + */ + key = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.GetCacheRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetCacheRequest { + return new GetCacheRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetCacheRequest { + return new GetCacheRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetCacheRequest { + return new GetCacheRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetCacheRequest | PlainMessage | undefined, b: GetCacheRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetCacheRequest, a, b); + } +} + +/** + * + * Response with cached data for a given key. + * + * @generated from message flyteidl.cacheservice.GetCacheResponse + */ +export class GetCacheResponse extends Message { + /** + * Cached output + * + * @generated from field: flyteidl.cacheservice.CachedOutput output = 1; + */ + output?: CachedOutput; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.GetCacheResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "output", kind: "message", T: CachedOutput }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetCacheResponse { + return new GetCacheResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetCacheResponse { + return new GetCacheResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetCacheResponse { + return new GetCacheResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetCacheResponse | PlainMessage | undefined, b: GetCacheResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetCacheResponse, a, b); + } +} + +/** + * + * Request to store/update cached data by key. + * + * @generated from message flyteidl.cacheservice.PutCacheRequest + */ +export class PutCacheRequest extends Message { + /** + * Cache key + * + * @generated from field: string key = 1; + */ + key = ""; + + /** + * Output to cache + * + * @generated from field: flyteidl.cacheservice.CachedOutput output = 2; + */ + output?: CachedOutput; + + /** + * Overwrite flag + * + * @generated from field: bool overwrite = 3; + */ + overwrite = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.PutCacheRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "output", kind: "message", T: CachedOutput }, + { no: 3, name: "overwrite", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): PutCacheRequest { + return new PutCacheRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): PutCacheRequest { + return new PutCacheRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): PutCacheRequest { + return new PutCacheRequest().fromJsonString(jsonString, options); + } + + static equals(a: PutCacheRequest | PlainMessage | undefined, b: PutCacheRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(PutCacheRequest, a, b); + } +} + +/** + * + * Response message of cache store/update operation. + * + * Empty, success indicated by no errors + * + * @generated from message flyteidl.cacheservice.PutCacheResponse + */ +export class PutCacheResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.PutCacheResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): PutCacheResponse { + return new PutCacheResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): PutCacheResponse { + return new PutCacheResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): PutCacheResponse { + return new PutCacheResponse().fromJsonString(jsonString, options); + } + + static equals(a: PutCacheResponse | PlainMessage | undefined, b: PutCacheResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(PutCacheResponse, a, b); + } +} + +/** + * + * Request to delete cached data by key. + * + * @generated from message flyteidl.cacheservice.DeleteCacheRequest + */ +export class DeleteCacheRequest extends Message { + /** + * Cache key + * + * @generated from field: string key = 1; + */ + key = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.DeleteCacheRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DeleteCacheRequest { + return new DeleteCacheRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DeleteCacheRequest { + return new DeleteCacheRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DeleteCacheRequest { + return new DeleteCacheRequest().fromJsonString(jsonString, options); + } + + static equals(a: DeleteCacheRequest | PlainMessage | undefined, b: DeleteCacheRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(DeleteCacheRequest, a, b); + } +} + +/** + * + * Response message of cache deletion operation. + * + * Empty, success indicated by no errors + * + * @generated from message flyteidl.cacheservice.DeleteCacheResponse + */ +export class DeleteCacheResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.DeleteCacheResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DeleteCacheResponse { + return new DeleteCacheResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DeleteCacheResponse { + return new DeleteCacheResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DeleteCacheResponse { + return new DeleteCacheResponse().fromJsonString(jsonString, options); + } + + static equals(a: DeleteCacheResponse | PlainMessage | undefined, b: DeleteCacheResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(DeleteCacheResponse, a, b); + } +} + +/** + * A reservation including owner, heartbeat interval, expiration timestamp, and various metadata. + * + * @generated from message flyteidl.cacheservice.Reservation + */ +export class Reservation extends Message { + /** + * The unique ID for the reservation - same as the cache key + * + * @generated from field: string key = 1; + */ + key = ""; + + /** + * The unique ID of the owner for the reservation + * + * @generated from field: string owner_id = 2; + */ + ownerId = ""; + + /** + * Requested reservation extension heartbeat interval + * + * @generated from field: google.protobuf.Duration heartbeat_interval = 3; + */ + heartbeatInterval?: Duration; + + /** + * Expiration timestamp of this reservation + * + * @generated from field: google.protobuf.Timestamp expires_at = 4; + */ + expiresAt?: Timestamp; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.Reservation"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "owner_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "heartbeat_interval", kind: "message", T: Duration }, + { no: 4, name: "expires_at", kind: "message", T: Timestamp }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Reservation { + return new Reservation().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Reservation { + return new Reservation().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Reservation { + return new Reservation().fromJsonString(jsonString, options); + } + + static equals(a: Reservation | PlainMessage | undefined, b: Reservation | PlainMessage | undefined): boolean { + return proto3.util.equals(Reservation, a, b); + } +} + +/** + * + * Request to get or extend a reservation for a cache key + * + * @generated from message flyteidl.cacheservice.GetOrExtendReservationRequest + */ +export class GetOrExtendReservationRequest extends Message { + /** + * The unique ID for the reservation - same as the cache key + * + * @generated from field: string key = 1; + */ + key = ""; + + /** + * The unique ID of the owner for the reservation + * + * @generated from field: string owner_id = 2; + */ + ownerId = ""; + + /** + * Requested reservation extension heartbeat interval + * + * @generated from field: google.protobuf.Duration heartbeat_interval = 3; + */ + heartbeatInterval?: Duration; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.GetOrExtendReservationRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "owner_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "heartbeat_interval", kind: "message", T: Duration }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetOrExtendReservationRequest { + return new GetOrExtendReservationRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetOrExtendReservationRequest { + return new GetOrExtendReservationRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetOrExtendReservationRequest { + return new GetOrExtendReservationRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetOrExtendReservationRequest | PlainMessage | undefined, b: GetOrExtendReservationRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetOrExtendReservationRequest, a, b); + } +} + +/** + * + * Request to get or extend a reservation for a cache key + * + * @generated from message flyteidl.cacheservice.GetOrExtendReservationResponse + */ +export class GetOrExtendReservationResponse extends Message { + /** + * The reservation that was created or extended + * + * @generated from field: flyteidl.cacheservice.Reservation reservation = 1; + */ + reservation?: Reservation; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.GetOrExtendReservationResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "reservation", kind: "message", T: Reservation }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetOrExtendReservationResponse { + return new GetOrExtendReservationResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetOrExtendReservationResponse { + return new GetOrExtendReservationResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetOrExtendReservationResponse { + return new GetOrExtendReservationResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetOrExtendReservationResponse | PlainMessage | undefined, b: GetOrExtendReservationResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetOrExtendReservationResponse, a, b); + } +} + +/** + * + * Request to release the reservation for a cache key + * + * @generated from message flyteidl.cacheservice.ReleaseReservationRequest + */ +export class ReleaseReservationRequest extends Message { + /** + * The unique ID for the reservation - same as the cache key + * + * @generated from field: string key = 1; + */ + key = ""; + + /** + * The unique ID of the owner for the reservation + * + * @generated from field: string owner_id = 2; + */ + ownerId = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.ReleaseReservationRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "owner_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ReleaseReservationRequest { + return new ReleaseReservationRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ReleaseReservationRequest { + return new ReleaseReservationRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ReleaseReservationRequest { + return new ReleaseReservationRequest().fromJsonString(jsonString, options); + } + + static equals(a: ReleaseReservationRequest | PlainMessage | undefined, b: ReleaseReservationRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ReleaseReservationRequest, a, b); + } +} + +/** + * + * Response message of release reservation operation. + * + * Empty, success indicated by no errors + * + * @generated from message flyteidl.cacheservice.ReleaseReservationResponse + */ +export class ReleaseReservationResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.cacheservice.ReleaseReservationResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ReleaseReservationResponse { + return new ReleaseReservationResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ReleaseReservationResponse { + return new ReleaseReservationResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ReleaseReservationResponse { + return new ReleaseReservationResponse().fromJsonString(jsonString, options); + } + + static equals(a: ReleaseReservationResponse | PlainMessage | undefined, b: ReleaseReservationResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ReleaseReservationResponse, a, b); + } +} + diff --git a/flyteidl/gen/pb-go/flyteidl/cacheservice/cacheservice.pb.go b/flyteidl/gen/pb-go/flyteidl/cacheservice/cacheservice.pb.go new file mode 100644 index 00000000000..2422e06201a --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/cacheservice/cacheservice.pb.go @@ -0,0 +1,1228 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc (unknown) +// source: flyteidl/cacheservice/cacheservice.proto + +package cacheservice + +import ( + core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Additional metadata as key-value pairs +type KeyMapMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Values map[string]string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Additional metadata as key-value pairs +} + +func (x *KeyMapMetadata) Reset() { + *x = KeyMapMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KeyMapMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KeyMapMetadata) ProtoMessage() {} + +func (x *KeyMapMetadata) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[0] + 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 KeyMapMetadata.ProtoReflect.Descriptor instead. +func (*KeyMapMetadata) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{0} +} + +func (x *KeyMapMetadata) GetValues() map[string]string { + if x != nil { + return x.Values + } + return nil +} + +// Metadata for cached outputs, including the source identifier and timestamps. +type Metadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SourceIdentifier *core.Identifier `protobuf:"bytes,1,opt,name=source_identifier,json=sourceIdentifier,proto3" json:"source_identifier,omitempty"` // Source task or workflow identifier + KeyMap *KeyMapMetadata `protobuf:"bytes,2,opt,name=key_map,json=keyMap,proto3" json:"key_map,omitempty"` // Additional metadata as key-value pairs + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Creation timestamp + LastUpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_updated_at,json=lastUpdatedAt,proto3" json:"last_updated_at,omitempty"` // Last update timestamp +} + +func (x *Metadata) Reset() { + *x = Metadata{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Metadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Metadata) ProtoMessage() {} + +func (x *Metadata) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[1] + 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 Metadata.ProtoReflect.Descriptor instead. +func (*Metadata) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{1} +} + +func (x *Metadata) GetSourceIdentifier() *core.Identifier { + if x != nil { + return x.SourceIdentifier + } + return nil +} + +func (x *Metadata) GetKeyMap() *KeyMapMetadata { + if x != nil { + return x.KeyMap + } + return nil +} + +func (x *Metadata) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Metadata) GetLastUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastUpdatedAt + } + return nil +} + +// Represents cached output, either as literals or an URI, with associated metadata. +type CachedOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Output: + // + // *CachedOutput_OutputLiterals + // *CachedOutput_OutputUri + Output isCachedOutput_Output `protobuf_oneof:"output"` + Metadata *Metadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` // Associated metadata +} + +func (x *CachedOutput) Reset() { + *x = CachedOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CachedOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CachedOutput) ProtoMessage() {} + +func (x *CachedOutput) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[2] + 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 CachedOutput.ProtoReflect.Descriptor instead. +func (*CachedOutput) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{2} +} + +func (m *CachedOutput) GetOutput() isCachedOutput_Output { + if m != nil { + return m.Output + } + return nil +} + +func (x *CachedOutput) GetOutputLiterals() *core.LiteralMap { + if x, ok := x.GetOutput().(*CachedOutput_OutputLiterals); ok { + return x.OutputLiterals + } + return nil +} + +func (x *CachedOutput) GetOutputUri() string { + if x, ok := x.GetOutput().(*CachedOutput_OutputUri); ok { + return x.OutputUri + } + return "" +} + +func (x *CachedOutput) GetMetadata() *Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +type isCachedOutput_Output interface { + isCachedOutput_Output() +} + +type CachedOutput_OutputLiterals struct { + OutputLiterals *core.LiteralMap `protobuf:"bytes,1,opt,name=output_literals,json=outputLiterals,proto3,oneof"` // Output literals +} + +type CachedOutput_OutputUri struct { + OutputUri string `protobuf:"bytes,2,opt,name=output_uri,json=outputUri,proto3,oneof"` // URI to output data +} + +func (*CachedOutput_OutputLiterals) isCachedOutput_Output() {} + +func (*CachedOutput_OutputUri) isCachedOutput_Output() {} + +// Request to retrieve cached data by key. +type GetCacheRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Cache key +} + +func (x *GetCacheRequest) Reset() { + *x = GetCacheRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCacheRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCacheRequest) ProtoMessage() {} + +func (x *GetCacheRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[3] + 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 GetCacheRequest.ProtoReflect.Descriptor instead. +func (*GetCacheRequest) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{3} +} + +func (x *GetCacheRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +// Response with cached data for a given key. +type GetCacheResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Output *CachedOutput `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` // Cached output +} + +func (x *GetCacheResponse) Reset() { + *x = GetCacheResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCacheResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCacheResponse) ProtoMessage() {} + +func (x *GetCacheResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[4] + 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 GetCacheResponse.ProtoReflect.Descriptor instead. +func (*GetCacheResponse) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{4} +} + +func (x *GetCacheResponse) GetOutput() *CachedOutput { + if x != nil { + return x.Output + } + return nil +} + +// Request to store/update cached data by key. +type PutCacheRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Cache key + Output *CachedOutput `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` // Output to cache + Overwrite bool `protobuf:"varint,3,opt,name=overwrite,proto3" json:"overwrite,omitempty"` // Overwrite flag +} + +func (x *PutCacheRequest) Reset() { + *x = PutCacheRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PutCacheRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PutCacheRequest) ProtoMessage() {} + +func (x *PutCacheRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[5] + 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 PutCacheRequest.ProtoReflect.Descriptor instead. +func (*PutCacheRequest) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{5} +} + +func (x *PutCacheRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *PutCacheRequest) GetOutput() *CachedOutput { + if x != nil { + return x.Output + } + return nil +} + +func (x *PutCacheRequest) GetOverwrite() bool { + if x != nil { + return x.Overwrite + } + return false +} + +// Response message of cache store/update operation. +type PutCacheResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PutCacheResponse) Reset() { + *x = PutCacheResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PutCacheResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PutCacheResponse) ProtoMessage() {} + +func (x *PutCacheResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[6] + 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 PutCacheResponse.ProtoReflect.Descriptor instead. +func (*PutCacheResponse) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{6} +} + +// Request to delete cached data by key. +type DeleteCacheRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Cache key +} + +func (x *DeleteCacheRequest) Reset() { + *x = DeleteCacheRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCacheRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCacheRequest) ProtoMessage() {} + +func (x *DeleteCacheRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[7] + 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 DeleteCacheRequest.ProtoReflect.Descriptor instead. +func (*DeleteCacheRequest) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{7} +} + +func (x *DeleteCacheRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +// Response message of cache deletion operation. +type DeleteCacheResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteCacheResponse) Reset() { + *x = DeleteCacheResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCacheResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCacheResponse) ProtoMessage() {} + +func (x *DeleteCacheResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[8] + 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 DeleteCacheResponse.ProtoReflect.Descriptor instead. +func (*DeleteCacheResponse) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{8} +} + +// A reservation including owner, heartbeat interval, expiration timestamp, and various metadata. +type Reservation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // The unique ID for the reservation - same as the cache key + OwnerId string `protobuf:"bytes,2,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` // The unique ID of the owner for the reservation + HeartbeatInterval *durationpb.Duration `protobuf:"bytes,3,opt,name=heartbeat_interval,json=heartbeatInterval,proto3" json:"heartbeat_interval,omitempty"` // Requested reservation extension heartbeat interval + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` // Expiration timestamp of this reservation +} + +func (x *Reservation) Reset() { + *x = Reservation{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Reservation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Reservation) ProtoMessage() {} + +func (x *Reservation) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[9] + 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 Reservation.ProtoReflect.Descriptor instead. +func (*Reservation) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{9} +} + +func (x *Reservation) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Reservation) GetOwnerId() string { + if x != nil { + return x.OwnerId + } + return "" +} + +func (x *Reservation) GetHeartbeatInterval() *durationpb.Duration { + if x != nil { + return x.HeartbeatInterval + } + return nil +} + +func (x *Reservation) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt + } + return nil +} + +// Request to get or extend a reservation for a cache key +type GetOrExtendReservationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // The unique ID for the reservation - same as the cache key + OwnerId string `protobuf:"bytes,2,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` // The unique ID of the owner for the reservation + HeartbeatInterval *durationpb.Duration `protobuf:"bytes,3,opt,name=heartbeat_interval,json=heartbeatInterval,proto3" json:"heartbeat_interval,omitempty"` // Requested reservation extension heartbeat interval +} + +func (x *GetOrExtendReservationRequest) Reset() { + *x = GetOrExtendReservationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrExtendReservationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrExtendReservationRequest) ProtoMessage() {} + +func (x *GetOrExtendReservationRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[10] + 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 GetOrExtendReservationRequest.ProtoReflect.Descriptor instead. +func (*GetOrExtendReservationRequest) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{10} +} + +func (x *GetOrExtendReservationRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *GetOrExtendReservationRequest) GetOwnerId() string { + if x != nil { + return x.OwnerId + } + return "" +} + +func (x *GetOrExtendReservationRequest) GetHeartbeatInterval() *durationpb.Duration { + if x != nil { + return x.HeartbeatInterval + } + return nil +} + +// Request to get or extend a reservation for a cache key +type GetOrExtendReservationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Reservation *Reservation `protobuf:"bytes,1,opt,name=reservation,proto3" json:"reservation,omitempty"` // The reservation that was created or extended +} + +func (x *GetOrExtendReservationResponse) Reset() { + *x = GetOrExtendReservationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrExtendReservationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrExtendReservationResponse) ProtoMessage() {} + +func (x *GetOrExtendReservationResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[11] + 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 GetOrExtendReservationResponse.ProtoReflect.Descriptor instead. +func (*GetOrExtendReservationResponse) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{11} +} + +func (x *GetOrExtendReservationResponse) GetReservation() *Reservation { + if x != nil { + return x.Reservation + } + return nil +} + +// Request to release the reservation for a cache key +type ReleaseReservationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // The unique ID for the reservation - same as the cache key + OwnerId string `protobuf:"bytes,2,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` // The unique ID of the owner for the reservation +} + +func (x *ReleaseReservationRequest) Reset() { + *x = ReleaseReservationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReleaseReservationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseReservationRequest) ProtoMessage() {} + +func (x *ReleaseReservationRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[12] + 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 ReleaseReservationRequest.ProtoReflect.Descriptor instead. +func (*ReleaseReservationRequest) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{12} +} + +func (x *ReleaseReservationRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *ReleaseReservationRequest) GetOwnerId() string { + if x != nil { + return x.OwnerId + } + return "" +} + +// Response message of release reservation operation. +type ReleaseReservationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReleaseReservationResponse) Reset() { + *x = ReleaseReservationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_cacheservice_cacheservice_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReleaseReservationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseReservationResponse) ProtoMessage() {} + +func (x *ReleaseReservationResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_cacheservice_cacheservice_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 ReleaseReservationResponse.ProtoReflect.Descriptor instead. +func (*ReleaseReservationResponse) Descriptor() ([]byte, []int) { + return file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP(), []int{13} +} + +var File_flyteidl_cacheservice_cacheservice_proto protoreflect.FileDescriptor + +var file_flyteidl_cacheservice_cacheservice_proto_rawDesc = []byte{ + 0x0a, 0x28, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 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, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x96, 0x01, 0x0a, 0x0e, 0x4b, + 0x65, 0x79, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x49, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, + 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, 0x91, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x46, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 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, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x06, 0x6b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 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, 0x42, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 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, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x44, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 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, 0x48, 0x00, 0x52, 0x0e, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x1f, + 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, + 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x08, 0x0a, 0x06, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x23, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x4f, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3b, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x7e, 0x0a, 0x0f, + 0x50, 0x75, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x3b, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x12, 0x0a, 0x10, + 0x50, 0x75, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x26, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xbf, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x12, + 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x18, 0x03, 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, 0x11, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 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, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, + 0x74, 0x22, 0x96, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x48, 0x0a, 0x12, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 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, 0x11, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, + 0x61, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x66, 0x0a, 0x1e, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0b, + 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x48, 0x0a, 0x19, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xa2, 0x04, 0x0a, 0x0c, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x03, 0x47, + 0x65, 0x74, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x03, 0x50, 0x75, 0x74, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x06, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x12, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, + 0xe7, 0x01, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x11, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x42, 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, 0x61, 0x63, 0x68, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xa2, 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, 0x15, 0x46, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0xca, 0x02, 0x15, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xe2, 0x02, 0x21, 0x46, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x16, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_flyteidl_cacheservice_cacheservice_proto_rawDescOnce sync.Once + file_flyteidl_cacheservice_cacheservice_proto_rawDescData = file_flyteidl_cacheservice_cacheservice_proto_rawDesc +) + +func file_flyteidl_cacheservice_cacheservice_proto_rawDescGZIP() []byte { + file_flyteidl_cacheservice_cacheservice_proto_rawDescOnce.Do(func() { + file_flyteidl_cacheservice_cacheservice_proto_rawDescData = protoimpl.X.CompressGZIP(file_flyteidl_cacheservice_cacheservice_proto_rawDescData) + }) + return file_flyteidl_cacheservice_cacheservice_proto_rawDescData +} + +var file_flyteidl_cacheservice_cacheservice_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_flyteidl_cacheservice_cacheservice_proto_goTypes = []interface{}{ + (*KeyMapMetadata)(nil), // 0: flyteidl.cacheservice.KeyMapMetadata + (*Metadata)(nil), // 1: flyteidl.cacheservice.Metadata + (*CachedOutput)(nil), // 2: flyteidl.cacheservice.CachedOutput + (*GetCacheRequest)(nil), // 3: flyteidl.cacheservice.GetCacheRequest + (*GetCacheResponse)(nil), // 4: flyteidl.cacheservice.GetCacheResponse + (*PutCacheRequest)(nil), // 5: flyteidl.cacheservice.PutCacheRequest + (*PutCacheResponse)(nil), // 6: flyteidl.cacheservice.PutCacheResponse + (*DeleteCacheRequest)(nil), // 7: flyteidl.cacheservice.DeleteCacheRequest + (*DeleteCacheResponse)(nil), // 8: flyteidl.cacheservice.DeleteCacheResponse + (*Reservation)(nil), // 9: flyteidl.cacheservice.Reservation + (*GetOrExtendReservationRequest)(nil), // 10: flyteidl.cacheservice.GetOrExtendReservationRequest + (*GetOrExtendReservationResponse)(nil), // 11: flyteidl.cacheservice.GetOrExtendReservationResponse + (*ReleaseReservationRequest)(nil), // 12: flyteidl.cacheservice.ReleaseReservationRequest + (*ReleaseReservationResponse)(nil), // 13: flyteidl.cacheservice.ReleaseReservationResponse + nil, // 14: flyteidl.cacheservice.KeyMapMetadata.ValuesEntry + (*core.Identifier)(nil), // 15: flyteidl.core.Identifier + (*timestamppb.Timestamp)(nil), // 16: google.protobuf.Timestamp + (*core.LiteralMap)(nil), // 17: flyteidl.core.LiteralMap + (*durationpb.Duration)(nil), // 18: google.protobuf.Duration +} +var file_flyteidl_cacheservice_cacheservice_proto_depIdxs = []int32{ + 14, // 0: flyteidl.cacheservice.KeyMapMetadata.values:type_name -> flyteidl.cacheservice.KeyMapMetadata.ValuesEntry + 15, // 1: flyteidl.cacheservice.Metadata.source_identifier:type_name -> flyteidl.core.Identifier + 0, // 2: flyteidl.cacheservice.Metadata.key_map:type_name -> flyteidl.cacheservice.KeyMapMetadata + 16, // 3: flyteidl.cacheservice.Metadata.created_at:type_name -> google.protobuf.Timestamp + 16, // 4: flyteidl.cacheservice.Metadata.last_updated_at:type_name -> google.protobuf.Timestamp + 17, // 5: flyteidl.cacheservice.CachedOutput.output_literals:type_name -> flyteidl.core.LiteralMap + 1, // 6: flyteidl.cacheservice.CachedOutput.metadata:type_name -> flyteidl.cacheservice.Metadata + 2, // 7: flyteidl.cacheservice.GetCacheResponse.output:type_name -> flyteidl.cacheservice.CachedOutput + 2, // 8: flyteidl.cacheservice.PutCacheRequest.output:type_name -> flyteidl.cacheservice.CachedOutput + 18, // 9: flyteidl.cacheservice.Reservation.heartbeat_interval:type_name -> google.protobuf.Duration + 16, // 10: flyteidl.cacheservice.Reservation.expires_at:type_name -> google.protobuf.Timestamp + 18, // 11: flyteidl.cacheservice.GetOrExtendReservationRequest.heartbeat_interval:type_name -> google.protobuf.Duration + 9, // 12: flyteidl.cacheservice.GetOrExtendReservationResponse.reservation:type_name -> flyteidl.cacheservice.Reservation + 3, // 13: flyteidl.cacheservice.CacheService.Get:input_type -> flyteidl.cacheservice.GetCacheRequest + 5, // 14: flyteidl.cacheservice.CacheService.Put:input_type -> flyteidl.cacheservice.PutCacheRequest + 7, // 15: flyteidl.cacheservice.CacheService.Delete:input_type -> flyteidl.cacheservice.DeleteCacheRequest + 10, // 16: flyteidl.cacheservice.CacheService.GetOrExtendReservation:input_type -> flyteidl.cacheservice.GetOrExtendReservationRequest + 12, // 17: flyteidl.cacheservice.CacheService.ReleaseReservation:input_type -> flyteidl.cacheservice.ReleaseReservationRequest + 4, // 18: flyteidl.cacheservice.CacheService.Get:output_type -> flyteidl.cacheservice.GetCacheResponse + 6, // 19: flyteidl.cacheservice.CacheService.Put:output_type -> flyteidl.cacheservice.PutCacheResponse + 8, // 20: flyteidl.cacheservice.CacheService.Delete:output_type -> flyteidl.cacheservice.DeleteCacheResponse + 11, // 21: flyteidl.cacheservice.CacheService.GetOrExtendReservation:output_type -> flyteidl.cacheservice.GetOrExtendReservationResponse + 13, // 22: flyteidl.cacheservice.CacheService.ReleaseReservation:output_type -> flyteidl.cacheservice.ReleaseReservationResponse + 18, // [18:23] is the sub-list for method output_type + 13, // [13:18] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name +} + +func init() { file_flyteidl_cacheservice_cacheservice_proto_init() } +func file_flyteidl_cacheservice_cacheservice_proto_init() { + if File_flyteidl_cacheservice_cacheservice_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KeyMapMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Metadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CachedOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCacheRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCacheResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PutCacheRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PutCacheResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCacheRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCacheResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Reservation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrExtendReservationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrExtendReservationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReleaseReservationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReleaseReservationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_flyteidl_cacheservice_cacheservice_proto_msgTypes[2].OneofWrappers = []interface{}{ + (*CachedOutput_OutputLiterals)(nil), + (*CachedOutput_OutputUri)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_flyteidl_cacheservice_cacheservice_proto_rawDesc, + NumEnums: 0, + NumMessages: 15, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_flyteidl_cacheservice_cacheservice_proto_goTypes, + DependencyIndexes: file_flyteidl_cacheservice_cacheservice_proto_depIdxs, + MessageInfos: file_flyteidl_cacheservice_cacheservice_proto_msgTypes, + }.Build() + File_flyteidl_cacheservice_cacheservice_proto = out.File + file_flyteidl_cacheservice_cacheservice_proto_rawDesc = nil + file_flyteidl_cacheservice_cacheservice_proto_goTypes = nil + file_flyteidl_cacheservice_cacheservice_proto_depIdxs = nil +} diff --git a/flyteidl/gen/pb-go/flyteidl/cacheservice/cacheservice_grpc.pb.go b/flyteidl/gen/pb-go/flyteidl/cacheservice/cacheservice_grpc.pb.go new file mode 100644 index 00000000000..c0281958564 --- /dev/null +++ b/flyteidl/gen/pb-go/flyteidl/cacheservice/cacheservice_grpc.pb.go @@ -0,0 +1,265 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: flyteidl/cacheservice/cacheservice.proto + +package cacheservice + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + CacheService_Get_FullMethodName = "/flyteidl.cacheservice.CacheService/Get" + CacheService_Put_FullMethodName = "/flyteidl.cacheservice.CacheService/Put" + CacheService_Delete_FullMethodName = "/flyteidl.cacheservice.CacheService/Delete" + CacheService_GetOrExtendReservation_FullMethodName = "/flyteidl.cacheservice.CacheService/GetOrExtendReservation" + CacheService_ReleaseReservation_FullMethodName = "/flyteidl.cacheservice.CacheService/ReleaseReservation" +) + +// CacheServiceClient is the client API for CacheService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type CacheServiceClient interface { + // Retrieves cached data by key. + Get(ctx context.Context, in *GetCacheRequest, opts ...grpc.CallOption) (*GetCacheResponse, error) + // Stores or updates cached data by key. + Put(ctx context.Context, in *PutCacheRequest, opts ...grpc.CallOption) (*PutCacheResponse, error) + // Deletes cached data by key. + Delete(ctx context.Context, in *DeleteCacheRequest, opts ...grpc.CallOption) (*DeleteCacheResponse, error) + // Get or extend a reservation for a cache key + GetOrExtendReservation(ctx context.Context, in *GetOrExtendReservationRequest, opts ...grpc.CallOption) (*GetOrExtendReservationResponse, error) + // Release the reservation for a cache key + ReleaseReservation(ctx context.Context, in *ReleaseReservationRequest, opts ...grpc.CallOption) (*ReleaseReservationResponse, error) +} + +type cacheServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewCacheServiceClient(cc grpc.ClientConnInterface) CacheServiceClient { + return &cacheServiceClient{cc} +} + +func (c *cacheServiceClient) Get(ctx context.Context, in *GetCacheRequest, opts ...grpc.CallOption) (*GetCacheResponse, error) { + out := new(GetCacheResponse) + err := c.cc.Invoke(ctx, CacheService_Get_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cacheServiceClient) Put(ctx context.Context, in *PutCacheRequest, opts ...grpc.CallOption) (*PutCacheResponse, error) { + out := new(PutCacheResponse) + err := c.cc.Invoke(ctx, CacheService_Put_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cacheServiceClient) Delete(ctx context.Context, in *DeleteCacheRequest, opts ...grpc.CallOption) (*DeleteCacheResponse, error) { + out := new(DeleteCacheResponse) + err := c.cc.Invoke(ctx, CacheService_Delete_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cacheServiceClient) GetOrExtendReservation(ctx context.Context, in *GetOrExtendReservationRequest, opts ...grpc.CallOption) (*GetOrExtendReservationResponse, error) { + out := new(GetOrExtendReservationResponse) + err := c.cc.Invoke(ctx, CacheService_GetOrExtendReservation_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cacheServiceClient) ReleaseReservation(ctx context.Context, in *ReleaseReservationRequest, opts ...grpc.CallOption) (*ReleaseReservationResponse, error) { + out := new(ReleaseReservationResponse) + err := c.cc.Invoke(ctx, CacheService_ReleaseReservation_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// CacheServiceServer is the server API for CacheService service. +// All implementations should embed UnimplementedCacheServiceServer +// for forward compatibility +type CacheServiceServer interface { + // Retrieves cached data by key. + Get(context.Context, *GetCacheRequest) (*GetCacheResponse, error) + // Stores or updates cached data by key. + Put(context.Context, *PutCacheRequest) (*PutCacheResponse, error) + // Deletes cached data by key. + Delete(context.Context, *DeleteCacheRequest) (*DeleteCacheResponse, error) + // Get or extend a reservation for a cache key + GetOrExtendReservation(context.Context, *GetOrExtendReservationRequest) (*GetOrExtendReservationResponse, error) + // Release the reservation for a cache key + ReleaseReservation(context.Context, *ReleaseReservationRequest) (*ReleaseReservationResponse, error) +} + +// UnimplementedCacheServiceServer should be embedded to have forward compatible implementations. +type UnimplementedCacheServiceServer struct { +} + +func (UnimplementedCacheServiceServer) Get(context.Context, *GetCacheRequest) (*GetCacheResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedCacheServiceServer) Put(context.Context, *PutCacheRequest) (*PutCacheResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Put not implemented") +} +func (UnimplementedCacheServiceServer) Delete(context.Context, *DeleteCacheRequest) (*DeleteCacheResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedCacheServiceServer) GetOrExtendReservation(context.Context, *GetOrExtendReservationRequest) (*GetOrExtendReservationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetOrExtendReservation not implemented") +} +func (UnimplementedCacheServiceServer) ReleaseReservation(context.Context, *ReleaseReservationRequest) (*ReleaseReservationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReleaseReservation not implemented") +} + +// UnsafeCacheServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to CacheServiceServer will +// result in compilation errors. +type UnsafeCacheServiceServer interface { + mustEmbedUnimplementedCacheServiceServer() +} + +func RegisterCacheServiceServer(s grpc.ServiceRegistrar, srv CacheServiceServer) { + s.RegisterService(&CacheService_ServiceDesc, srv) +} + +func _CacheService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCacheRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CacheServiceServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CacheService_Get_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CacheServiceServer).Get(ctx, req.(*GetCacheRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CacheService_Put_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PutCacheRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CacheServiceServer).Put(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CacheService_Put_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CacheServiceServer).Put(ctx, req.(*PutCacheRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CacheService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteCacheRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CacheServiceServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CacheService_Delete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CacheServiceServer).Delete(ctx, req.(*DeleteCacheRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CacheService_GetOrExtendReservation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetOrExtendReservationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CacheServiceServer).GetOrExtendReservation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CacheService_GetOrExtendReservation_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CacheServiceServer).GetOrExtendReservation(ctx, req.(*GetOrExtendReservationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CacheService_ReleaseReservation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReleaseReservationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CacheServiceServer).ReleaseReservation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CacheService_ReleaseReservation_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CacheServiceServer).ReleaseReservation(ctx, req.(*ReleaseReservationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// CacheService_ServiceDesc is the grpc.ServiceDesc for CacheService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var CacheService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "flyteidl.cacheservice.CacheService", + HandlerType: (*CacheServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Get", + Handler: _CacheService_Get_Handler, + }, + { + MethodName: "Put", + Handler: _CacheService_Put_Handler, + }, + { + MethodName: "Delete", + Handler: _CacheService_Delete_Handler, + }, + { + MethodName: "GetOrExtendReservation", + Handler: _CacheService_GetOrExtendReservation_Handler, + }, + { + MethodName: "ReleaseReservation", + Handler: _CacheService_ReleaseReservation_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "flyteidl/cacheservice/cacheservice.proto", +} diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json new file mode 100644 index 00000000000..79be0ba1172 --- /dev/null +++ b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json @@ -0,0 +1,640 @@ +{ + "swagger": "2.0", + "info": { + "title": "flyteidl/cacheservice/cacheservice.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "CacheService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": { + "BlobTypeBlobDimensionality": { + "type": "string", + "enum": [ + "SINGLE", + "MULTIPART" + ], + "default": "SINGLE" + }, + "SchemaColumnSchemaColumnType": { + "type": "string", + "enum": [ + "INTEGER", + "FLOAT", + "STRING", + "BOOLEAN", + "DATETIME", + "DURATION" + ], + "default": "INTEGER" + }, + "SchemaTypeSchemaColumn": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "A unique name -within the schema type- for the column" + }, + "type": { + "$ref": "#/definitions/SchemaColumnSchemaColumnType", + "description": "The column type. This allows a limited set of types currently." + } + } + }, + "StructuredDatasetTypeDatasetColumn": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A unique name within the schema type for the column." + }, + "literal_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "The column type." + } + } + }, + "cacheserviceCachedOutput": { + "type": "object", + "properties": { + "output_literals": { + "$ref": "#/definitions/coreLiteralMap", + "title": "Output literals" + }, + "output_uri": { + "type": "string", + "title": "URI to output data" + }, + "metadata": { + "$ref": "#/definitions/flyteidlcacheserviceMetadata", + "title": "Associated metadata" + } + }, + "description": "Represents cached output, either as literals or an URI, with associated metadata." + }, + "cacheserviceDeleteCacheResponse": { + "type": "object", + "description": "Response message of cache deletion operation.\n\nEmpty, success indicated by no errors" + }, + "cacheserviceGetCacheResponse": { + "type": "object", + "properties": { + "output": { + "$ref": "#/definitions/cacheserviceCachedOutput", + "title": "Cached output" + } + }, + "description": "Response with cached data for a given key." + }, + "cacheserviceKeyMapMetadata": { + "type": "object", + "properties": { + "values": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Additional metadata as key-value pairs" + } + }, + "title": "Additional metadata as key-value pairs" + }, + "cacheservicePutCacheResponse": { + "type": "object", + "description": "Response message of cache store/update operation.\n\nEmpty, success indicated by no errors" + }, + "coreBinary": { + "type": "object", + "properties": { + "value": { + "type": "string", + "format": "byte" + }, + "tag": { + "type": "string" + } + }, + "description": "A simple byte array with a tag to help different parts of the system communicate about what is in the byte array.\nIt's strongly advisable that consumers of this type define a unique tag and validate the tag before parsing the data." + }, + "coreBlob": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/coreBlobMetadata" + }, + "uri": { + "type": "string" + } + }, + "description": "Refers to an offloaded set of files. It encapsulates the type of the store and a unique uri for where the data is.\nThere are no restrictions on how the uri is formatted since it will depend on how to interact with the store." + }, + "coreBlobMetadata": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/coreBlobType" + } + } + }, + "coreBlobType": { + "type": "object", + "properties": { + "format": { + "type": "string", + "title": "Format can be a free form string understood by SDK/UI etc like\ncsv, parquet etc" + }, + "dimensionality": { + "$ref": "#/definitions/BlobTypeBlobDimensionality" + } + }, + "title": "Defines type behavior for blob objects" + }, + "coreError": { + "type": "object", + "properties": { + "failed_node_id": { + "type": "string", + "description": "The node id that threw the error." + }, + "message": { + "type": "string", + "description": "Error message thrown." + } + }, + "description": "Represents an error thrown from a node." + }, + "coreIdentifier": { + "type": "object", + "properties": { + "resource_type": { + "$ref": "#/definitions/coreResourceType", + "description": "Identifies the specific type of resource that this identifier corresponds to." + }, + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User provided value for the resource." + }, + "version": { + "type": "string", + "description": "Specific version of the resource." + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the resource." + } + }, + "description": "Encapsulation of fields that uniquely identifies a Flyte resource." + }, + "coreLiteral": { + "type": "object", + "properties": { + "scalar": { + "$ref": "#/definitions/coreScalar", + "description": "A simple value." + }, + "collection": { + "$ref": "#/definitions/coreLiteralCollection", + "description": "A collection of literals to allow nesting." + }, + "map": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of strings to literals." + }, + "hash": { + "type": "string", + "title": "A hash representing this literal.\nThis is used for caching purposes. For more details refer to RFC 1893\n(https://github.com/flyteorg/flyte/blob/master/rfc/system/1893-caching-of-offloaded-objects.md)" + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional metadata for literals." + } + }, + "description": "A simple value. This supports any level of nesting (e.g. array of array of array of Blobs) as well as simple primitives." + }, + "coreLiteralCollection": { + "type": "object", + "properties": { + "literals": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coreLiteral" + } + } + }, + "description": "A collection of literals. This is a workaround since oneofs in proto messages cannot contain a repeated field." + }, + "coreLiteralMap": { + "type": "object", + "properties": { + "literals": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/coreLiteral" + } + } + }, + "description": "A map of literals. This is a workaround since oneofs in proto messages cannot contain a repeated field." + }, + "coreLiteralType": { + "type": "object", + "properties": { + "simple": { + "$ref": "#/definitions/coreSimpleType", + "description": "A simple type that can be compared one-to-one with another." + }, + "schema": { + "$ref": "#/definitions/coreSchemaType", + "description": "A complex type that requires matching of inner fields." + }, + "collection_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "Defines the type of the value of a collection. Only homogeneous collections are allowed." + }, + "map_value_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "Defines the type of the value of a map type. The type of the key is always a string." + }, + "blob": { + "$ref": "#/definitions/coreBlobType", + "description": "A blob might have specialized implementation details depending on associated metadata." + }, + "enum_type": { + "$ref": "#/definitions/flyteidlcoreEnumType", + "description": "Defines an enum with pre-defined string values." + }, + "structured_dataset_type": { + "$ref": "#/definitions/coreStructuredDatasetType", + "title": "Generalized schema support" + }, + "union_type": { + "$ref": "#/definitions/coreUnionType", + "description": "Defines an union type with pre-defined LiteralTypes." + }, + "metadata": { + "type": "object", + "description": "This field contains type metadata that is descriptive of the type, but is NOT considered in type-checking. This might be used by\nconsumers to identify special behavior or display extended information for the type." + }, + "annotation": { + "$ref": "#/definitions/coreTypeAnnotation", + "description": "This field contains arbitrary data that might have special semantic\nmeaning for the client but does not effect internal flyte behavior." + }, + "structure": { + "$ref": "#/definitions/coreTypeStructure", + "description": "Hints to improve type matching." + } + }, + "description": "Defines a strong type to allow type checking between interfaces." + }, + "corePrimitive": { + "type": "object", + "properties": { + "integer": { + "type": "string", + "format": "int64" + }, + "float_value": { + "type": "number", + "format": "double" + }, + "string_value": { + "type": "string" + }, + "boolean": { + "type": "boolean" + }, + "datetime": { + "type": "string", + "format": "date-time" + }, + "duration": { + "type": "string" + } + }, + "title": "Primitive Types" + }, + "coreResourceType": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED", + "description": "Indicates a resource type within Flyte.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects" + }, + "coreScalar": { + "type": "object", + "properties": { + "primitive": { + "$ref": "#/definitions/corePrimitive" + }, + "blob": { + "$ref": "#/definitions/coreBlob" + }, + "binary": { + "$ref": "#/definitions/coreBinary" + }, + "schema": { + "$ref": "#/definitions/flyteidlcoreSchema" + }, + "none_type": { + "$ref": "#/definitions/coreVoid" + }, + "error": { + "$ref": "#/definitions/coreError" + }, + "generic": { + "type": "object" + }, + "structured_dataset": { + "$ref": "#/definitions/coreStructuredDataset" + }, + "union": { + "$ref": "#/definitions/coreUnion" + } + } + }, + "coreSchemaType": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/SchemaTypeSchemaColumn" + }, + "description": "A list of ordered columns this schema comprises of." + } + }, + "description": "Defines schema columns and types to strongly type-validate schemas interoperability." + }, + "coreSimpleType": { + "type": "string", + "enum": [ + "NONE", + "INTEGER", + "FLOAT", + "STRING", + "BOOLEAN", + "DATETIME", + "DURATION", + "BINARY", + "ERROR", + "STRUCT" + ], + "default": "NONE", + "description": "Define a set of simple types." + }, + "coreStructuredDataset": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "title": "String location uniquely identifying where the data is.\nShould start with the storage location (e.g. s3://, gs://, bq://, etc.)" + }, + "metadata": { + "$ref": "#/definitions/coreStructuredDatasetMetadata" + } + } + }, + "coreStructuredDatasetMetadata": { + "type": "object", + "properties": { + "structured_dataset_type": { + "$ref": "#/definitions/coreStructuredDatasetType", + "description": "Bundle the type information along with the literal.\nThis is here because StructuredDatasets can often be more defined at run time than at compile time.\nThat is, at compile time you might only declare a task to return a pandas dataframe or a StructuredDataset,\nwithout any column information, but at run time, you might have that column information.\nflytekit python will copy this type information into the literal, from the type information, if not provided by\nthe various plugins (encoders).\nSince this field is run time generated, it's not used for any type checking." + } + } + }, + "coreStructuredDatasetType": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/StructuredDatasetTypeDatasetColumn" + }, + "description": "A list of ordered columns this schema comprises of." + }, + "format": { + "type": "string", + "description": "This is the storage format, the format of the bits at rest\nparquet, feather, csv, etc.\nFor two types to be compatible, the format will need to be an exact match." + }, + "external_schema_type": { + "type": "string", + "description": "This is a string representing the type that the bytes in external_schema_bytes are formatted in.\nThis is an optional field that will not be used for type checking." + }, + "external_schema_bytes": { + "type": "string", + "format": "byte", + "description": "The serialized bytes of a third-party schema library like Arrow.\nThis is an optional field that will not be used for type checking." + } + } + }, + "coreTypeAnnotation": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "description": "A arbitrary JSON payload to describe a type." + } + }, + "description": "TypeAnnotation encapsulates registration time information about a type. This can be used for various control-plane operations. TypeAnnotation will not be available at runtime when a task runs." + }, + "coreTypeStructure": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "title": "Must exactly match for types to be castable" + }, + "dataclass_type": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/coreLiteralType" + }, + "title": "dataclass_type only exists for dataclasses.\nThis is used to resolve the type of the fields of dataclass\nThe key is the field name, and the value is the literal type of the field\ne.g. For dataclass Foo, with fields a, and a is a string\nFoo.a will be resolved as a literal type of string from dataclass_type" + } + }, + "description": "Hints to improve type matching\ne.g. allows distinguishing output from custom type transformers\neven if the underlying IDL serialization matches." + }, + "coreUnion": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/coreLiteral" + }, + "type": { + "$ref": "#/definitions/coreLiteralType" + } + }, + "description": "The runtime representation of a tagged union value. See `UnionType` for more details." + }, + "coreUnionType": { + "type": "object", + "properties": { + "variants": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coreLiteralType" + }, + "description": "Predefined set of variants in union." + } + }, + "description": "Defines a tagged union type, also known as a variant (and formally as the sum type).\n\nA sum type S is defined by a sequence of types (A, B, C, ...), each tagged by a string tag\nA value of type S is constructed from a value of any of the variant types. The specific choice of type is recorded by\nstoring the varaint's tag with the literal value and can be examined in runtime.\n\nType S is typically written as\nS := Apple A | Banana B | Cantaloupe C | ...\n\nNotably, a nullable (optional) type is a sum type between some type X and the singleton type representing a null-value:\nOptional X := X | Null\n\nSee also: https://en.wikipedia.org/wiki/Tagged_union" + }, + "coreVoid": { + "type": "object", + "description": "Used to denote a nil/null/None assignment to a scalar value. The underlying LiteralType for Void is intentionally\nundefined since it can be assigned to a scalar of any LiteralType." + }, + "flyteidlcacheserviceGetOrExtendReservationResponse": { + "type": "object", + "properties": { + "reservation": { + "$ref": "#/definitions/flyteidlcacheserviceReservation", + "title": "The reservation that was created or extended" + } + }, + "title": "Request to get or extend a reservation for a cache key" + }, + "flyteidlcacheserviceMetadata": { + "type": "object", + "properties": { + "source_identifier": { + "$ref": "#/definitions/coreIdentifier", + "title": "Source task or workflow identifier" + }, + "key_map": { + "$ref": "#/definitions/cacheserviceKeyMapMetadata", + "title": "Additional metadata as key-value pairs" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Creation timestamp" + }, + "last_updated_at": { + "type": "string", + "format": "date-time", + "title": "Last update timestamp" + } + }, + "description": "Metadata for cached outputs, including the source identifier and timestamps." + }, + "flyteidlcacheserviceReleaseReservationResponse": { + "type": "object", + "description": "Response message of release reservation operation.\n\nEmpty, success indicated by no errors" + }, + "flyteidlcacheserviceReservation": { + "type": "object", + "properties": { + "key": { + "type": "string", + "title": "The unique ID for the reservation - same as the cache key" + }, + "owner_id": { + "type": "string", + "title": "The unique ID of the owner for the reservation" + }, + "heartbeat_interval": { + "type": "string", + "title": "Requested reservation extension heartbeat interval" + }, + "expires_at": { + "type": "string", + "format": "date-time", + "title": "Expiration timestamp of this reservation" + } + }, + "description": "A reservation including owner, heartbeat interval, expiration timestamp, and various metadata." + }, + "flyteidlcoreEnumType": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Predefined set of enum values." + } + }, + "description": "Enables declaring enum types, with predefined string values\nFor len(values) \u003e 0, the first value in the ordered list is regarded as the default value. If you wish\nTo provide no defaults, make the first value as undefined." + }, + "flyteidlcoreSchema": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/coreSchemaType" + } + }, + "description": "A strongly typed schema that defines the interface of data retrieved from the underlying storage medium." + }, + "googlerpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "protobufNullValue": { + "type": "string", + "enum": [ + "NULL_VALUE" + ], + "default": "NULL_VALUE", + "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." + } + } +} diff --git a/flyteidl/gen/pb_python/flyteidl/cacheservice/__init__.py b/flyteidl/gen/pb_python/flyteidl/cacheservice/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2.py b/flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2.py new file mode 100644 index 00000000000..1cae31e6831 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: flyteidl/cacheservice/cacheservice.proto +"""Generated protocol buffer code.""" +from google.protobuf.internal import builder as _builder +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from flyteidl.core import literals_pb2 as flyteidl_dot_core_dot_literals__pb2 +from flyteidl.core import types_pb2 as flyteidl_dot_core_dot_types__pb2 +from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 +from flyteidl.core import interface_pb2 as flyteidl_dot_core_dot_interface__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(flyteidl/cacheservice/cacheservice.proto\x12\x15\x66lyteidl.cacheservice\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x96\x01\n\x0eKeyMapMetadata\x12I\n\x06values\x18\x01 \x03(\x0b\x32\x31.flyteidl.cacheservice.KeyMapMetadata.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x91\x02\n\x08Metadata\x12\x46\n\x11source_identifier\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x10sourceIdentifier\x12>\n\x07key_map\x18\x02 \x01(\x0b\x32%.flyteidl.cacheservice.KeyMapMetadataR\x06keyMap\x12\x39\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x42\n\x0flast_updated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastUpdatedAt\"\xbc\x01\n\x0c\x43\x61\x63hedOutput\x12\x44\n\x0foutput_literals\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x0eoutputLiterals\x12\x1f\n\noutput_uri\x18\x02 \x01(\tH\x00R\toutputUri\x12;\n\x08metadata\x18\x03 \x01(\x0b\x32\x1f.flyteidl.cacheservice.MetadataR\x08metadataB\x08\n\x06output\"#\n\x0fGetCacheRequest\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\"O\n\x10GetCacheResponse\x12;\n\x06output\x18\x01 \x01(\x0b\x32#.flyteidl.cacheservice.CachedOutputR\x06output\"~\n\x0fPutCacheRequest\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12;\n\x06output\x18\x02 \x01(\x0b\x32#.flyteidl.cacheservice.CachedOutputR\x06output\x12\x1c\n\toverwrite\x18\x03 \x01(\x08R\toverwrite\"\x12\n\x10PutCacheResponse\"&\n\x12\x44\x65leteCacheRequest\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\"\x15\n\x13\x44\x65leteCacheResponse\"\xbf\x01\n\x0bReservation\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x19\n\x08owner_id\x18\x02 \x01(\tR\x07ownerId\x12H\n\x12heartbeat_interval\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationR\x11heartbeatInterval\x12\x39\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\"\x96\x01\n\x1dGetOrExtendReservationRequest\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x19\n\x08owner_id\x18\x02 \x01(\tR\x07ownerId\x12H\n\x12heartbeat_interval\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationR\x11heartbeatInterval\"f\n\x1eGetOrExtendReservationResponse\x12\x44\n\x0breservation\x18\x01 \x01(\x0b\x32\".flyteidl.cacheservice.ReservationR\x0breservation\"H\n\x19ReleaseReservationRequest\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x19\n\x08owner_id\x18\x02 \x01(\tR\x07ownerId\"\x1c\n\x1aReleaseReservationResponse2\xa2\x04\n\x0c\x43\x61\x63heService\x12V\n\x03Get\x12&.flyteidl.cacheservice.GetCacheRequest\x1a\'.flyteidl.cacheservice.GetCacheResponse\x12V\n\x03Put\x12&.flyteidl.cacheservice.PutCacheRequest\x1a\'.flyteidl.cacheservice.PutCacheResponse\x12_\n\x06\x44\x65lete\x12).flyteidl.cacheservice.DeleteCacheRequest\x1a*.flyteidl.cacheservice.DeleteCacheResponse\x12\x85\x01\n\x16GetOrExtendReservation\x12\x34.flyteidl.cacheservice.GetOrExtendReservationRequest\x1a\x35.flyteidl.cacheservice.GetOrExtendReservationResponse\x12y\n\x12ReleaseReservation\x12\x30.flyteidl.cacheservice.ReleaseReservationRequest\x1a\x31.flyteidl.cacheservice.ReleaseReservationResponseB\xe7\x01\n\x19\x63om.flyteidl.cacheserviceB\x11\x43\x61\x63heserviceProtoP\x01ZBgithub.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/cacheservice\xa2\x02\x03\x46\x43X\xaa\x02\x15\x46lyteidl.Cacheservice\xca\x02\x15\x46lyteidl\\Cacheservice\xe2\x02!Flyteidl\\Cacheservice\\GPBMetadata\xea\x02\x16\x46lyteidl::Cacheserviceb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flyteidl.cacheservice.cacheservice_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\031com.flyteidl.cacheserviceB\021CacheserviceProtoP\001ZBgithub.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/cacheservice\242\002\003FCX\252\002\025Flyteidl.Cacheservice\312\002\025Flyteidl\\Cacheservice\342\002!Flyteidl\\Cacheservice\\GPBMetadata\352\002\026Flyteidl::Cacheservice' + _KEYMAPMETADATA_VALUESENTRY._options = None + _KEYMAPMETADATA_VALUESENTRY._serialized_options = b'8\001' + _globals['_KEYMAPMETADATA']._serialized_start=253 + _globals['_KEYMAPMETADATA']._serialized_end=403 + _globals['_KEYMAPMETADATA_VALUESENTRY']._serialized_start=346 + _globals['_KEYMAPMETADATA_VALUESENTRY']._serialized_end=403 + _globals['_METADATA']._serialized_start=406 + _globals['_METADATA']._serialized_end=679 + _globals['_CACHEDOUTPUT']._serialized_start=682 + _globals['_CACHEDOUTPUT']._serialized_end=870 + _globals['_GETCACHEREQUEST']._serialized_start=872 + _globals['_GETCACHEREQUEST']._serialized_end=907 + _globals['_GETCACHERESPONSE']._serialized_start=909 + _globals['_GETCACHERESPONSE']._serialized_end=988 + _globals['_PUTCACHEREQUEST']._serialized_start=990 + _globals['_PUTCACHEREQUEST']._serialized_end=1116 + _globals['_PUTCACHERESPONSE']._serialized_start=1118 + _globals['_PUTCACHERESPONSE']._serialized_end=1136 + _globals['_DELETECACHEREQUEST']._serialized_start=1138 + _globals['_DELETECACHEREQUEST']._serialized_end=1176 + _globals['_DELETECACHERESPONSE']._serialized_start=1178 + _globals['_DELETECACHERESPONSE']._serialized_end=1199 + _globals['_RESERVATION']._serialized_start=1202 + _globals['_RESERVATION']._serialized_end=1393 + _globals['_GETOREXTENDRESERVATIONREQUEST']._serialized_start=1396 + _globals['_GETOREXTENDRESERVATIONREQUEST']._serialized_end=1546 + _globals['_GETOREXTENDRESERVATIONRESPONSE']._serialized_start=1548 + _globals['_GETOREXTENDRESERVATIONRESPONSE']._serialized_end=1650 + _globals['_RELEASERESERVATIONREQUEST']._serialized_start=1652 + _globals['_RELEASERESERVATIONREQUEST']._serialized_end=1724 + _globals['_RELEASERESERVATIONRESPONSE']._serialized_start=1726 + _globals['_RELEASERESERVATIONRESPONSE']._serialized_end=1754 + _globals['_CACHESERVICE']._serialized_start=1757 + _globals['_CACHESERVICE']._serialized_end=2303 +# @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2.pyi new file mode 100644 index 00000000000..ad5a5c193a3 --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2.pyi @@ -0,0 +1,123 @@ +from flyteidl.core import literals_pb2 as _literals_pb2 +from flyteidl.core import types_pb2 as _types_pb2 +from flyteidl.core import identifier_pb2 as _identifier_pb2 +from flyteidl.core import interface_pb2 as _interface_pb2 +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class KeyMapMetadata(_message.Message): + __slots__ = ["values"] + class ValuesEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + VALUES_FIELD_NUMBER: _ClassVar[int] + values: _containers.ScalarMap[str, str] + def __init__(self, values: _Optional[_Mapping[str, str]] = ...) -> None: ... + +class Metadata(_message.Message): + __slots__ = ["source_identifier", "key_map", "created_at", "last_updated_at"] + SOURCE_IDENTIFIER_FIELD_NUMBER: _ClassVar[int] + KEY_MAP_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + LAST_UPDATED_AT_FIELD_NUMBER: _ClassVar[int] + source_identifier: _identifier_pb2.Identifier + key_map: KeyMapMetadata + created_at: _timestamp_pb2.Timestamp + last_updated_at: _timestamp_pb2.Timestamp + def __init__(self, source_identifier: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., key_map: _Optional[_Union[KeyMapMetadata, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., last_updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class CachedOutput(_message.Message): + __slots__ = ["output_literals", "output_uri", "metadata"] + OUTPUT_LITERALS_FIELD_NUMBER: _ClassVar[int] + OUTPUT_URI_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + output_literals: _literals_pb2.LiteralMap + output_uri: str + metadata: Metadata + def __init__(self, output_literals: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_uri: _Optional[str] = ..., metadata: _Optional[_Union[Metadata, _Mapping]] = ...) -> None: ... + +class GetCacheRequest(_message.Message): + __slots__ = ["key"] + KEY_FIELD_NUMBER: _ClassVar[int] + key: str + def __init__(self, key: _Optional[str] = ...) -> None: ... + +class GetCacheResponse(_message.Message): + __slots__ = ["output"] + OUTPUT_FIELD_NUMBER: _ClassVar[int] + output: CachedOutput + def __init__(self, output: _Optional[_Union[CachedOutput, _Mapping]] = ...) -> None: ... + +class PutCacheRequest(_message.Message): + __slots__ = ["key", "output", "overwrite"] + KEY_FIELD_NUMBER: _ClassVar[int] + OUTPUT_FIELD_NUMBER: _ClassVar[int] + OVERWRITE_FIELD_NUMBER: _ClassVar[int] + key: str + output: CachedOutput + overwrite: bool + def __init__(self, key: _Optional[str] = ..., output: _Optional[_Union[CachedOutput, _Mapping]] = ..., overwrite: bool = ...) -> None: ... + +class PutCacheResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + +class DeleteCacheRequest(_message.Message): + __slots__ = ["key"] + KEY_FIELD_NUMBER: _ClassVar[int] + key: str + def __init__(self, key: _Optional[str] = ...) -> None: ... + +class DeleteCacheResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + +class Reservation(_message.Message): + __slots__ = ["key", "owner_id", "heartbeat_interval", "expires_at"] + KEY_FIELD_NUMBER: _ClassVar[int] + OWNER_ID_FIELD_NUMBER: _ClassVar[int] + HEARTBEAT_INTERVAL_FIELD_NUMBER: _ClassVar[int] + EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + key: str + owner_id: str + heartbeat_interval: _duration_pb2.Duration + expires_at: _timestamp_pb2.Timestamp + def __init__(self, key: _Optional[str] = ..., owner_id: _Optional[str] = ..., heartbeat_interval: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class GetOrExtendReservationRequest(_message.Message): + __slots__ = ["key", "owner_id", "heartbeat_interval"] + KEY_FIELD_NUMBER: _ClassVar[int] + OWNER_ID_FIELD_NUMBER: _ClassVar[int] + HEARTBEAT_INTERVAL_FIELD_NUMBER: _ClassVar[int] + key: str + owner_id: str + heartbeat_interval: _duration_pb2.Duration + def __init__(self, key: _Optional[str] = ..., owner_id: _Optional[str] = ..., heartbeat_interval: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + +class GetOrExtendReservationResponse(_message.Message): + __slots__ = ["reservation"] + RESERVATION_FIELD_NUMBER: _ClassVar[int] + reservation: Reservation + def __init__(self, reservation: _Optional[_Union[Reservation, _Mapping]] = ...) -> None: ... + +class ReleaseReservationRequest(_message.Message): + __slots__ = ["key", "owner_id"] + KEY_FIELD_NUMBER: _ClassVar[int] + OWNER_ID_FIELD_NUMBER: _ClassVar[int] + key: str + owner_id: str + def __init__(self, key: _Optional[str] = ..., owner_id: _Optional[str] = ...) -> None: ... + +class ReleaseReservationResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... diff --git a/flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2_grpc.py b/flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2_grpc.py new file mode 100644 index 00000000000..7b7bd54f09e --- /dev/null +++ b/flyteidl/gen/pb_python/flyteidl/cacheservice/cacheservice_pb2_grpc.py @@ -0,0 +1,209 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from flyteidl.cacheservice import cacheservice_pb2 as flyteidl_dot_cacheservice_dot_cacheservice__pb2 + + +class CacheServiceStub(object): + """ + CacheService defines operations for cache management including retrieval, storage, and deletion of cached task/workflow outputs. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.Get = channel.unary_unary( + '/flyteidl.cacheservice.CacheService/Get', + request_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetCacheRequest.SerializeToString, + response_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetCacheResponse.FromString, + ) + self.Put = channel.unary_unary( + '/flyteidl.cacheservice.CacheService/Put', + request_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.PutCacheRequest.SerializeToString, + response_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.PutCacheResponse.FromString, + ) + self.Delete = channel.unary_unary( + '/flyteidl.cacheservice.CacheService/Delete', + request_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.DeleteCacheRequest.SerializeToString, + response_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.DeleteCacheResponse.FromString, + ) + self.GetOrExtendReservation = channel.unary_unary( + '/flyteidl.cacheservice.CacheService/GetOrExtendReservation', + request_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetOrExtendReservationRequest.SerializeToString, + response_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetOrExtendReservationResponse.FromString, + ) + self.ReleaseReservation = channel.unary_unary( + '/flyteidl.cacheservice.CacheService/ReleaseReservation', + request_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.ReleaseReservationRequest.SerializeToString, + response_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.ReleaseReservationResponse.FromString, + ) + + +class CacheServiceServicer(object): + """ + CacheService defines operations for cache management including retrieval, storage, and deletion of cached task/workflow outputs. + """ + + def Get(self, request, context): + """Retrieves cached data by key. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Put(self, request, context): + """Stores or updates cached data by key. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Delete(self, request, context): + """Deletes cached data by key. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetOrExtendReservation(self, request, context): + """Get or extend a reservation for a cache key + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ReleaseReservation(self, request, context): + """Release the reservation for a cache key + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_CacheServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'Get': grpc.unary_unary_rpc_method_handler( + servicer.Get, + request_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetCacheRequest.FromString, + response_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetCacheResponse.SerializeToString, + ), + 'Put': grpc.unary_unary_rpc_method_handler( + servicer.Put, + request_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.PutCacheRequest.FromString, + response_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.PutCacheResponse.SerializeToString, + ), + 'Delete': grpc.unary_unary_rpc_method_handler( + servicer.Delete, + request_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.DeleteCacheRequest.FromString, + response_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.DeleteCacheResponse.SerializeToString, + ), + 'GetOrExtendReservation': grpc.unary_unary_rpc_method_handler( + servicer.GetOrExtendReservation, + request_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetOrExtendReservationRequest.FromString, + response_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetOrExtendReservationResponse.SerializeToString, + ), + 'ReleaseReservation': grpc.unary_unary_rpc_method_handler( + servicer.ReleaseReservation, + request_deserializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.ReleaseReservationRequest.FromString, + response_serializer=flyteidl_dot_cacheservice_dot_cacheservice__pb2.ReleaseReservationResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'flyteidl.cacheservice.CacheService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class CacheService(object): + """ + CacheService defines operations for cache management including retrieval, storage, and deletion of cached task/workflow outputs. + """ + + @staticmethod + def Get(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.cacheservice.CacheService/Get', + flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetCacheRequest.SerializeToString, + flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetCacheResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def Put(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.cacheservice.CacheService/Put', + flyteidl_dot_cacheservice_dot_cacheservice__pb2.PutCacheRequest.SerializeToString, + flyteidl_dot_cacheservice_dot_cacheservice__pb2.PutCacheResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def Delete(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.cacheservice.CacheService/Delete', + flyteidl_dot_cacheservice_dot_cacheservice__pb2.DeleteCacheRequest.SerializeToString, + flyteidl_dot_cacheservice_dot_cacheservice__pb2.DeleteCacheResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetOrExtendReservation(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.cacheservice.CacheService/GetOrExtendReservation', + flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetOrExtendReservationRequest.SerializeToString, + flyteidl_dot_cacheservice_dot_cacheservice__pb2.GetOrExtendReservationResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def ReleaseReservation(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.cacheservice.CacheService/ReleaseReservation', + flyteidl_dot_cacheservice_dot_cacheservice__pb2.ReleaseReservationRequest.SerializeToString, + flyteidl_dot_cacheservice_dot_cacheservice__pb2.ReleaseReservationResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/flyteidl/gen/pb_rust/flyteidl.cacheservice.rs b/flyteidl/gen/pb_rust/flyteidl.cacheservice.rs new file mode 100644 index 00000000000..9f2122fc4e3 --- /dev/null +++ b/flyteidl/gen/pb_rust/flyteidl.cacheservice.rs @@ -0,0 +1,172 @@ +// @generated +/// +/// Additional metadata as key-value pairs +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct KeyMapMetadata { + /// Additional metadata as key-value pairs + #[prost(map="string, string", tag="1")] + pub values: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +/// +/// Metadata for cached outputs, including the source identifier and timestamps. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Metadata { + /// Source task or workflow identifier + #[prost(message, optional, tag="1")] + pub source_identifier: ::core::option::Option, + /// Additional metadata as key-value pairs + #[prost(message, optional, tag="2")] + pub key_map: ::core::option::Option, + /// Creation timestamp + #[prost(message, optional, tag="3")] + pub created_at: ::core::option::Option<::prost_types::Timestamp>, + /// Last update timestamp + #[prost(message, optional, tag="4")] + pub last_updated_at: ::core::option::Option<::prost_types::Timestamp>, +} +/// +/// Represents cached output, either as literals or an URI, with associated metadata. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CachedOutput { + /// Associated metadata + #[prost(message, optional, tag="3")] + pub metadata: ::core::option::Option, + #[prost(oneof="cached_output::Output", tags="1, 2")] + pub output: ::core::option::Option, +} +/// Nested message and enum types in `CachedOutput`. +pub mod cached_output { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Output { + /// Output literals + #[prost(message, tag="1")] + OutputLiterals(super::super::core::LiteralMap), + /// URI to output data + #[prost(string, tag="2")] + OutputUri(::prost::alloc::string::String), + } +} +/// +/// Request to retrieve cached data by key. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetCacheRequest { + /// Cache key + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, +} +/// +/// Response with cached data for a given key. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetCacheResponse { + /// Cached output + #[prost(message, optional, tag="1")] + pub output: ::core::option::Option, +} +/// +/// Request to store/update cached data by key. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PutCacheRequest { + /// Cache key + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, + /// Output to cache + #[prost(message, optional, tag="2")] + pub output: ::core::option::Option, + /// Overwrite flag + #[prost(bool, tag="3")] + pub overwrite: bool, +} +/// +/// Response message of cache store/update operation. +/// +/// Empty, success indicated by no errors +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PutCacheResponse { +} +/// +/// Request to delete cached data by key. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DeleteCacheRequest { + /// Cache key + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, +} +/// +/// Response message of cache deletion operation. +/// +/// Empty, success indicated by no errors +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DeleteCacheResponse { +} +/// A reservation including owner, heartbeat interval, expiration timestamp, and various metadata. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Reservation { + /// The unique ID for the reservation - same as the cache key + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, + /// The unique ID of the owner for the reservation + #[prost(string, tag="2")] + pub owner_id: ::prost::alloc::string::String, + /// Requested reservation extension heartbeat interval + #[prost(message, optional, tag="3")] + pub heartbeat_interval: ::core::option::Option<::prost_types::Duration>, + /// Expiration timestamp of this reservation + #[prost(message, optional, tag="4")] + pub expires_at: ::core::option::Option<::prost_types::Timestamp>, +} +/// +/// Request to get or extend a reservation for a cache key +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetOrExtendReservationRequest { + /// The unique ID for the reservation - same as the cache key + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, + /// The unique ID of the owner for the reservation + #[prost(string, tag="2")] + pub owner_id: ::prost::alloc::string::String, + /// Requested reservation extension heartbeat interval + #[prost(message, optional, tag="3")] + pub heartbeat_interval: ::core::option::Option<::prost_types::Duration>, +} +/// +/// Request to get or extend a reservation for a cache key +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetOrExtendReservationResponse { + /// The reservation that was created or extended + #[prost(message, optional, tag="1")] + pub reservation: ::core::option::Option, +} +/// +/// Request to release the reservation for a cache key +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ReleaseReservationRequest { + /// The unique ID for the reservation - same as the cache key + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, + /// The unique ID of the owner for the reservation + #[prost(string, tag="2")] + pub owner_id: ::prost::alloc::string::String, +} +/// +/// Response message of release reservation operation. +/// +/// Empty, success indicated by no errors +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ReleaseReservationResponse { +} +// @@protoc_insertion_point(module) diff --git a/flyteidl/generate_mocks.sh b/flyteidl/generate_mocks.sh index 4ada054af19..3e3974def8b 100755 --- a/flyteidl/generate_mocks.sh +++ b/flyteidl/generate_mocks.sh @@ -4,3 +4,4 @@ set -x mockery -dir=gen/pb-go/flyteidl/service/ -all -output=clients/go/admin/mocks mockery -dir=gen/pb-go/flyteidl/datacatalog/ -name=DataCatalogClient -output=clients/go/datacatalog/mocks +mockery -dir=gen/pb-go/flyteidl/cacheservice/ -name=CacheServiceClient -output=clients/go/cacheservice/mocks diff --git a/flyteidl/protos/flyteidl/cacheservice/cacheservice.proto b/flyteidl/protos/flyteidl/cacheservice/cacheservice.proto new file mode 100644 index 00000000000..c85e2eb55c1 --- /dev/null +++ b/flyteidl/protos/flyteidl/cacheservice/cacheservice.proto @@ -0,0 +1,143 @@ +syntax = "proto3"; + +package flyteidl.cacheservice; + +import "flyteidl/core/literals.proto"; +import "flyteidl/core/types.proto"; +import "flyteidl/core/identifier.proto"; +import "flyteidl/core/interface.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/cacheservice"; + +/* + * CacheService defines operations for cache management including retrieval, storage, and deletion of cached task/workflow outputs. + */ +service CacheService { + // Retrieves cached data by key. + rpc Get (GetCacheRequest) returns (GetCacheResponse); + + // Stores or updates cached data by key. + rpc Put (PutCacheRequest) returns (PutCacheResponse); + + // Deletes cached data by key. + rpc Delete (DeleteCacheRequest) returns (DeleteCacheResponse); + + // Get or extend a reservation for a cache key + rpc GetOrExtendReservation (GetOrExtendReservationRequest) returns (GetOrExtendReservationResponse); + + // Release the reservation for a cache key + rpc ReleaseReservation (ReleaseReservationRequest) returns (ReleaseReservationResponse); +} + +/* + * Additional metadata as key-value pairs + */ +message KeyMapMetadata { + map values = 1; // Additional metadata as key-value pairs +} + +/* + * Metadata for cached outputs, including the source identifier and timestamps. + */ +message Metadata { + core.Identifier source_identifier = 1; // Source task or workflow identifier + KeyMapMetadata key_map = 2; // Additional metadata as key-value pairs + google.protobuf.Timestamp created_at = 3; // Creation timestamp + google.protobuf.Timestamp last_updated_at = 4; // Last update timestamp +} + +/* + * Represents cached output, either as literals or an URI, with associated metadata. + */ +message CachedOutput { + oneof output { + flyteidl.core.LiteralMap output_literals = 1; // Output literals + string output_uri = 2; // URI to output data + } + Metadata metadata = 3; // Associated metadata +} + +/* + * Request to retrieve cached data by key. + */ +message GetCacheRequest { + string key = 1; // Cache key +} + +/* + * Response with cached data for a given key. + */ +message GetCacheResponse { + CachedOutput output = 1; // Cached output +} + +/* + * Request to store/update cached data by key. + */ +message PutCacheRequest { + string key = 1; // Cache key + CachedOutput output = 2; // Output to cache + bool overwrite = 3; // Overwrite flag +} + +/* + * Response message of cache store/update operation. + */ +message PutCacheResponse { + // Empty, success indicated by no errors +} + +/* + * Request to delete cached data by key. + */ +message DeleteCacheRequest { + string key = 1; // Cache key +} + +/* + * Response message of cache deletion operation. + */ +message DeleteCacheResponse { + // Empty, success indicated by no errors +} + +// A reservation including owner, heartbeat interval, expiration timestamp, and various metadata. +message Reservation { + string key = 1; // The unique ID for the reservation - same as the cache key + string owner_id = 2; // The unique ID of the owner for the reservation + google.protobuf.Duration heartbeat_interval = 3; // Requested reservation extension heartbeat interval + google.protobuf.Timestamp expires_at = 4; // Expiration timestamp of this reservation +} + +/* + * Request to get or extend a reservation for a cache key + */ +message GetOrExtendReservationRequest { + string key = 1; // The unique ID for the reservation - same as the cache key + string owner_id = 2; // The unique ID of the owner for the reservation + google.protobuf.Duration heartbeat_interval = 3; // Requested reservation extension heartbeat interval +} + +/* + * Request to get or extend a reservation for a cache key + */ +message GetOrExtendReservationResponse { + Reservation reservation = 1; // The reservation that was created or extended +} + +/* + * Request to release the reservation for a cache key + */ +message ReleaseReservationRequest { + string key = 1; // The unique ID for the reservation - same as the cache key + string owner_id = 2; // The unique ID of the owner for the reservation +} + +/* + * Response message of release reservation operation. + */ +message ReleaseReservationResponse { + // Empty, success indicated by no errors +} \ No newline at end of file From 2256c2b6347ca9f1a1f2a01ace9d4db8609a17f6 Mon Sep 17 00:00:00 2001 From: WenChih Lo Date: Fri, 1 Mar 2024 06:16:48 +0800 Subject: [PATCH 053/107] [BUG] Invalid "resources" scope in clusterresourcesync/deployment.yaml (#4916) * fix invalid clusterresourcesync/deployment.yaml Signed-off-by: Ryan Lo * update README.md Signed-off-by: Ryan Lo * update generated yaml files Signed-off-by: Ryan Lo * fix typo Signed-off-by: Ryan Lo --------- Signed-off-by: Ryan Lo --- charts/flyte-core/README.md | 3 ++- .../templates/clusterresourcesync/deployment.yaml | 7 ++++--- charts/flyte-core/values.yaml | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index 73b5fceae5f..31fd4791b9e 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -60,7 +60,7 @@ helm install gateway bitnami/contour -n flyte | cloud_events.eventsPublisher.eventTypes[0] | string | `"all"` | | | cloud_events.eventsPublisher.topicName | string | `"arn:aws:sns:us-east-2:123456:123-my-topic"` | | | cloud_events.type | string | `"aws"` | | -| cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"nodeSelector":{},"podAnnotations":{},"podEnv":{},"podLabels":{},"service_account_name":"flyteadmin","standaloneDeployment":false,"templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | +| cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"nodeSelector":{},"podAnnotations":{},"podEnv":{},"podLabels":{},"resources":{},"service_account_name":"flyteadmin","standaloneDeployment":false,"templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | | cluster_resource_manager.config | object | `{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}}` | Configmap for ClusterResource parameters | | cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. | | cluster_resource_manager.config.cluster_resources.refreshInterval | string | `"5m"` | How frequently to run the sync process | @@ -70,6 +70,7 @@ helm install gateway bitnami/contour -n flyte | cluster_resource_manager.podAnnotations | object | `{}` | Annotations for ClusterResource pods | | cluster_resource_manager.podEnv | object | `{}` | Additional ClusterResource container environment variables | | cluster_resource_manager.podLabels | object | `{}` | Labels for ClusterResource pods | +| cluster_resource_manager.resources | object | `{}` | Resources for ClusterResource deployment | | cluster_resource_manager.service_account_name | string | `"flyteadmin"` | Service account name to run with | | cluster_resource_manager.templates | list | `[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]` | Resource templates that should be applied | | cluster_resource_manager.templates[0] | object | `{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"}` | Template for namespaces resources | diff --git a/charts/flyte-core/templates/clusterresourcesync/deployment.yaml b/charts/flyte-core/templates/clusterresourcesync/deployment.yaml index 19c0b9c48af..a2fb5d04ae0 100644 --- a/charts/flyte-core/templates/clusterresourcesync/deployment.yaml +++ b/charts/flyte-core/templates/clusterresourcesync/deployment.yaml @@ -34,6 +34,10 @@ spec: image: "{{ .Values.flyteadmin.image.repository }}:{{ .Values.flyteadmin.image.tag }}" imagePullPolicy: "{{ .Values.flyteadmin.image.pullPolicy }}" name: sync-cluster-resources + {{- with .Values.cluster_resource_manager.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} volumeMounts: {{- if not .Values.cluster_resource_manager.config.cluster_resources.standaloneDeployment }} {{- include "databaseSecret.volumeMount" . | nindent 10 }} @@ -52,9 +56,6 @@ spec: name: cluster-secrets {{- end }} serviceAccountName: {{ .Values.cluster_resource_manager.service_account_name }} - {{- if .Values.cluster_resource_manager.resources }} - resources: {{- toYaml .Values.cluster_resource_manager.resources | nindent 10 }} - {{- end }} volumes: {{- include "databaseSecret.volume" . | nindent 8 }} - configMap: name: clusterresource-template diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index c104af3e758..d5c21c51310 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -896,6 +896,8 @@ cluster_resource_manager: podLabels: {} # -- nodeSelector for ClusterResource deployment nodeSelector: {} + # -- Resources for ClusterResource deployment + resources: {} # -- Configmap for ClusterResource parameters config: # -- ClusterResource parameters From a946070093f30b3cbed04fd7b006adcbe7279be1 Mon Sep 17 00:00:00 2001 From: Chi-Sheng Liu Date: Fri, 1 Mar 2024 17:06:50 +0800 Subject: [PATCH 054/107] docs: Remove redundant dollar signs (#4964) Signed-off-by: Chi-Sheng Liu --- docs/community/troubleshoot.rst | 16 ++++++++-------- docs/deployment/deployment/multicluster.rst | 9 ++++++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/community/troubleshoot.rst b/docs/community/troubleshoot.rst index 1228b5f5a0f..41bc6624c39 100644 --- a/docs/community/troubleshoot.rst +++ b/docs/community/troubleshoot.rst @@ -14,7 +14,7 @@ Before getting started, collect the following information from the underlying in .. prompt:: bash $ - $ kubectl describe pod -n + kubectl describe pod -n Where will typically correspond to the node execution string that you can find in the UI. @@ -23,7 +23,7 @@ Where will typically correspond to the node execution string that you .. prompt:: bash $ - $ kubectl logs pods -n + kubectl logs pods -n Where will typically correspond to the Flyte -, e.g. flytesnacks-development. @@ -70,7 +70,7 @@ This issue is more common on MacOS devices. Make sure that your Docker daemon ha .. prompt:: bash $ - $ flytectl demo start --env HTTP_PROXY= + flytectl demo start --env HTTP_PROXY= - If you're building a custom Docker image, make sure to use a tag other than ``latest``. Otherwise, the Kubernetes default pull policy will be changed from ``IfNotPresent`` to ``Always``, forcing an image pull with every Pod deployment. @@ -85,14 +85,14 @@ Issues running workloads .. prompt:: bash $ - $ export FLYTECTL_CONFIG=~/.flyte/config-sandbox.yaml + export FLYTECTL_CONFIG=~/.flyte/config-sandbox.yaml ``ModuleNotFoundError`` ^^^^^^^^^^^^^^^^^^^^^^^ - If you're using a custom container image and using Docker, make sure your ``Dockerfile`` is located at the same level of the ``flyte`` directory and that there is an empty ``__init__.py`` file in your project's folder : -.. prompt:: bash $ +.. prompt:: myflyteapp ├── Dockerfile @@ -111,11 +111,11 @@ Issues running workloads .. prompt:: bash $ - $ kubectl describe sa -n + kubectl describe sa -n Example output: -.. prompt:: bash $ +.. prompt:: Name: Namespace: flyte @@ -130,7 +130,7 @@ Example output: .. prompt:: bash $ - $ kubectl annotate serviceaccount -n eks.amazonaws.com/role-arn=arn:aws:iam::xxxx:role/ + kubectl annotate serviceaccount -n eks.amazonaws.com/role-arn=arn:aws:iam::xxxx:role/ - Refer to this community-maintained `guides `_ for further information about Flyte deployment on EKS diff --git a/docs/deployment/deployment/multicluster.rst b/docs/deployment/deployment/multicluster.rst index e8c6b84f130..52e0378955f 100644 --- a/docs/deployment/deployment/multicluster.rst +++ b/docs/deployment/deployment/multicluster.rst @@ -398,11 +398,14 @@ label has to be 1. 11. Verify that all Pods in the ``flyte`` namespace are ``Running``: +.. prompt:: bash $ + + kubectl get pods -n flyte + Example output: -.. prompt:: bash $ +.. prompt:: - kubectl get pods -n flyte NAME READY STATUS RESTARTS AGE datacatalog-86f6b9bf64-bp2cj 1/1 Running 0 23h datacatalog-86f6b9bf64-fjzcp 1/1 Running 0 23h @@ -658,4 +661,4 @@ The process can be repeated for additional clusters. 15. A successful execution should be visible on the UI, confirming it ran in the new cluster: - .. image:: https://raw.githubusercontent.com/flyteorg/static-resources/main/common/multicluster-execution.png \ No newline at end of file + .. image:: https://raw.githubusercontent.com/flyteorg/static-resources/main/common/multicluster-execution.png From cf21877017c2bc615fd13a0b21311e2a340085ea Mon Sep 17 00:00:00 2001 From: novahow <58504997+novahow@users.noreply.github.com> Date: Mon, 4 Mar 2024 16:27:35 +0800 Subject: [PATCH 055/107] add hostname to input (#4939) Signed-off-by: novahow --- flyteplugins/go/tasks/logs/logging_utils.go | 1 + .../go/tasks/logs/logging_utils_test.go | 65 +++++++++++++++++-- 2 files changed, 61 insertions(+), 5 deletions(-) diff --git a/flyteplugins/go/tasks/logs/logging_utils.go b/flyteplugins/go/tasks/logs/logging_utils.go index 04d23f4ec87..45d12624dea 100644 --- a/flyteplugins/go/tasks/logs/logging_utils.go +++ b/flyteplugins/go/tasks/logs/logging_utils.go @@ -52,6 +52,7 @@ func GetLogsForContainerInPod(ctx context.Context, logPlugin tasklog.Plugin, tas TaskExecutionID: taskExecID, ExtraTemplateVars: extraLogTemplateVars, TaskTemplate: taskTemplate, + HostName: pod.Spec.Hostname, }, ) diff --git a/flyteplugins/go/tasks/logs/logging_utils_test.go b/flyteplugins/go/tasks/logs/logging_utils_test.go index 946d069d50f..e8c716e3410 100644 --- a/flyteplugins/go/tasks/logs/logging_utils_test.go +++ b/flyteplugins/go/tasks/logs/logging_utils_test.go @@ -210,6 +210,40 @@ func TestGetLogsForContainerInPod_All(t *testing.T) { assert.Len(t, logs, 2) } +func TestGetLogsForContainerInPod_HostName(t *testing.T) { + logPlugin, err := InitializeLogPlugins(&LogConfig{ + IsKubernetesEnabled: true, + KubernetesURL: "k8s.com", + IsCloudwatchEnabled: true, + CloudwatchRegion: "us-east-1", + CloudwatchLogGroup: "/kubernetes/flyte-production", + }) + assert.NoError(t, err) + + pod := &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "ContainerName", + }, + }, + Hostname: "my-hostname", + }, + Status: v1.PodStatus{ + ContainerStatuses: []v1.ContainerStatus{ + { + ContainerID: "ContainerID", + }, + }, + }, + } + pod.Name = podName + + logs, err := GetLogsForContainerInPod(context.TODO(), logPlugin, dummyTaskExecID(), pod, 0, " Suffix", nil, nil) + assert.Nil(t, err) + assert.Len(t, logs, 2) +} + func TestGetLogsForContainerInPod_Stackdriver(t *testing.T) { logPlugin, err := InitializeLogPlugins(&LogConfig{ IsStackDriverEnabled: true, @@ -268,7 +302,7 @@ func TestGetLogsForContainerInPod_LegacyTemplate(t *testing.T) { MessageFormat: core.TaskLog_JSON, Name: "Stackdriver Logs my-Suffix", }, - }) + }, "") }) t.Run("StackDriver", func(t *testing.T) { @@ -281,11 +315,11 @@ func TestGetLogsForContainerInPod_LegacyTemplate(t *testing.T) { MessageFormat: core.TaskLog_JSON, Name: "Stackdriver Logs my-Suffix", }, - }) + }, "") }) } -func assertTestSucceeded(tb testing.TB, config *LogConfig, taskTemplate *core.TaskTemplate, expectedTaskLogs []*core.TaskLog) { +func assertTestSucceeded(tb testing.TB, config *LogConfig, taskTemplate *core.TaskTemplate, expectedTaskLogs []*core.TaskLog, hostname string) { logPlugin, err := InitializeLogPlugins(config) assert.NoError(tb, err) @@ -300,6 +334,7 @@ func assertTestSucceeded(tb testing.TB, config *LogConfig, taskTemplate *core.Ta Name: "ContainerName", }, }, + Hostname: hostname, }, Status: v1.PodStatus{ ContainerStatuses: []v1.ContainerStatus{ @@ -347,7 +382,27 @@ func TestGetLogsForContainerInPod_Templates(t *testing.T) { MessageFormat: core.TaskLog_JSON, Name: "Internal my-Suffix", }, - }) + }, "") +} + +func TestGetLogsForContainerInPodTemplates_Hostname(t *testing.T) { + assertTestSucceeded(t, &LogConfig{ + Templates: []tasklog.TemplateLogPlugin{ + { + DisplayName: "StackDriver", + TemplateURIs: []string{ + "{{ .hostname }}/{{ .namespace }}/{{ .podName }}/{{ .containerName }}/{{ .containerId }}", + }, + MessageFormat: core.TaskLog_JSON, + }, + }, + }, nil, []*core.TaskLog{ + { + Uri: "my-hostname/my-namespace/my-pod/ContainerName/ContainerID", + MessageFormat: core.TaskLog_JSON, + Name: "StackDriver my-Suffix", + }, + }, "my-hostname") } func TestGetLogsForContainerInPod_Flyteinteractive(t *testing.T) { @@ -507,7 +562,7 @@ func TestGetLogsForContainerInPod_Flyteinteractive(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - assertTestSucceeded(t, tt.config, tt.template, tt.expectedTaskLogs) + assertTestSucceeded(t, tt.config, tt.template, tt.expectedTaskLogs, "") }) } } From 4a95abffbe3d2782e01ddcda6ad1ab15b962b8cb Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Mon, 4 Mar 2024 14:16:47 -0800 Subject: [PATCH 056/107] Fix Monodocs build (#5000) Signed-off-by: Kevin Su --- .github/workflows/tests.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index aea9e0fabbc..831beda79d9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -27,20 +27,35 @@ jobs: docs: runs-on: ubuntu-latest steps: - - name: Fetch the code + - name: Fetch flyte code + uses: actions/checkout@v4 + with: + path: "${{ github.workspace }}/flyte" + - name: Fetch flytekit code uses: actions/checkout@v4 + with: + repository: flyteorg/flytekit + path: "${{ github.workspace }}/flytekit" - uses: conda-incubator/setup-miniconda@v3 with: auto-update-conda: true python-version: 3.9 - shell: bash -el {0} + working-directory: ${{ github.workspace }}/flyte run: | conda install -c conda-forge conda-lock conda-lock install -n monodocs-env monodocs-environment.lock.yaml - shell: bash -el {0} + working-directory: ${{ github.workspace }}/flyte run: | conda activate monodocs-env + export SETUPTOOLS_SCM_PRETEND_VERSION="2.0.0" pip install -e ./flyteidl + - shell: bash -el {0} + working-directory: ${{ github.workspace }}/flytekit + run: | + conda activate monodocs-env + pip install -e . conda info conda list conda config --show-sources @@ -49,6 +64,7 @@ jobs: - name: Setup Graphviz uses: ts-graphviz/setup-graphviz@v1 - name: Build the documentation + working-directory: ${{ github.workspace }}/flyte shell: bash -el {0} run: | conda activate monodocs-env From caed58456f3039840081bf42f7775500b542a36b Mon Sep 17 00:00:00 2001 From: Katrina Rogan Date: Mon, 4 Mar 2024 17:50:10 -0800 Subject: [PATCH 057/107] Allow specifying flyte pod webhook deployment resources (#4988) --- charts/flyte-core/README.md | 3 +++ charts/flyte-core/templates/propeller/webhook.yaml | 3 +++ charts/flyte-core/values.yaml | 6 ++++++ deployment/eks/flyte_aws_scheduler_helm_generated.yaml | 5 +++++ deployment/eks/flyte_helm_dataplane_generated.yaml | 5 +++++ deployment/eks/flyte_helm_generated.yaml | 5 +++++ deployment/gcp/flyte_helm_dataplane_generated.yaml | 5 +++++ deployment/gcp/flyte_helm_generated.yaml | 5 +++++ deployment/sandbox/flyte_helm_generated.yaml | 5 +++++ 9 files changed, 42 insertions(+) diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index 31fd4791b9e..6349b01a4bc 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -290,6 +290,9 @@ helm install gateway bitnami/contour -n flyte | storage.s3.secretKey | string | `""` | AWS IAM user secret access key to use for S3 bucket auth, only used if authType is set to accesskey | | storage.type | string | `"sandbox"` | Sets the storage type. Supported values are sandbox, s3, gcs and custom. | | webhook.enabled | bool | `true` | enable or disable secrets webhook | +| webhook.resources.requests.cpu | string | `"200m"` | | +| webhook.resources.requests.ephemeral-storage | string | `"500Mi"` | | +| webhook.resources.requests.memory | string | `"500Mi"` | | | webhook.securityContext | object | `{"fsGroup":65534,"fsGroupChangePolicy":"Always","runAsNonRoot":true,"runAsUser":1001,"seLinuxOptions":{"type":"spc_t"}}` | Sets securityContext for webhook pod(s). | | webhook.service | object | `{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"}` | Service settings for the webhook | | webhook.serviceAccount | object | `{"annotations":{},"create":true,"imagePullSecrets":[]}` | Configuration for service accounts for the webhook | diff --git a/charts/flyte-core/templates/propeller/webhook.yaml b/charts/flyte-core/templates/propeller/webhook.yaml index 941ed1add1f..e34241d905c 100644 --- a/charts/flyte-core/templates/propeller/webhook.yaml +++ b/charts/flyte-core/templates/propeller/webhook.yaml @@ -103,6 +103,9 @@ spec: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] + {{- with .Values.webhook.resources }} + resources: {{- toYaml . | nindent 12 }} + {{- end }} volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index d5c21c51310..de307f66494 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -466,6 +466,12 @@ webhook: seLinuxOptions: type: spc_t + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 500Mi + # ------------------------------------------------ # # COMMON SETTINGS diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index c1865eeb870..5b559bd9dea 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -1411,6 +1411,11 @@ spec: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 500Mi volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index 510ef5c3c88..8d82b6f2a08 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -571,6 +571,11 @@ spec: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 500Mi volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index 4cd67923ba9..25c17010510 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -1541,6 +1541,11 @@ spec: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 500Mi volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index 59a0fca4f63..a63234aec24 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -578,6 +578,11 @@ spec: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 500Mi volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index f220536479b..315c83f1141 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -1563,6 +1563,11 @@ spec: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 500Mi volumeMounts: - name: config-volume mountPath: /etc/flyte/config diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index bfd40edd37e..d8ddf237a6b 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -7306,6 +7306,11 @@ spec: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] + resources: + requests: + cpu: 200m + ephemeral-storage: 500Mi + memory: 500Mi volumeMounts: - name: config-volume mountPath: /etc/flyte/config From 4270c539101bed59e0d4bc2a37a0704550d61982 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Mon, 4 Mar 2024 23:24:36 -0800 Subject: [PATCH 058/107] Pin helmdocs to 1.12.0 (#4995) Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- script/generate_helm.sh | 53 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/script/generate_helm.sh b/script/generate_helm.sh index 43caee82033..1c836b90027 100755 --- a/script/generate_helm.sh +++ b/script/generate_helm.sh @@ -7,7 +7,7 @@ echo "Generating Helm" HELM_SKIP_INSTALL=${HELM_SKIP_INSTALL:-false} if [ "${HELM_SKIP_INSTALL}" != "true" ]; then - curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash + curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash fi helm version @@ -15,7 +15,7 @@ helm version # All the values files to be built DEPLOYMENT_CORE=${1:-eks gcp} -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" HELM_CAPABILITIES="-a rbac.authorization.k8s.io/v1 -a networking.k8s.io/v1/Ingress -a apiextensions.k8s.io/v1/CustomResourceDefinition" helm dep update ${DIR}/../charts/flyte-deps/ @@ -24,49 +24,48 @@ helm dep update ${DIR}/../charts/flyte-binary/ helm dep update ${DIR}/../charts/flyte-sandbox/ helm dep update ${DIR}/../charts/flyte/ -helm template flyte -n flyte ${DIR}/../charts/flyte/ -f ${DIR}/../charts/flyte/values.yaml ${HELM_CAPABILITIES} --debug > ${DIR}/../deployment/sandbox/flyte_helm_generated.yaml +helm template flyte -n flyte ${DIR}/../charts/flyte/ -f ${DIR}/../charts/flyte/values.yaml ${HELM_CAPABILITIES} --debug >${DIR}/../deployment/sandbox/flyte_helm_generated.yaml for deployment in ${DEPLOYMENT_CORE}; do - helm template flyte -n flyte ${DIR}/../charts/flyte-core/ -f ${DIR}/../charts/flyte-core/values.yaml -f ${DIR}/../charts/flyte-core/values-${deployment}.yaml ${HELM_CAPABILITIES} > ${DIR}/../deployment/${deployment}/flyte_helm_generated.yaml - helm template flyte -n flyte ${DIR}/../charts/flyte-core/ -f ${DIR}/../charts/flyte-core/values.yaml -f ${DIR}/../charts/flyte-core/values-${deployment}.yaml -f ${DIR}/../charts/flyte-core/values-controlplane.yaml ${HELM_CAPABILITIES} > ${DIR}/../deployment/${deployment}/flyte_helm_controlplane_generated.yaml - helm template flyte -n flyte ${DIR}/../charts/flyte-core/ -f ${DIR}/../charts/flyte-core/values.yaml -f ${DIR}/../charts/flyte-core/values-${deployment}.yaml -f ${DIR}/../charts/flyte-core/values-dataplane.yaml ${HELM_CAPABILITIES} > ${DIR}/../deployment/${deployment}/flyte_helm_dataplane_generated.yaml + helm template flyte -n flyte ${DIR}/../charts/flyte-core/ -f ${DIR}/../charts/flyte-core/values.yaml -f ${DIR}/../charts/flyte-core/values-${deployment}.yaml ${HELM_CAPABILITIES} >${DIR}/../deployment/${deployment}/flyte_helm_generated.yaml + helm template flyte -n flyte ${DIR}/../charts/flyte-core/ -f ${DIR}/../charts/flyte-core/values.yaml -f ${DIR}/../charts/flyte-core/values-${deployment}.yaml -f ${DIR}/../charts/flyte-core/values-controlplane.yaml ${HELM_CAPABILITIES} >${DIR}/../deployment/${deployment}/flyte_helm_controlplane_generated.yaml + helm template flyte -n flyte ${DIR}/../charts/flyte-core/ -f ${DIR}/../charts/flyte-core/values.yaml -f ${DIR}/../charts/flyte-core/values-${deployment}.yaml -f ${DIR}/../charts/flyte-core/values-dataplane.yaml ${HELM_CAPABILITIES} >${DIR}/../deployment/${deployment}/flyte_helm_dataplane_generated.yaml done # Generate manifest AWS Scheduler -helm template flyte -n flyte ${DIR}/../charts/flyte-core/ -f ${DIR}/../charts/flyte-core/values.yaml -f ${DIR}/../charts/flyte-core/values-eks.yaml -f ${DIR}/../charts/flyte-core/values-eks-override.yaml ${HELM_CAPABILITIES} --debug > ${DIR}/../deployment/eks/flyte_aws_scheduler_helm_generated.yaml +helm template flyte -n flyte ${DIR}/../charts/flyte-core/ -f ${DIR}/../charts/flyte-core/values.yaml -f ${DIR}/../charts/flyte-core/values-eks.yaml -f ${DIR}/../charts/flyte-core/values-eks-override.yaml ${HELM_CAPABILITIES} --debug >${DIR}/../deployment/eks/flyte_aws_scheduler_helm_generated.yaml # Generate manifest deps chart -helm template flyte -n flyte ${DIR}/../charts/flyte-deps/ ${HELM_CAPABILITIES} --debug > ${DIR}/../deployment/sandbox/flyte_sandbox_deps_helm_generated.yaml +helm template flyte -n flyte ${DIR}/../charts/flyte-deps/ ${HELM_CAPABILITIES} --debug >${DIR}/../deployment/sandbox/flyte_sandbox_deps_helm_generated.yaml # Generate manifest single binary chart -helm template flyte -n flyte ${DIR}/../charts/flyte-binary/ ${HELM_CAPABILITIES} --debug > ${DIR}/../deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml +helm template flyte -n flyte ${DIR}/../charts/flyte-binary/ ${HELM_CAPABILITIES} --debug >${DIR}/../deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml # Generate manifest flyte agent -helm template flyte -n flyte ${DIR}/../charts/flyteagent/ ${HELM_CAPABILITIES} --debug > ${DIR}/../deployment/agent/flyte_agent_helm_generated.yaml - +helm template flyte -n flyte ${DIR}/../charts/flyteagent/ ${HELM_CAPABILITIES} --debug >${DIR}/../deployment/agent/flyte_agent_helm_generated.yaml echo "Generating helm docs" -if command -v helm-docs &> /dev/null -then - rm $(which helm-docs) +if command -v helm-docs &>/dev/null; then + rm $(which helm-docs) fi -GO111MODULE=on go install github.com/norwoodj/helm-docs/cmd/helm-docs@latest +# TODO: (https://github.com/flyteorg/flyte/issues/4994) Unpin when moving past go 1.21 +GO111MODULE=on go install github.com/norwoodj/helm-docs/cmd/helm-docs@v1.12.0 ${GOPATH:-~/go}/bin/helm-docs -c ${DIR}/../charts/ # This section is used by GitHub workflow to ensure that the generation step was run if [ -n "$DELTA_CHECK" ]; then - DIRTY=$(git status --porcelain) - if [ -n "$DIRTY" ]; then - echo "FAILED: helm code updated without committing generated code." - echo "Ensure make helm has run and all changes are committed." - DIFF=$(git diff) - echo "diff detected: $DIFF" - DIFF=$(git diff --name-only) - echo "files different: $DIFF" - exit 1 - else - echo "SUCCESS: Generated code is up to date." - fi + DIRTY=$(git status --porcelain) + if [ -n "$DIRTY" ]; then + echo "FAILED: helm code updated without committing generated code." + echo "Ensure make helm has run and all changes are committed." + DIFF=$(git diff) + echo "diff detected: $DIFF" + DIFF=$(git diff --name-only) + echo "files different: $DIFF" + exit 1 + else + echo "SUCCESS: Generated code is up to date." + fi fi From 2adaf612348c9b3d83f4640b0eedba6e2ab33f4c Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Tue, 5 Mar 2024 02:19:09 -0800 Subject: [PATCH 059/107] Specify builder for docker build (#5002) * Specify builder for docker build Signed-off-by: Kevin Su * nit Signed-off-by: Kevin Su --------- Signed-off-by: Kevin Su --- docker/sandbox-bundled/Makefile | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docker/sandbox-bundled/Makefile b/docker/sandbox-bundled/Makefile index d2ec89de8ba..1c080db16a6 100644 --- a/docker/sandbox-bundled/Makefile +++ b/docker/sandbox-bundled/Makefile @@ -3,6 +3,7 @@ mkdir -p images/tar/$(1) docker buildx build \ --build-arg FLYTECONSOLE_VERSION=$(FLYTECONSOLE_VERSION) \ + --builder flyte-sandbox \ --platform linux/$(1) \ --tag flyte-binary:sandbox \ --output type=docker,dest=images/tar/$(1)/flyte-binary.tar \ @@ -10,9 +11,17 @@ docker buildx build \ endef +.PHONY: create_builder +create_builder: + [ -n "$(shell docker buildx ls | awk '/^flyte-sandbox / {print $$1}')" ] || \ + docker buildx create --name flyte-sandbox \ + --driver docker-container --driver-opt image=moby/buildkit:master \ + --buildkitd-flags '--allow-insecure-entitlement security.insecure' \ + --platform linux/arm64,linux/amd64 + .PHONY: flyte flyte: FLYTECONSOLE_VERSION := latest -flyte: +flyte: create_builder $(foreach arch,amd64 arm64,$(call FLYTE_BINARY_BUILD,$(arch))) .PHONY: dep_update @@ -39,11 +48,6 @@ manifests: dep_update .PHONY: build build: flyte dep_update manifests - [ -n "$(shell docker buildx ls | awk '/^flyte-sandbox / {print $$1}')" ] || \ - docker buildx create --name flyte-sandbox \ - --driver docker-container --driver-opt image=moby/buildkit:master \ - --buildkitd-flags '--allow-insecure-entitlement security.insecure' \ - --platform linux/arm64,linux/amd64 docker buildx build --builder flyte-sandbox --allow security.insecure --load \ --tag flyte-sandbox:latest . From 7be904a67048bce7dc56b6f6f986df67e1e7e379 Mon Sep 17 00:00:00 2001 From: Joe Eschen <126913098+squiishyy@users.noreply.github.com> Date: Tue, 5 Mar 2024 11:57:13 -0800 Subject: [PATCH 060/107] Time partition granularity (#4959) Signed-off-by: Yee Hing Tong --- flyteidl/clients/go/assets/admin.swagger.json | 74 ++- .../gen/pb-es/flyteidl/core/artifact_id_pb.ts | 161 ++++- .../gen/pb-go/flyteidl/core/artifact_id.pb.go | 593 +++++++++++++----- .../flyteidl/service/admin.swagger.json | 74 ++- .../flyteidl/service/agent.swagger.json | 44 +- .../external_plugin_service.swagger.json | 44 +- flyteidl/gen/pb-js/flyteidl.d.ts | 141 ++++- flyteidl/gen/pb-js/flyteidl.js | 340 +++++++++- .../flyteidl/core/artifact_id_pb2.py | 44 +- .../flyteidl/core/artifact_id_pb2.pyi | 51 +- flyteidl/gen/pb_rust/flyteidl.core.rs | 90 ++- .../protos/flyteidl/core/artifact_id.proto | 29 +- 12 files changed, 1427 insertions(+), 258 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 191143dd894..7b9045cbe34 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -4197,20 +4197,6 @@ ], "default": "SINGLE" }, - "ComparisonExpressionOperator": { - "type": "string", - "enum": [ - "EQ", - "NEQ", - "GT", - "GTE", - "LT", - "LTE" - ], - "default": "EQ", - "description": "- GT: Greater Than\n - LT: Less Than", - "title": "Binary Operator for each expression" - }, "ConjunctionExpressionLogicalOperator": { "type": "string", "enum": [ @@ -6481,8 +6467,8 @@ "bind_to_time_partition": { "type": "boolean" }, - "transform": { - "type": "string", + "time_transform": { + "$ref": "#/definitions/coreTimeTransform", "title": "This is only relevant in the time partition case" } }, @@ -6750,7 +6736,7 @@ "type": "object", "properties": { "operator": { - "$ref": "#/definitions/ComparisonExpressionOperator" + "$ref": "#/definitions/coreComparisonExpressionOperator" }, "left_value": { "$ref": "#/definitions/coreOperand" @@ -6761,6 +6747,20 @@ }, "description": "Defines a 2-level tree where the root is a comparison operator and Operands are primitives or known variables.\nEach expression results in a boolean result." }, + "coreComparisonExpressionOperator": { + "type": "string", + "enum": [ + "EQ", + "NEQ", + "GT", + "GTE", + "LT", + "LTE" + ], + "default": "EQ", + "description": "- GT: Greater Than\n - LT: Less Than", + "title": "Binary Operator for each expression" + }, "coreCompiledLaunchPlan": { "type": "object", "properties": { @@ -7038,6 +7038,18 @@ }, "description": "GateNode refers to the condition that is required for the gate to successfully complete." }, + "coreGranularity": { + "type": "string", + "enum": [ + "UNSET", + "MINUTE", + "HOUR", + "DAY", + "MONTH" + ], + "default": "UNSET", + "title": "- DAY: default" + }, "coreIOStrategy": { "type": "object", "properties": { @@ -7205,6 +7217,9 @@ }, "input_binding": { "$ref": "#/definitions/coreInputBindingData" + }, + "runtime_binding": { + "$ref": "#/definitions/coreRuntimeBinding" } } }, @@ -7688,6 +7703,9 @@ }, "description": "Retry strategy associated with an executable unit." }, + "coreRuntimeBinding": { + "type": "object" + }, "coreRuntimeMetadata": { "type": "object", "properties": { @@ -8145,6 +8163,20 @@ "properties": { "value": { "$ref": "#/definitions/coreLabelValue" + }, + "granularity": { + "$ref": "#/definitions/coreGranularity" + } + } + }, + "coreTimeTransform": { + "type": "object", + "properties": { + "transform": { + "type": "string" + }, + "op": { + "$ref": "#/definitions/flyteidlcoreOperator" } } }, @@ -8838,6 +8870,14 @@ }, "description": "A generic key value pair." }, + "flyteidlcoreOperator": { + "type": "string", + "enum": [ + "MINUS", + "PLUS" + ], + "default": "MINUS" + }, "flyteidlcoreSchema": { "type": "object", "properties": { diff --git a/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts index 42d063161dd..be92b47b706 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/artifact_id_pb.ts @@ -6,6 +6,66 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; +/** + * @generated from enum flyteidl.core.Granularity + */ +export enum Granularity { + /** + * @generated from enum value: UNSET = 0; + */ + UNSET = 0, + + /** + * @generated from enum value: MINUTE = 1; + */ + MINUTE = 1, + + /** + * @generated from enum value: HOUR = 2; + */ + HOUR = 2, + + /** + * default + * + * @generated from enum value: DAY = 3; + */ + DAY = 3, + + /** + * @generated from enum value: MONTH = 4; + */ + MONTH = 4, +} +// Retrieve enum metadata with: proto3.getEnumType(Granularity) +proto3.util.setEnumType(Granularity, "flyteidl.core.Granularity", [ + { no: 0, name: "UNSET" }, + { no: 1, name: "MINUTE" }, + { no: 2, name: "HOUR" }, + { no: 3, name: "DAY" }, + { no: 4, name: "MONTH" }, +]); + +/** + * @generated from enum flyteidl.core.Operator + */ +export enum Operator { + /** + * @generated from enum value: MINUS = 0; + */ + MINUS = 0, + + /** + * @generated from enum value: PLUS = 1; + */ + PLUS = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(Operator) +proto3.util.setEnumType(Operator, "flyteidl.core.Operator", [ + { no: 0, name: "MINUS" }, + { no: 1, name: "PLUS" }, +]); + /** * @generated from message flyteidl.core.ArtifactKey */ @@ -76,13 +136,13 @@ export class ArtifactBindingData extends Message { */ partitionData: { /** - * @generated from field: string partition_key = 2; + * @generated from field: string partition_key = 5; */ value: string; case: "partitionKey"; } | { /** - * @generated from field: bool bind_to_time_partition = 3; + * @generated from field: bool bind_to_time_partition = 6; */ value: boolean; case: "bindToTimePartition"; @@ -91,9 +151,9 @@ export class ArtifactBindingData extends Message { /** * This is only relevant in the time partition case * - * @generated from field: string transform = 4; + * @generated from field: flyteidl.core.TimeTransform time_transform = 7; */ - transform = ""; + timeTransform?: TimeTransform; constructor(data?: PartialMessage) { super(); @@ -103,9 +163,9 @@ export class ArtifactBindingData extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "flyteidl.core.ArtifactBindingData"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 2, name: "partition_key", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "partition_data" }, - { no: 3, name: "bind_to_time_partition", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "partition_data" }, - { no: 4, name: "transform", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "partition_key", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "partition_data" }, + { no: 6, name: "bind_to_time_partition", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "partition_data" }, + { no: 7, name: "time_transform", kind: "message", T: TimeTransform }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): ArtifactBindingData { @@ -125,6 +185,49 @@ export class ArtifactBindingData extends Message { } } +/** + * @generated from message flyteidl.core.TimeTransform + */ +export class TimeTransform extends Message { + /** + * @generated from field: string transform = 1; + */ + transform = ""; + + /** + * @generated from field: flyteidl.core.Operator op = 2; + */ + op = Operator.MINUS; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.core.TimeTransform"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "transform", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "op", kind: "enum", T: proto3.getEnumType(Operator) }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): TimeTransform { + return new TimeTransform().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): TimeTransform { + return new TimeTransform().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): TimeTransform { + return new TimeTransform().fromJsonString(jsonString, options); + } + + static equals(a: TimeTransform | PlainMessage | undefined, b: TimeTransform | PlainMessage | undefined): boolean { + return proto3.util.equals(TimeTransform, a, b); + } +} + /** * @generated from message flyteidl.core.InputBindingData */ @@ -162,6 +265,37 @@ export class InputBindingData extends Message { } } +/** + * @generated from message flyteidl.core.RuntimeBinding + */ +export class RuntimeBinding extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.core.RuntimeBinding"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RuntimeBinding { + return new RuntimeBinding().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RuntimeBinding { + return new RuntimeBinding().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RuntimeBinding { + return new RuntimeBinding().fromJsonString(jsonString, options); + } + + static equals(a: RuntimeBinding | PlainMessage | undefined, b: RuntimeBinding | PlainMessage | undefined): boolean { + return proto3.util.equals(RuntimeBinding, a, b); + } +} + /** * @generated from message flyteidl.core.LabelValue */ @@ -197,6 +331,12 @@ export class LabelValue extends Message { */ value: InputBindingData; case: "inputBinding"; + } | { + /** + * @generated from field: flyteidl.core.RuntimeBinding runtime_binding = 5; + */ + value: RuntimeBinding; + case: "runtimeBinding"; } | { case: undefined; value?: undefined } = { case: undefined }; constructor(data?: PartialMessage) { @@ -211,6 +351,7 @@ export class LabelValue extends Message { { no: 2, name: "time_value", kind: "message", T: Timestamp, oneof: "value" }, { no: 3, name: "triggered_binding", kind: "message", T: ArtifactBindingData, oneof: "value" }, { no: 4, name: "input_binding", kind: "message", T: InputBindingData, oneof: "value" }, + { no: 5, name: "runtime_binding", kind: "message", T: RuntimeBinding, oneof: "value" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): LabelValue { @@ -276,6 +417,11 @@ export class TimePartition extends Message { */ value?: LabelValue; + /** + * @generated from field: flyteidl.core.Granularity granularity = 2; + */ + granularity = Granularity.UNSET; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -285,6 +431,7 @@ export class TimePartition extends Message { static readonly typeName = "flyteidl.core.TimePartition"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "value", kind: "message", T: LabelValue }, + { no: 2, name: "granularity", kind: "enum", T: proto3.getEnumType(Granularity) }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): TimePartition { diff --git a/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go b/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go index 7d692916a75..9fd82504dd4 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/artifact_id.pb.go @@ -21,6 +21,107 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type Granularity int32 + +const ( + Granularity_UNSET Granularity = 0 + Granularity_MINUTE Granularity = 1 + Granularity_HOUR Granularity = 2 + Granularity_DAY Granularity = 3 // default + Granularity_MONTH Granularity = 4 +) + +// Enum value maps for Granularity. +var ( + Granularity_name = map[int32]string{ + 0: "UNSET", + 1: "MINUTE", + 2: "HOUR", + 3: "DAY", + 4: "MONTH", + } + Granularity_value = map[string]int32{ + "UNSET": 0, + "MINUTE": 1, + "HOUR": 2, + "DAY": 3, + "MONTH": 4, + } +) + +func (x Granularity) Enum() *Granularity { + p := new(Granularity) + *p = x + return p +} + +func (x Granularity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Granularity) Descriptor() protoreflect.EnumDescriptor { + return file_flyteidl_core_artifact_id_proto_enumTypes[0].Descriptor() +} + +func (Granularity) Type() protoreflect.EnumType { + return &file_flyteidl_core_artifact_id_proto_enumTypes[0] +} + +func (x Granularity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Granularity.Descriptor instead. +func (Granularity) EnumDescriptor() ([]byte, []int) { + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{0} +} + +type Operator int32 + +const ( + Operator_MINUS Operator = 0 + Operator_PLUS Operator = 1 +) + +// Enum value maps for Operator. +var ( + Operator_name = map[int32]string{ + 0: "MINUS", + 1: "PLUS", + } + Operator_value = map[string]int32{ + "MINUS": 0, + "PLUS": 1, + } +) + +func (x Operator) Enum() *Operator { + p := new(Operator) + *p = x + return p +} + +func (x Operator) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Operator) Descriptor() protoreflect.EnumDescriptor { + return file_flyteidl_core_artifact_id_proto_enumTypes[1].Descriptor() +} + +func (Operator) Type() protoreflect.EnumType { + return &file_flyteidl_core_artifact_id_proto_enumTypes[1] +} + +func (x Operator) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Operator.Descriptor instead. +func (Operator) EnumDescriptor() ([]byte, []int) { + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{1} +} + type ArtifactKey struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -107,7 +208,7 @@ type ArtifactBindingData struct { // *ArtifactBindingData_BindToTimePartition PartitionData isArtifactBindingData_PartitionData `protobuf_oneof:"partition_data"` // This is only relevant in the time partition case - Transform string `protobuf:"bytes,4,opt,name=transform,proto3" json:"transform,omitempty"` + TimeTransform *TimeTransform `protobuf:"bytes,7,opt,name=time_transform,json=timeTransform,proto3" json:"time_transform,omitempty"` } func (x *ArtifactBindingData) Reset() { @@ -163,11 +264,11 @@ func (x *ArtifactBindingData) GetBindToTimePartition() bool { return false } -func (x *ArtifactBindingData) GetTransform() string { +func (x *ArtifactBindingData) GetTimeTransform() *TimeTransform { if x != nil { - return x.Transform + return x.TimeTransform } - return "" + return nil } type isArtifactBindingData_PartitionData interface { @@ -175,17 +276,72 @@ type isArtifactBindingData_PartitionData interface { } type ArtifactBindingData_PartitionKey struct { - PartitionKey string `protobuf:"bytes,2,opt,name=partition_key,json=partitionKey,proto3,oneof"` + PartitionKey string `protobuf:"bytes,5,opt,name=partition_key,json=partitionKey,proto3,oneof"` } type ArtifactBindingData_BindToTimePartition struct { - BindToTimePartition bool `protobuf:"varint,3,opt,name=bind_to_time_partition,json=bindToTimePartition,proto3,oneof"` + BindToTimePartition bool `protobuf:"varint,6,opt,name=bind_to_time_partition,json=bindToTimePartition,proto3,oneof"` } func (*ArtifactBindingData_PartitionKey) isArtifactBindingData_PartitionData() {} func (*ArtifactBindingData_BindToTimePartition) isArtifactBindingData_PartitionData() {} +type TimeTransform struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transform string `protobuf:"bytes,1,opt,name=transform,proto3" json:"transform,omitempty"` + Op Operator `protobuf:"varint,2,opt,name=op,proto3,enum=flyteidl.core.Operator" json:"op,omitempty"` +} + +func (x *TimeTransform) Reset() { + *x = TimeTransform{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TimeTransform) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TimeTransform) ProtoMessage() {} + +func (x *TimeTransform) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[2] + 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 TimeTransform.ProtoReflect.Descriptor instead. +func (*TimeTransform) Descriptor() ([]byte, []int) { + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{2} +} + +func (x *TimeTransform) GetTransform() string { + if x != nil { + return x.Transform + } + return "" +} + +func (x *TimeTransform) GetOp() Operator { + if x != nil { + return x.Op + } + return Operator_MINUS +} + type InputBindingData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -197,7 +353,7 @@ type InputBindingData struct { func (x *InputBindingData) Reset() { *x = InputBindingData{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[2] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -210,7 +366,7 @@ func (x *InputBindingData) String() string { func (*InputBindingData) ProtoMessage() {} func (x *InputBindingData) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[2] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -223,7 +379,7 @@ func (x *InputBindingData) ProtoReflect() protoreflect.Message { // Deprecated: Use InputBindingData.ProtoReflect.Descriptor instead. func (*InputBindingData) Descriptor() ([]byte, []int) { - return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{2} + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{3} } func (x *InputBindingData) GetVar() string { @@ -233,6 +389,44 @@ func (x *InputBindingData) GetVar() string { return "" } +type RuntimeBinding struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RuntimeBinding) Reset() { + *x = RuntimeBinding{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RuntimeBinding) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RuntimeBinding) ProtoMessage() {} + +func (x *RuntimeBinding) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[4] + 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 RuntimeBinding.ProtoReflect.Descriptor instead. +func (*RuntimeBinding) Descriptor() ([]byte, []int) { + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{4} +} + type LabelValue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -244,13 +438,14 @@ type LabelValue struct { // *LabelValue_TimeValue // *LabelValue_TriggeredBinding // *LabelValue_InputBinding + // *LabelValue_RuntimeBinding Value isLabelValue_Value `protobuf_oneof:"value"` } func (x *LabelValue) Reset() { *x = LabelValue{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[3] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -263,7 +458,7 @@ func (x *LabelValue) String() string { func (*LabelValue) ProtoMessage() {} func (x *LabelValue) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[3] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -276,7 +471,7 @@ func (x *LabelValue) ProtoReflect() protoreflect.Message { // Deprecated: Use LabelValue.ProtoReflect.Descriptor instead. func (*LabelValue) Descriptor() ([]byte, []int) { - return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{3} + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{5} } func (m *LabelValue) GetValue() isLabelValue_Value { @@ -314,6 +509,13 @@ func (x *LabelValue) GetInputBinding() *InputBindingData { return nil } +func (x *LabelValue) GetRuntimeBinding() *RuntimeBinding { + if x, ok := x.GetValue().(*LabelValue_RuntimeBinding); ok { + return x.RuntimeBinding + } + return nil +} + type isLabelValue_Value interface { isLabelValue_Value() } @@ -336,6 +538,10 @@ type LabelValue_InputBinding struct { InputBinding *InputBindingData `protobuf:"bytes,4,opt,name=input_binding,json=inputBinding,proto3,oneof"` } +type LabelValue_RuntimeBinding struct { + RuntimeBinding *RuntimeBinding `protobuf:"bytes,5,opt,name=runtime_binding,json=runtimeBinding,proto3,oneof"` +} + func (*LabelValue_StaticValue) isLabelValue_Value() {} func (*LabelValue_TimeValue) isLabelValue_Value() {} @@ -344,6 +550,8 @@ func (*LabelValue_TriggeredBinding) isLabelValue_Value() {} func (*LabelValue_InputBinding) isLabelValue_Value() {} +func (*LabelValue_RuntimeBinding) isLabelValue_Value() {} + type Partitions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -355,7 +563,7 @@ type Partitions struct { func (x *Partitions) Reset() { *x = Partitions{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[4] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -368,7 +576,7 @@ func (x *Partitions) String() string { func (*Partitions) ProtoMessage() {} func (x *Partitions) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[4] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -381,7 +589,7 @@ func (x *Partitions) ProtoReflect() protoreflect.Message { // Deprecated: Use Partitions.ProtoReflect.Descriptor instead. func (*Partitions) Descriptor() ([]byte, []int) { - return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{4} + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{6} } func (x *Partitions) GetValue() map[string]*LabelValue { @@ -396,13 +604,14 @@ type TimePartition struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Value *LabelValue `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Value *LabelValue `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Granularity Granularity `protobuf:"varint,2,opt,name=granularity,proto3,enum=flyteidl.core.Granularity" json:"granularity,omitempty"` } func (x *TimePartition) Reset() { *x = TimePartition{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[5] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -415,7 +624,7 @@ func (x *TimePartition) String() string { func (*TimePartition) ProtoMessage() {} func (x *TimePartition) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[5] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -428,7 +637,7 @@ func (x *TimePartition) ProtoReflect() protoreflect.Message { // Deprecated: Use TimePartition.ProtoReflect.Descriptor instead. func (*TimePartition) Descriptor() ([]byte, []int) { - return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{5} + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{7} } func (x *TimePartition) GetValue() *LabelValue { @@ -438,6 +647,13 @@ func (x *TimePartition) GetValue() *LabelValue { return nil } +func (x *TimePartition) GetGranularity() Granularity { + if x != nil { + return x.Granularity + } + return Granularity_UNSET +} + type ArtifactID struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -455,7 +671,7 @@ type ArtifactID struct { func (x *ArtifactID) Reset() { *x = ArtifactID{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[6] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -468,7 +684,7 @@ func (x *ArtifactID) String() string { func (*ArtifactID) ProtoMessage() {} func (x *ArtifactID) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[6] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -481,7 +697,7 @@ func (x *ArtifactID) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtifactID.ProtoReflect.Descriptor instead. func (*ArtifactID) Descriptor() ([]byte, []int) { - return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{6} + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{8} } func (x *ArtifactID) GetArtifactKey() *ArtifactKey { @@ -524,7 +740,7 @@ type ArtifactTag struct { func (x *ArtifactTag) Reset() { *x = ArtifactTag{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[7] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -537,7 +753,7 @@ func (x *ArtifactTag) String() string { func (*ArtifactTag) ProtoMessage() {} func (x *ArtifactTag) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[7] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -550,7 +766,7 @@ func (x *ArtifactTag) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtifactTag.ProtoReflect.Descriptor instead. func (*ArtifactTag) Descriptor() ([]byte, []int) { - return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{7} + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{9} } func (x *ArtifactTag) GetArtifactKey() *ArtifactKey { @@ -590,7 +806,7 @@ type ArtifactQuery struct { func (x *ArtifactQuery) Reset() { *x = ArtifactQuery{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[8] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -603,7 +819,7 @@ func (x *ArtifactQuery) String() string { func (*ArtifactQuery) ProtoMessage() {} func (x *ArtifactQuery) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_artifact_id_proto_msgTypes[8] + mi := &file_flyteidl_core_artifact_id_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -616,7 +832,7 @@ func (x *ArtifactQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtifactQuery.ProtoReflect.Descriptor instead. func (*ArtifactQuery) Descriptor() ([]byte, []int) { - return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{8} + return file_flyteidl_core_artifact_id_proto_rawDescGZIP(), []int{10} } func (m *ArtifactQuery) GetIdentifier() isArtifactQuery_Identifier { @@ -700,101 +916,125 @@ var file_flyteidl_core_artifact_id_proto_rawDesc = []byte{ 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x22, 0xa3, 0x01, 0x0a, 0x13, 0x41, 0x72, 0x74, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x22, 0xd0, 0x01, 0x0a, 0x13, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x16, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x13, 0x62, 0x69, 0x6e, 0x64, 0x54, - 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x10, 0x0a, 0x0e, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x24, - 0x0a, 0x10, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x76, 0x61, 0x72, 0x22, 0x92, 0x02, 0x0a, 0x0a, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 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, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x65, 0x64, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, - 0x64, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x0d, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9d, 0x01, 0x0a, 0x0a, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x53, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x40, 0x0a, 0x0d, 0x54, 0x69, 0x6d, - 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x0a, - 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, - 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, - 0x61, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, - 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 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, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x49, 0x44, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, - 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x13, 0x62, 0x69, 0x6e, 0x64, 0x54, + 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, + 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x05, 0x22, 0x56, 0x0a, 0x0d, 0x54, + 0x69, 0x6d, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x02, 0x6f, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, + 0x02, 0x6f, 0x70, 0x22, 0x24, 0x0a, 0x10, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xdc, 0x02, 0x0a, 0x0a, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x3b, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 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, 0x48, + 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x11, + 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x74, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, + 0x46, 0x0a, 0x0d, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x48, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x48, + 0x00, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9d, 0x01, 0x0a, 0x0a, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x53, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7e, 0x0a, 0x0d, 0x54, 0x69, + 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, 0x0a, 0x0b, + 0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x67, + 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x22, 0xe5, 0x01, 0x0a, 0x0a, 0x41, + 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, + 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x61, + 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4b, 0x65, 0x79, + 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 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, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x54, 0x61, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x07, - 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0xb5, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0f, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 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, + 0x74, 0x49, 0x44, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, + 0x64, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x61, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x54, 0x61, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, + 0x61, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x07, 0x62, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x2a, 0x42, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, + 0x69, 0x74, 0x79, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x4d, 0x49, 0x4e, 0x55, 0x54, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x4f, + 0x55, 0x52, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x41, 0x59, 0x10, 0x03, 0x12, 0x09, 0x0a, + 0x05, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x04, 0x2a, 0x1f, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x49, 0x4e, 0x55, 0x53, 0x10, 0x00, 0x12, + 0x08, 0x0a, 0x04, 0x50, 0x4c, 0x55, 0x53, 0x10, 0x01, 0x42, 0xb5, 0x01, 0x0a, 0x11, 0x63, 0x6f, + 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, + 0x0f, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 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 ( @@ -809,40 +1049,49 @@ func file_flyteidl_core_artifact_id_proto_rawDescGZIP() []byte { return file_flyteidl_core_artifact_id_proto_rawDescData } -var file_flyteidl_core_artifact_id_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_flyteidl_core_artifact_id_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_flyteidl_core_artifact_id_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_flyteidl_core_artifact_id_proto_goTypes = []interface{}{ - (*ArtifactKey)(nil), // 0: flyteidl.core.ArtifactKey - (*ArtifactBindingData)(nil), // 1: flyteidl.core.ArtifactBindingData - (*InputBindingData)(nil), // 2: flyteidl.core.InputBindingData - (*LabelValue)(nil), // 3: flyteidl.core.LabelValue - (*Partitions)(nil), // 4: flyteidl.core.Partitions - (*TimePartition)(nil), // 5: flyteidl.core.TimePartition - (*ArtifactID)(nil), // 6: flyteidl.core.ArtifactID - (*ArtifactTag)(nil), // 7: flyteidl.core.ArtifactTag - (*ArtifactQuery)(nil), // 8: flyteidl.core.ArtifactQuery - nil, // 9: flyteidl.core.Partitions.ValueEntry - (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp + (Granularity)(0), // 0: flyteidl.core.Granularity + (Operator)(0), // 1: flyteidl.core.Operator + (*ArtifactKey)(nil), // 2: flyteidl.core.ArtifactKey + (*ArtifactBindingData)(nil), // 3: flyteidl.core.ArtifactBindingData + (*TimeTransform)(nil), // 4: flyteidl.core.TimeTransform + (*InputBindingData)(nil), // 5: flyteidl.core.InputBindingData + (*RuntimeBinding)(nil), // 6: flyteidl.core.RuntimeBinding + (*LabelValue)(nil), // 7: flyteidl.core.LabelValue + (*Partitions)(nil), // 8: flyteidl.core.Partitions + (*TimePartition)(nil), // 9: flyteidl.core.TimePartition + (*ArtifactID)(nil), // 10: flyteidl.core.ArtifactID + (*ArtifactTag)(nil), // 11: flyteidl.core.ArtifactTag + (*ArtifactQuery)(nil), // 12: flyteidl.core.ArtifactQuery + nil, // 13: flyteidl.core.Partitions.ValueEntry + (*timestamppb.Timestamp)(nil), // 14: google.protobuf.Timestamp } var file_flyteidl_core_artifact_id_proto_depIdxs = []int32{ - 10, // 0: flyteidl.core.LabelValue.time_value:type_name -> google.protobuf.Timestamp - 1, // 1: flyteidl.core.LabelValue.triggered_binding:type_name -> flyteidl.core.ArtifactBindingData - 2, // 2: flyteidl.core.LabelValue.input_binding:type_name -> flyteidl.core.InputBindingData - 9, // 3: flyteidl.core.Partitions.value:type_name -> flyteidl.core.Partitions.ValueEntry - 3, // 4: flyteidl.core.TimePartition.value:type_name -> flyteidl.core.LabelValue - 0, // 5: flyteidl.core.ArtifactID.artifact_key:type_name -> flyteidl.core.ArtifactKey - 4, // 6: flyteidl.core.ArtifactID.partitions:type_name -> flyteidl.core.Partitions - 5, // 7: flyteidl.core.ArtifactID.time_partition:type_name -> flyteidl.core.TimePartition - 0, // 8: flyteidl.core.ArtifactTag.artifact_key:type_name -> flyteidl.core.ArtifactKey - 3, // 9: flyteidl.core.ArtifactTag.value:type_name -> flyteidl.core.LabelValue - 6, // 10: flyteidl.core.ArtifactQuery.artifact_id:type_name -> flyteidl.core.ArtifactID - 7, // 11: flyteidl.core.ArtifactQuery.artifact_tag:type_name -> flyteidl.core.ArtifactTag - 1, // 12: flyteidl.core.ArtifactQuery.binding:type_name -> flyteidl.core.ArtifactBindingData - 3, // 13: flyteidl.core.Partitions.ValueEntry.value:type_name -> flyteidl.core.LabelValue - 14, // [14:14] is the sub-list for method output_type - 14, // [14:14] 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 + 4, // 0: flyteidl.core.ArtifactBindingData.time_transform:type_name -> flyteidl.core.TimeTransform + 1, // 1: flyteidl.core.TimeTransform.op:type_name -> flyteidl.core.Operator + 14, // 2: flyteidl.core.LabelValue.time_value:type_name -> google.protobuf.Timestamp + 3, // 3: flyteidl.core.LabelValue.triggered_binding:type_name -> flyteidl.core.ArtifactBindingData + 5, // 4: flyteidl.core.LabelValue.input_binding:type_name -> flyteidl.core.InputBindingData + 6, // 5: flyteidl.core.LabelValue.runtime_binding:type_name -> flyteidl.core.RuntimeBinding + 13, // 6: flyteidl.core.Partitions.value:type_name -> flyteidl.core.Partitions.ValueEntry + 7, // 7: flyteidl.core.TimePartition.value:type_name -> flyteidl.core.LabelValue + 0, // 8: flyteidl.core.TimePartition.granularity:type_name -> flyteidl.core.Granularity + 2, // 9: flyteidl.core.ArtifactID.artifact_key:type_name -> flyteidl.core.ArtifactKey + 8, // 10: flyteidl.core.ArtifactID.partitions:type_name -> flyteidl.core.Partitions + 9, // 11: flyteidl.core.ArtifactID.time_partition:type_name -> flyteidl.core.TimePartition + 2, // 12: flyteidl.core.ArtifactTag.artifact_key:type_name -> flyteidl.core.ArtifactKey + 7, // 13: flyteidl.core.ArtifactTag.value:type_name -> flyteidl.core.LabelValue + 10, // 14: flyteidl.core.ArtifactQuery.artifact_id:type_name -> flyteidl.core.ArtifactID + 11, // 15: flyteidl.core.ArtifactQuery.artifact_tag:type_name -> flyteidl.core.ArtifactTag + 3, // 16: flyteidl.core.ArtifactQuery.binding:type_name -> flyteidl.core.ArtifactBindingData + 7, // 17: flyteidl.core.Partitions.ValueEntry.value:type_name -> flyteidl.core.LabelValue + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_flyteidl_core_artifact_id_proto_init() } @@ -877,7 +1126,7 @@ func file_flyteidl_core_artifact_id_proto_init() { } } file_flyteidl_core_artifact_id_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InputBindingData); i { + switch v := v.(*TimeTransform); i { case 0: return &v.state case 1: @@ -889,7 +1138,7 @@ func file_flyteidl_core_artifact_id_proto_init() { } } file_flyteidl_core_artifact_id_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LabelValue); i { + switch v := v.(*InputBindingData); i { case 0: return &v.state case 1: @@ -901,7 +1150,7 @@ func file_flyteidl_core_artifact_id_proto_init() { } } file_flyteidl_core_artifact_id_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Partitions); i { + switch v := v.(*RuntimeBinding); i { case 0: return &v.state case 1: @@ -913,7 +1162,7 @@ func file_flyteidl_core_artifact_id_proto_init() { } } file_flyteidl_core_artifact_id_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TimePartition); i { + switch v := v.(*LabelValue); i { case 0: return &v.state case 1: @@ -925,7 +1174,7 @@ func file_flyteidl_core_artifact_id_proto_init() { } } file_flyteidl_core_artifact_id_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtifactID); i { + switch v := v.(*Partitions); i { case 0: return &v.state case 1: @@ -937,7 +1186,7 @@ func file_flyteidl_core_artifact_id_proto_init() { } } file_flyteidl_core_artifact_id_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtifactTag); i { + switch v := v.(*TimePartition); i { case 0: return &v.state case 1: @@ -949,6 +1198,30 @@ func file_flyteidl_core_artifact_id_proto_init() { } } file_flyteidl_core_artifact_id_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArtifactID); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_core_artifact_id_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArtifactTag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_core_artifact_id_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArtifactQuery); i { case 0: return &v.state @@ -965,13 +1238,14 @@ func file_flyteidl_core_artifact_id_proto_init() { (*ArtifactBindingData_PartitionKey)(nil), (*ArtifactBindingData_BindToTimePartition)(nil), } - file_flyteidl_core_artifact_id_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_flyteidl_core_artifact_id_proto_msgTypes[5].OneofWrappers = []interface{}{ (*LabelValue_StaticValue)(nil), (*LabelValue_TimeValue)(nil), (*LabelValue_TriggeredBinding)(nil), (*LabelValue_InputBinding)(nil), + (*LabelValue_RuntimeBinding)(nil), } - file_flyteidl_core_artifact_id_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_flyteidl_core_artifact_id_proto_msgTypes[10].OneofWrappers = []interface{}{ (*ArtifactQuery_ArtifactId)(nil), (*ArtifactQuery_ArtifactTag)(nil), (*ArtifactQuery_Uri)(nil), @@ -982,13 +1256,14 @@ func file_flyteidl_core_artifact_id_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_core_artifact_id_proto_rawDesc, - NumEnums: 0, - NumMessages: 10, + NumEnums: 2, + NumMessages: 12, NumExtensions: 0, NumServices: 0, }, GoTypes: file_flyteidl_core_artifact_id_proto_goTypes, DependencyIndexes: file_flyteidl_core_artifact_id_proto_depIdxs, + EnumInfos: file_flyteidl_core_artifact_id_proto_enumTypes, MessageInfos: file_flyteidl_core_artifact_id_proto_msgTypes, }.Build() File_flyteidl_core_artifact_id_proto = out.File 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 191143dd894..7b9045cbe34 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -4197,20 +4197,6 @@ ], "default": "SINGLE" }, - "ComparisonExpressionOperator": { - "type": "string", - "enum": [ - "EQ", - "NEQ", - "GT", - "GTE", - "LT", - "LTE" - ], - "default": "EQ", - "description": "- GT: Greater Than\n - LT: Less Than", - "title": "Binary Operator for each expression" - }, "ConjunctionExpressionLogicalOperator": { "type": "string", "enum": [ @@ -6481,8 +6467,8 @@ "bind_to_time_partition": { "type": "boolean" }, - "transform": { - "type": "string", + "time_transform": { + "$ref": "#/definitions/coreTimeTransform", "title": "This is only relevant in the time partition case" } }, @@ -6750,7 +6736,7 @@ "type": "object", "properties": { "operator": { - "$ref": "#/definitions/ComparisonExpressionOperator" + "$ref": "#/definitions/coreComparisonExpressionOperator" }, "left_value": { "$ref": "#/definitions/coreOperand" @@ -6761,6 +6747,20 @@ }, "description": "Defines a 2-level tree where the root is a comparison operator and Operands are primitives or known variables.\nEach expression results in a boolean result." }, + "coreComparisonExpressionOperator": { + "type": "string", + "enum": [ + "EQ", + "NEQ", + "GT", + "GTE", + "LT", + "LTE" + ], + "default": "EQ", + "description": "- GT: Greater Than\n - LT: Less Than", + "title": "Binary Operator for each expression" + }, "coreCompiledLaunchPlan": { "type": "object", "properties": { @@ -7038,6 +7038,18 @@ }, "description": "GateNode refers to the condition that is required for the gate to successfully complete." }, + "coreGranularity": { + "type": "string", + "enum": [ + "UNSET", + "MINUTE", + "HOUR", + "DAY", + "MONTH" + ], + "default": "UNSET", + "title": "- DAY: default" + }, "coreIOStrategy": { "type": "object", "properties": { @@ -7205,6 +7217,9 @@ }, "input_binding": { "$ref": "#/definitions/coreInputBindingData" + }, + "runtime_binding": { + "$ref": "#/definitions/coreRuntimeBinding" } } }, @@ -7688,6 +7703,9 @@ }, "description": "Retry strategy associated with an executable unit." }, + "coreRuntimeBinding": { + "type": "object" + }, "coreRuntimeMetadata": { "type": "object", "properties": { @@ -8145,6 +8163,20 @@ "properties": { "value": { "$ref": "#/definitions/coreLabelValue" + }, + "granularity": { + "$ref": "#/definitions/coreGranularity" + } + } + }, + "coreTimeTransform": { + "type": "object", + "properties": { + "transform": { + "type": "string" + }, + "op": { + "$ref": "#/definitions/flyteidlcoreOperator" } } }, @@ -8838,6 +8870,14 @@ }, "description": "A generic key value pair." }, + "flyteidlcoreOperator": { + "type": "string", + "enum": [ + "MINUS", + "PLUS" + ], + "default": "MINUS" + }, "flyteidlcoreSchema": { "type": "object", "properties": { 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 ff115cad219..2680d36bdae 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -843,8 +843,8 @@ "bind_to_time_partition": { "type": "boolean" }, - "transform": { - "type": "string", + "time_transform": { + "$ref": "#/definitions/coreTimeTransform", "title": "This is only relevant in the time partition case" } }, @@ -1093,6 +1093,18 @@ }, "description": "Metadata associated with the GPU accelerator to allocate to a task. Contains\ninformation about device type, and for multi-instance GPUs, the partition size to\nuse." }, + "coreGranularity": { + "type": "string", + "enum": [ + "UNSET", + "MINUTE", + "HOUR", + "DAY", + "MONTH" + ], + "default": "UNSET", + "title": "- DAY: default" + }, "coreIOStrategy": { "type": "object", "properties": { @@ -1222,6 +1234,9 @@ }, "input_binding": { "$ref": "#/definitions/coreInputBindingData" + }, + "runtime_binding": { + "$ref": "#/definitions/coreRuntimeBinding" } } }, @@ -1472,6 +1487,9 @@ }, "description": "Retry strategy associated with an executable unit." }, + "coreRuntimeBinding": { + "type": "object" + }, "coreRuntimeMetadata": { "type": "object", "properties": { @@ -1847,6 +1865,20 @@ "properties": { "value": { "$ref": "#/definitions/coreLabelValue" + }, + "granularity": { + "$ref": "#/definitions/coreGranularity" + } + } + }, + "coreTimeTransform": { + "type": "object", + "properties": { + "transform": { + "type": "string" + }, + "op": { + "$ref": "#/definitions/flyteidlcoreOperator" } } }, @@ -2071,6 +2103,14 @@ }, "description": "A generic key value pair." }, + "flyteidlcoreOperator": { + "type": "string", + "enum": [ + "MINUS", + "PLUS" + ], + "default": "MINUS" + }, "flyteidlcoreSchema": { "type": "object", "properties": { 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 eda2434bcd4..cebc48b75bb 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 @@ -173,8 +173,8 @@ "bind_to_time_partition": { "type": "boolean" }, - "transform": { - "type": "string", + "time_transform": { + "$ref": "#/definitions/coreTimeTransform", "title": "This is only relevant in the time partition case" } }, @@ -409,6 +409,18 @@ }, "description": "Metadata associated with the GPU accelerator to allocate to a task. Contains\ninformation about device type, and for multi-instance GPUs, the partition size to\nuse." }, + "coreGranularity": { + "type": "string", + "enum": [ + "UNSET", + "MINUTE", + "HOUR", + "DAY", + "MONTH" + ], + "default": "UNSET", + "title": "- DAY: default" + }, "coreIOStrategy": { "type": "object", "properties": { @@ -538,6 +550,9 @@ }, "input_binding": { "$ref": "#/definitions/coreInputBindingData" + }, + "runtime_binding": { + "$ref": "#/definitions/coreRuntimeBinding" } } }, @@ -776,6 +791,9 @@ }, "description": "Retry strategy associated with an executable unit." }, + "coreRuntimeBinding": { + "type": "object" + }, "coreRuntimeMetadata": { "type": "object", "properties": { @@ -1084,6 +1102,20 @@ "properties": { "value": { "$ref": "#/definitions/coreLabelValue" + }, + "granularity": { + "$ref": "#/definitions/coreGranularity" + } + } + }, + "coreTimeTransform": { + "type": "object", + "properties": { + "transform": { + "type": "string" + }, + "op": { + "$ref": "#/definitions/flyteidlcoreOperator" } } }, @@ -1217,6 +1249,14 @@ }, "description": "A generic key value pair." }, + "flyteidlcoreOperator": { + "type": "string", + "enum": [ + "MINUS", + "PLUS" + ], + "default": "MINUS" + }, "flyteidlcoreSchema": { "type": "object", "properties": { diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index c876340a61d..5cc6b36eeb1 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -84,8 +84,8 @@ export namespace flyteidl { /** ArtifactBindingData bindToTimePartition */ bindToTimePartition?: (boolean|null); - /** ArtifactBindingData transform */ - transform?: (string|null); + /** ArtifactBindingData timeTransform */ + timeTransform?: (flyteidl.core.ITimeTransform|null); } /** Represents an ArtifactBindingData. */ @@ -103,8 +103,8 @@ export namespace flyteidl { /** ArtifactBindingData bindToTimePartition. */ public bindToTimePartition: boolean; - /** ArtifactBindingData transform. */ - public transform: string; + /** ArtifactBindingData timeTransform. */ + public timeTransform?: (flyteidl.core.ITimeTransform|null); /** ArtifactBindingData partitionData. */ public partitionData?: ("partitionKey"|"bindToTimePartition"); @@ -142,6 +142,79 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Granularity enum. */ + enum Granularity { + UNSET = 0, + MINUTE = 1, + HOUR = 2, + DAY = 3, + MONTH = 4 + } + + /** Operator enum. */ + enum Operator { + MINUS = 0, + PLUS = 1 + } + + /** Properties of a TimeTransform. */ + interface ITimeTransform { + + /** TimeTransform transform */ + transform?: (string|null); + + /** TimeTransform op */ + op?: (flyteidl.core.Operator|null); + } + + /** Represents a TimeTransform. */ + class TimeTransform implements ITimeTransform { + + /** + * Constructs a new TimeTransform. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.ITimeTransform); + + /** TimeTransform transform. */ + public transform: string; + + /** TimeTransform op. */ + public op: flyteidl.core.Operator; + + /** + * Creates a new TimeTransform instance using the specified properties. + * @param [properties] Properties to set + * @returns TimeTransform instance + */ + public static create(properties?: flyteidl.core.ITimeTransform): flyteidl.core.TimeTransform; + + /** + * Encodes the specified TimeTransform message. Does not implicitly {@link flyteidl.core.TimeTransform.verify|verify} messages. + * @param message TimeTransform message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.ITimeTransform, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TimeTransform message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TimeTransform + * @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.TimeTransform; + + /** + * Verifies a TimeTransform 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 InputBindingData. */ interface IInputBindingData { @@ -194,6 +267,52 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a RuntimeBinding. */ + interface IRuntimeBinding { + } + + /** Represents a RuntimeBinding. */ + class RuntimeBinding implements IRuntimeBinding { + + /** + * Constructs a new RuntimeBinding. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.IRuntimeBinding); + + /** + * Creates a new RuntimeBinding instance using the specified properties. + * @param [properties] Properties to set + * @returns RuntimeBinding instance + */ + public static create(properties?: flyteidl.core.IRuntimeBinding): flyteidl.core.RuntimeBinding; + + /** + * Encodes the specified RuntimeBinding message. Does not implicitly {@link flyteidl.core.RuntimeBinding.verify|verify} messages. + * @param message RuntimeBinding message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.IRuntimeBinding, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RuntimeBinding message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RuntimeBinding + * @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.RuntimeBinding; + + /** + * Verifies a RuntimeBinding 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 LabelValue. */ interface ILabelValue { @@ -208,6 +327,9 @@ export namespace flyteidl { /** LabelValue inputBinding */ inputBinding?: (flyteidl.core.IInputBindingData|null); + + /** LabelValue runtimeBinding */ + runtimeBinding?: (flyteidl.core.IRuntimeBinding|null); } /** Represents a LabelValue. */ @@ -231,8 +353,11 @@ export namespace flyteidl { /** LabelValue inputBinding. */ public inputBinding?: (flyteidl.core.IInputBindingData|null); + /** LabelValue runtimeBinding. */ + public runtimeBinding?: (flyteidl.core.IRuntimeBinding|null); + /** LabelValue value. */ - public value?: ("staticValue"|"timeValue"|"triggeredBinding"|"inputBinding"); + public value?: ("staticValue"|"timeValue"|"triggeredBinding"|"inputBinding"|"runtimeBinding"); /** * Creates a new LabelValue instance using the specified properties. @@ -324,6 +449,9 @@ export namespace flyteidl { /** TimePartition value */ value?: (flyteidl.core.ILabelValue|null); + + /** TimePartition granularity */ + granularity?: (flyteidl.core.Granularity|null); } /** Represents a TimePartition. */ @@ -338,6 +466,9 @@ export namespace flyteidl { /** TimePartition value. */ public value?: (flyteidl.core.ILabelValue|null); + /** TimePartition granularity. */ + public granularity: flyteidl.core.Granularity; + /** * Creates a new TimePartition instance using the specified properties. * @param [properties] Properties to set diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 161d05475ba..3400b971b3a 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -203,7 +203,7 @@ * @interface IArtifactBindingData * @property {string|null} [partitionKey] ArtifactBindingData partitionKey * @property {boolean|null} [bindToTimePartition] ArtifactBindingData bindToTimePartition - * @property {string|null} [transform] ArtifactBindingData transform + * @property {flyteidl.core.ITimeTransform|null} [timeTransform] ArtifactBindingData timeTransform */ /** @@ -238,12 +238,12 @@ ArtifactBindingData.prototype.bindToTimePartition = false; /** - * ArtifactBindingData transform. - * @member {string} transform + * ArtifactBindingData timeTransform. + * @member {flyteidl.core.ITimeTransform|null|undefined} timeTransform * @memberof flyteidl.core.ArtifactBindingData * @instance */ - ArtifactBindingData.prototype.transform = ""; + ArtifactBindingData.prototype.timeTransform = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -284,11 +284,11 @@ if (!writer) writer = $Writer.create(); if (message.partitionKey != null && message.hasOwnProperty("partitionKey")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.partitionKey); + writer.uint32(/* id 5, wireType 2 =*/42).string(message.partitionKey); if (message.bindToTimePartition != null && message.hasOwnProperty("bindToTimePartition")) - writer.uint32(/* id 3, wireType 0 =*/24).bool(message.bindToTimePartition); - if (message.transform != null && message.hasOwnProperty("transform")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.transform); + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.bindToTimePartition); + if (message.timeTransform != null && message.hasOwnProperty("timeTransform")) + $root.flyteidl.core.TimeTransform.encode(message.timeTransform, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; @@ -310,14 +310,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: + case 5: message.partitionKey = reader.string(); break; - case 3: + case 6: message.bindToTimePartition = reader.bool(); break; - case 4: - message.transform = reader.string(); + case 7: + message.timeTransform = $root.flyteidl.core.TimeTransform.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -351,13 +351,181 @@ if (typeof message.bindToTimePartition !== "boolean") return "bindToTimePartition: boolean expected"; } + if (message.timeTransform != null && message.hasOwnProperty("timeTransform")) { + var error = $root.flyteidl.core.TimeTransform.verify(message.timeTransform); + if (error) + return "timeTransform." + error; + } + return null; + }; + + return ArtifactBindingData; + })(); + + /** + * Granularity enum. + * @name flyteidl.core.Granularity + * @enum {string} + * @property {number} UNSET=0 UNSET value + * @property {number} MINUTE=1 MINUTE value + * @property {number} HOUR=2 HOUR value + * @property {number} DAY=3 DAY value + * @property {number} MONTH=4 MONTH value + */ + core.Granularity = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNSET"] = 0; + values[valuesById[1] = "MINUTE"] = 1; + values[valuesById[2] = "HOUR"] = 2; + values[valuesById[3] = "DAY"] = 3; + values[valuesById[4] = "MONTH"] = 4; + return values; + })(); + + /** + * Operator enum. + * @name flyteidl.core.Operator + * @enum {string} + * @property {number} MINUS=0 MINUS value + * @property {number} PLUS=1 PLUS value + */ + core.Operator = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MINUS"] = 0; + values[valuesById[1] = "PLUS"] = 1; + return values; + })(); + + core.TimeTransform = (function() { + + /** + * Properties of a TimeTransform. + * @memberof flyteidl.core + * @interface ITimeTransform + * @property {string|null} [transform] TimeTransform transform + * @property {flyteidl.core.Operator|null} [op] TimeTransform op + */ + + /** + * Constructs a new TimeTransform. + * @memberof flyteidl.core + * @classdesc Represents a TimeTransform. + * @implements ITimeTransform + * @constructor + * @param {flyteidl.core.ITimeTransform=} [properties] Properties to set + */ + function TimeTransform(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]]; + } + + /** + * TimeTransform transform. + * @member {string} transform + * @memberof flyteidl.core.TimeTransform + * @instance + */ + TimeTransform.prototype.transform = ""; + + /** + * TimeTransform op. + * @member {flyteidl.core.Operator} op + * @memberof flyteidl.core.TimeTransform + * @instance + */ + TimeTransform.prototype.op = 0; + + /** + * Creates a new TimeTransform instance using the specified properties. + * @function create + * @memberof flyteidl.core.TimeTransform + * @static + * @param {flyteidl.core.ITimeTransform=} [properties] Properties to set + * @returns {flyteidl.core.TimeTransform} TimeTransform instance + */ + TimeTransform.create = function create(properties) { + return new TimeTransform(properties); + }; + + /** + * Encodes the specified TimeTransform message. Does not implicitly {@link flyteidl.core.TimeTransform.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.TimeTransform + * @static + * @param {flyteidl.core.ITimeTransform} message TimeTransform message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TimeTransform.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.transform != null && message.hasOwnProperty("transform")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.transform); + if (message.op != null && message.hasOwnProperty("op")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.op); + return writer; + }; + + /** + * Decodes a TimeTransform message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.TimeTransform + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.TimeTransform} TimeTransform + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TimeTransform.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.TimeTransform(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.transform = reader.string(); + break; + case 2: + message.op = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a TimeTransform message. + * @function verify + * @memberof flyteidl.core.TimeTransform + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TimeTransform.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; if (message.transform != null && message.hasOwnProperty("transform")) if (!$util.isString(message.transform)) return "transform: string expected"; + if (message.op != null && message.hasOwnProperty("op")) + switch (message.op) { + default: + return "op: enum value expected"; + case 0: + case 1: + break; + } return null; }; - return ArtifactBindingData; + return TimeTransform; })(); core.InputBindingData = (function() { @@ -470,6 +638,99 @@ return InputBindingData; })(); + core.RuntimeBinding = (function() { + + /** + * Properties of a RuntimeBinding. + * @memberof flyteidl.core + * @interface IRuntimeBinding + */ + + /** + * Constructs a new RuntimeBinding. + * @memberof flyteidl.core + * @classdesc Represents a RuntimeBinding. + * @implements IRuntimeBinding + * @constructor + * @param {flyteidl.core.IRuntimeBinding=} [properties] Properties to set + */ + function RuntimeBinding(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]]; + } + + /** + * Creates a new RuntimeBinding instance using the specified properties. + * @function create + * @memberof flyteidl.core.RuntimeBinding + * @static + * @param {flyteidl.core.IRuntimeBinding=} [properties] Properties to set + * @returns {flyteidl.core.RuntimeBinding} RuntimeBinding instance + */ + RuntimeBinding.create = function create(properties) { + return new RuntimeBinding(properties); + }; + + /** + * Encodes the specified RuntimeBinding message. Does not implicitly {@link flyteidl.core.RuntimeBinding.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.RuntimeBinding + * @static + * @param {flyteidl.core.IRuntimeBinding} message RuntimeBinding message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RuntimeBinding.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Decodes a RuntimeBinding message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.RuntimeBinding + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.RuntimeBinding} RuntimeBinding + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RuntimeBinding.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.RuntimeBinding(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a RuntimeBinding message. + * @function verify + * @memberof flyteidl.core.RuntimeBinding + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RuntimeBinding.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + return RuntimeBinding; + })(); + core.LabelValue = (function() { /** @@ -480,6 +741,7 @@ * @property {google.protobuf.ITimestamp|null} [timeValue] LabelValue timeValue * @property {flyteidl.core.IArtifactBindingData|null} [triggeredBinding] LabelValue triggeredBinding * @property {flyteidl.core.IInputBindingData|null} [inputBinding] LabelValue inputBinding + * @property {flyteidl.core.IRuntimeBinding|null} [runtimeBinding] LabelValue runtimeBinding */ /** @@ -529,17 +791,25 @@ */ LabelValue.prototype.inputBinding = null; + /** + * LabelValue runtimeBinding. + * @member {flyteidl.core.IRuntimeBinding|null|undefined} runtimeBinding + * @memberof flyteidl.core.LabelValue + * @instance + */ + LabelValue.prototype.runtimeBinding = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; /** * LabelValue value. - * @member {"staticValue"|"timeValue"|"triggeredBinding"|"inputBinding"|undefined} value + * @member {"staticValue"|"timeValue"|"triggeredBinding"|"inputBinding"|"runtimeBinding"|undefined} value * @memberof flyteidl.core.LabelValue * @instance */ Object.defineProperty(LabelValue.prototype, "value", { - get: $util.oneOfGetter($oneOfFields = ["staticValue", "timeValue", "triggeredBinding", "inputBinding"]), + get: $util.oneOfGetter($oneOfFields = ["staticValue", "timeValue", "triggeredBinding", "inputBinding", "runtimeBinding"]), set: $util.oneOfSetter($oneOfFields) }); @@ -575,6 +845,8 @@ $root.flyteidl.core.ArtifactBindingData.encode(message.triggeredBinding, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.inputBinding != null && message.hasOwnProperty("inputBinding")) $root.flyteidl.core.InputBindingData.encode(message.inputBinding, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.runtimeBinding != null && message.hasOwnProperty("runtimeBinding")) + $root.flyteidl.core.RuntimeBinding.encode(message.runtimeBinding, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; @@ -608,6 +880,9 @@ case 4: message.inputBinding = $root.flyteidl.core.InputBindingData.decode(reader, reader.uint32()); break; + case 5: + message.runtimeBinding = $root.flyteidl.core.RuntimeBinding.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -663,6 +938,16 @@ return "inputBinding." + error; } } + if (message.runtimeBinding != null && message.hasOwnProperty("runtimeBinding")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.RuntimeBinding.verify(message.runtimeBinding); + if (error) + return "runtimeBinding." + error; + } + } return null; }; @@ -802,6 +1087,7 @@ * @memberof flyteidl.core * @interface ITimePartition * @property {flyteidl.core.ILabelValue|null} [value] TimePartition value + * @property {flyteidl.core.Granularity|null} [granularity] TimePartition granularity */ /** @@ -827,6 +1113,14 @@ */ TimePartition.prototype.value = null; + /** + * TimePartition granularity. + * @member {flyteidl.core.Granularity} granularity + * @memberof flyteidl.core.TimePartition + * @instance + */ + TimePartition.prototype.granularity = 0; + /** * Creates a new TimePartition instance using the specified properties. * @function create @@ -853,6 +1147,8 @@ writer = $Writer.create(); if (message.value != null && message.hasOwnProperty("value")) $root.flyteidl.core.LabelValue.encode(message.value, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.granularity != null && message.hasOwnProperty("granularity")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.granularity); return writer; }; @@ -877,6 +1173,9 @@ case 1: message.value = $root.flyteidl.core.LabelValue.decode(reader, reader.uint32()); break; + case 2: + message.granularity = reader.int32(); + break; default: reader.skipType(tag & 7); break; @@ -901,6 +1200,17 @@ if (error) return "value." + error; } + if (message.granularity != null && message.hasOwnProperty("granularity")) + switch (message.granularity) { + default: + return "granularity: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py index cffe1484c7f..a0cde0f8640 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.py @@ -15,7 +15,7 @@ from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x66lyteidl/core/artifact_id.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\"e\n\x0b\x41rtifactKey\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\x10\n\x03org\x18\x04 \x01(\tR\x03org\"\xa3\x01\n\x13\x41rtifactBindingData\x12%\n\rpartition_key\x18\x02 \x01(\tH\x00R\x0cpartitionKey\x12\x35\n\x16\x62ind_to_time_partition\x18\x03 \x01(\x08H\x00R\x13\x62indToTimePartition\x12\x1c\n\ttransform\x18\x04 \x01(\tR\ttransformB\x10\n\x0epartition_data\"$\n\x10InputBindingData\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\"\x92\x02\n\nLabelValue\x12#\n\x0cstatic_value\x18\x01 \x01(\tH\x00R\x0bstaticValue\x12;\n\ntime_value\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimeValue\x12Q\n\x11triggered_binding\x18\x03 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x10triggeredBinding\x12\x46\n\rinput_binding\x18\x04 \x01(\x0b\x32\x1f.flyteidl.core.InputBindingDataH\x00R\x0cinputBindingB\x07\n\x05value\"\x9d\x01\n\nPartitions\x12:\n\x05value\x18\x01 \x03(\x0b\x32$.flyteidl.core.Partitions.ValueEntryR\x05value\x1aS\n\nValueEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value:\x02\x38\x01\"@\n\rTimePartition\x12/\n\x05value\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xe5\x01\n\nArtifactID\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12\x39\n\npartitions\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.PartitionsR\npartitions\x12\x43\n\x0etime_partition\x18\x04 \x01(\x0b\x32\x1c.flyteidl.core.TimePartitionR\rtimePartition\"}\n\x0b\x41rtifactTag\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xf0\x01\n\rArtifactQuery\x12<\n\x0b\x61rtifact_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.ArtifactIDH\x00R\nartifactId\x12?\n\x0c\x61rtifact_tag\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactTagH\x00R\x0b\x61rtifactTag\x12\x12\n\x03uri\x18\x03 \x01(\tH\x00R\x03uri\x12>\n\x07\x62inding\x18\x04 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x07\x62indingB\x0c\n\nidentifierB\xb5\x01\n\x11\x63om.flyteidl.coreB\x0f\x41rtifactIdProtoP\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\x1f\x66lyteidl/core/artifact_id.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\"e\n\x0b\x41rtifactKey\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\x10\n\x03org\x18\x04 \x01(\tR\x03org\"\xd0\x01\n\x13\x41rtifactBindingData\x12%\n\rpartition_key\x18\x05 \x01(\tH\x00R\x0cpartitionKey\x12\x35\n\x16\x62ind_to_time_partition\x18\x06 \x01(\x08H\x00R\x13\x62indToTimePartition\x12\x43\n\x0etime_transform\x18\x07 \x01(\x0b\x32\x1c.flyteidl.core.TimeTransformR\rtimeTransformB\x10\n\x0epartition_dataJ\x04\x08\x01\x10\x05\"V\n\rTimeTransform\x12\x1c\n\ttransform\x18\x01 \x01(\tR\ttransform\x12\'\n\x02op\x18\x02 \x01(\x0e\x32\x17.flyteidl.core.OperatorR\x02op\"$\n\x10InputBindingData\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\"\x10\n\x0eRuntimeBinding\"\xdc\x02\n\nLabelValue\x12#\n\x0cstatic_value\x18\x01 \x01(\tH\x00R\x0bstaticValue\x12;\n\ntime_value\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimeValue\x12Q\n\x11triggered_binding\x18\x03 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x10triggeredBinding\x12\x46\n\rinput_binding\x18\x04 \x01(\x0b\x32\x1f.flyteidl.core.InputBindingDataH\x00R\x0cinputBinding\x12H\n\x0fruntime_binding\x18\x05 \x01(\x0b\x32\x1d.flyteidl.core.RuntimeBindingH\x00R\x0eruntimeBindingB\x07\n\x05value\"\x9d\x01\n\nPartitions\x12:\n\x05value\x18\x01 \x03(\x0b\x32$.flyteidl.core.Partitions.ValueEntryR\x05value\x1aS\n\nValueEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value:\x02\x38\x01\"~\n\rTimePartition\x12/\n\x05value\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\x12<\n\x0bgranularity\x18\x02 \x01(\x0e\x32\x1a.flyteidl.core.GranularityR\x0bgranularity\"\xe5\x01\n\nArtifactID\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12\x39\n\npartitions\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.PartitionsR\npartitions\x12\x43\n\x0etime_partition\x18\x04 \x01(\x0b\x32\x1c.flyteidl.core.TimePartitionR\rtimePartition\"}\n\x0b\x41rtifactTag\x12=\n\x0c\x61rtifact_key\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactKeyR\x0b\x61rtifactKey\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LabelValueR\x05value\"\xf0\x01\n\rArtifactQuery\x12<\n\x0b\x61rtifact_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.ArtifactIDH\x00R\nartifactId\x12?\n\x0c\x61rtifact_tag\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.ArtifactTagH\x00R\x0b\x61rtifactTag\x12\x12\n\x03uri\x18\x03 \x01(\tH\x00R\x03uri\x12>\n\x07\x62inding\x18\x04 \x01(\x0b\x32\".flyteidl.core.ArtifactBindingDataH\x00R\x07\x62indingB\x0c\n\nidentifier*B\n\x0bGranularity\x12\t\n\x05UNSET\x10\x00\x12\n\n\x06MINUTE\x10\x01\x12\x08\n\x04HOUR\x10\x02\x12\x07\n\x03\x44\x41Y\x10\x03\x12\t\n\x05MONTH\x10\x04*\x1f\n\x08Operator\x12\t\n\x05MINUS\x10\x00\x12\x08\n\x04PLUS\x10\x01\x42\xb5\x01\n\x11\x63om.flyteidl.coreB\x0f\x41rtifactIdProtoP\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) @@ -26,24 +26,32 @@ DESCRIPTOR._serialized_options = b'\n\021com.flyteidl.coreB\017ArtifactIdProtoP\001Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\242\002\003FCX\252\002\rFlyteidl.Core\312\002\rFlyteidl\\Core\342\002\031Flyteidl\\Core\\GPBMetadata\352\002\016Flyteidl::Core' _PARTITIONS_VALUEENTRY._options = None _PARTITIONS_VALUEENTRY._serialized_options = b'8\001' + _globals['_GRANULARITY']._serialized_start=1814 + _globals['_GRANULARITY']._serialized_end=1880 + _globals['_OPERATOR']._serialized_start=1882 + _globals['_OPERATOR']._serialized_end=1913 _globals['_ARTIFACTKEY']._serialized_start=115 _globals['_ARTIFACTKEY']._serialized_end=216 _globals['_ARTIFACTBINDINGDATA']._serialized_start=219 - _globals['_ARTIFACTBINDINGDATA']._serialized_end=382 - _globals['_INPUTBINDINGDATA']._serialized_start=384 - _globals['_INPUTBINDINGDATA']._serialized_end=420 - _globals['_LABELVALUE']._serialized_start=423 - _globals['_LABELVALUE']._serialized_end=697 - _globals['_PARTITIONS']._serialized_start=700 - _globals['_PARTITIONS']._serialized_end=857 - _globals['_PARTITIONS_VALUEENTRY']._serialized_start=774 - _globals['_PARTITIONS_VALUEENTRY']._serialized_end=857 - _globals['_TIMEPARTITION']._serialized_start=859 - _globals['_TIMEPARTITION']._serialized_end=923 - _globals['_ARTIFACTID']._serialized_start=926 - _globals['_ARTIFACTID']._serialized_end=1155 - _globals['_ARTIFACTTAG']._serialized_start=1157 - _globals['_ARTIFACTTAG']._serialized_end=1282 - _globals['_ARTIFACTQUERY']._serialized_start=1285 - _globals['_ARTIFACTQUERY']._serialized_end=1525 + _globals['_ARTIFACTBINDINGDATA']._serialized_end=427 + _globals['_TIMETRANSFORM']._serialized_start=429 + _globals['_TIMETRANSFORM']._serialized_end=515 + _globals['_INPUTBINDINGDATA']._serialized_start=517 + _globals['_INPUTBINDINGDATA']._serialized_end=553 + _globals['_RUNTIMEBINDING']._serialized_start=555 + _globals['_RUNTIMEBINDING']._serialized_end=571 + _globals['_LABELVALUE']._serialized_start=574 + _globals['_LABELVALUE']._serialized_end=922 + _globals['_PARTITIONS']._serialized_start=925 + _globals['_PARTITIONS']._serialized_end=1082 + _globals['_PARTITIONS_VALUEENTRY']._serialized_start=999 + _globals['_PARTITIONS_VALUEENTRY']._serialized_end=1082 + _globals['_TIMEPARTITION']._serialized_start=1084 + _globals['_TIMEPARTITION']._serialized_end=1210 + _globals['_ARTIFACTID']._serialized_start=1213 + _globals['_ARTIFACTID']._serialized_end=1442 + _globals['_ARTIFACTTAG']._serialized_start=1444 + _globals['_ARTIFACTTAG']._serialized_end=1569 + _globals['_ARTIFACTQUERY']._serialized_start=1572 + _globals['_ARTIFACTQUERY']._serialized_end=1812 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi index e1e688c8e4c..c8e5a61a4ae 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/artifact_id_pb2.pyi @@ -1,12 +1,33 @@ from google.protobuf import timestamp_pb2 as _timestamp_pb2 from flyteidl.core import identifier_pb2 as _identifier_pb2 from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union DESCRIPTOR: _descriptor.FileDescriptor +class Granularity(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + UNSET: _ClassVar[Granularity] + MINUTE: _ClassVar[Granularity] + HOUR: _ClassVar[Granularity] + DAY: _ClassVar[Granularity] + MONTH: _ClassVar[Granularity] + +class Operator(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + MINUS: _ClassVar[Operator] + PLUS: _ClassVar[Operator] +UNSET: Granularity +MINUTE: Granularity +HOUR: Granularity +DAY: Granularity +MONTH: Granularity +MINUS: Operator +PLUS: Operator + class ArtifactKey(_message.Message): __slots__ = ["project", "domain", "name", "org"] PROJECT_FIELD_NUMBER: _ClassVar[int] @@ -20,14 +41,22 @@ class ArtifactKey(_message.Message): def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., name: _Optional[str] = ..., org: _Optional[str] = ...) -> None: ... class ArtifactBindingData(_message.Message): - __slots__ = ["partition_key", "bind_to_time_partition", "transform"] + __slots__ = ["partition_key", "bind_to_time_partition", "time_transform"] PARTITION_KEY_FIELD_NUMBER: _ClassVar[int] BIND_TO_TIME_PARTITION_FIELD_NUMBER: _ClassVar[int] - TRANSFORM_FIELD_NUMBER: _ClassVar[int] + TIME_TRANSFORM_FIELD_NUMBER: _ClassVar[int] partition_key: str bind_to_time_partition: bool + time_transform: TimeTransform + def __init__(self, partition_key: _Optional[str] = ..., bind_to_time_partition: bool = ..., time_transform: _Optional[_Union[TimeTransform, _Mapping]] = ...) -> None: ... + +class TimeTransform(_message.Message): + __slots__ = ["transform", "op"] + TRANSFORM_FIELD_NUMBER: _ClassVar[int] + OP_FIELD_NUMBER: _ClassVar[int] transform: str - def __init__(self, partition_key: _Optional[str] = ..., bind_to_time_partition: bool = ..., transform: _Optional[str] = ...) -> None: ... + op: Operator + def __init__(self, transform: _Optional[str] = ..., op: _Optional[_Union[Operator, str]] = ...) -> None: ... class InputBindingData(_message.Message): __slots__ = ["var"] @@ -35,17 +64,23 @@ class InputBindingData(_message.Message): var: str def __init__(self, var: _Optional[str] = ...) -> None: ... +class RuntimeBinding(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + class LabelValue(_message.Message): - __slots__ = ["static_value", "time_value", "triggered_binding", "input_binding"] + __slots__ = ["static_value", "time_value", "triggered_binding", "input_binding", "runtime_binding"] STATIC_VALUE_FIELD_NUMBER: _ClassVar[int] TIME_VALUE_FIELD_NUMBER: _ClassVar[int] TRIGGERED_BINDING_FIELD_NUMBER: _ClassVar[int] INPUT_BINDING_FIELD_NUMBER: _ClassVar[int] + RUNTIME_BINDING_FIELD_NUMBER: _ClassVar[int] static_value: str time_value: _timestamp_pb2.Timestamp triggered_binding: ArtifactBindingData input_binding: InputBindingData - def __init__(self, static_value: _Optional[str] = ..., time_value: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., triggered_binding: _Optional[_Union[ArtifactBindingData, _Mapping]] = ..., input_binding: _Optional[_Union[InputBindingData, _Mapping]] = ...) -> None: ... + runtime_binding: RuntimeBinding + def __init__(self, static_value: _Optional[str] = ..., time_value: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., triggered_binding: _Optional[_Union[ArtifactBindingData, _Mapping]] = ..., input_binding: _Optional[_Union[InputBindingData, _Mapping]] = ..., runtime_binding: _Optional[_Union[RuntimeBinding, _Mapping]] = ...) -> None: ... class Partitions(_message.Message): __slots__ = ["value"] @@ -61,10 +96,12 @@ class Partitions(_message.Message): def __init__(self, value: _Optional[_Mapping[str, LabelValue]] = ...) -> None: ... class TimePartition(_message.Message): - __slots__ = ["value"] + __slots__ = ["value", "granularity"] VALUE_FIELD_NUMBER: _ClassVar[int] + GRANULARITY_FIELD_NUMBER: _ClassVar[int] value: LabelValue - def __init__(self, value: _Optional[_Union[LabelValue, _Mapping]] = ...) -> None: ... + granularity: Granularity + def __init__(self, value: _Optional[_Union[LabelValue, _Mapping]] = ..., granularity: _Optional[_Union[Granularity, str]] = ...) -> None: ... class ArtifactID(_message.Message): __slots__ = ["artifact_key", "version", "partitions", "time_partition"] diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index 07973186b48..a36add78f20 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -731,10 +731,10 @@ pub struct ArtifactKey { #[derive(Clone, PartialEq, ::prost::Message)] pub struct ArtifactBindingData { /// This is only relevant in the time partition case - #[prost(string, tag="4")] - pub transform: ::prost::alloc::string::String, + #[prost(message, optional, tag="7")] + pub time_transform: ::core::option::Option, /// These two fields are only relevant in the partition value case - #[prost(oneof="artifact_binding_data::PartitionData", tags="2, 3")] + #[prost(oneof="artifact_binding_data::PartitionData", tags="5, 6")] pub partition_data: ::core::option::Option, } /// Nested message and enum types in `ArtifactBindingData`. @@ -743,22 +743,34 @@ pub mod artifact_binding_data { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum PartitionData { - #[prost(string, tag="2")] + #[prost(string, tag="5")] PartitionKey(::prost::alloc::string::String), - #[prost(bool, tag="3")] + #[prost(bool, tag="6")] BindToTimePartition(bool), } } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] +pub struct TimeTransform { + #[prost(string, tag="1")] + pub transform: ::prost::alloc::string::String, + #[prost(enumeration="Operator", tag="2")] + pub op: i32, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct InputBindingData { #[prost(string, tag="1")] pub var: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] +pub struct RuntimeBinding { +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct LabelValue { - #[prost(oneof="label_value::Value", tags="1, 2, 3, 4")] + #[prost(oneof="label_value::Value", tags="1, 2, 3, 4, 5")] pub value: ::core::option::Option, } /// Nested message and enum types in `LabelValue`. @@ -776,6 +788,8 @@ pub mod label_value { TriggeredBinding(super::ArtifactBindingData), #[prost(message, tag="4")] InputBinding(super::InputBindingData), + #[prost(message, tag="5")] + RuntimeBinding(super::RuntimeBinding), } } #[allow(clippy::derive_partial_eq_without_eq)] @@ -789,6 +803,8 @@ pub struct Partitions { pub struct TimePartition { #[prost(message, optional, tag="1")] pub value: ::core::option::Option, + #[prost(enumeration="Granularity", tag="2")] + pub granularity: i32, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -841,6 +857,68 @@ pub mod artifact_query { Binding(super::ArtifactBindingData), } } +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Granularity { + Unset = 0, + Minute = 1, + Hour = 2, + /// default + Day = 3, + Month = 4, +} +impl Granularity { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Granularity::Unset => "UNSET", + Granularity::Minute => "MINUTE", + Granularity::Hour => "HOUR", + Granularity::Day => "DAY", + Granularity::Month => "MONTH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UNSET" => Some(Self::Unset), + "MINUTE" => Some(Self::Minute), + "HOUR" => Some(Self::Hour), + "DAY" => Some(Self::Day), + "MONTH" => Some(Self::Month), + _ => None, + } + } +} +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Operator { + Minus = 0, + Plus = 1, +} +impl Operator { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Operator::Minus => "MINUS", + Operator::Plus => "PLUS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MINUS" => Some(Self::Minus), + "PLUS" => Some(Self::Plus), + _ => None, + } + } +} /// Defines a strongly typed variable. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] diff --git a/flyteidl/protos/flyteidl/core/artifact_id.proto b/flyteidl/protos/flyteidl/core/artifact_id.proto index fe887e336a9..022bc20cff6 100644 --- a/flyteidl/protos/flyteidl/core/artifact_id.proto +++ b/flyteidl/protos/flyteidl/core/artifact_id.proto @@ -18,20 +18,41 @@ message ArtifactKey { // Only valid for triggers message ArtifactBindingData { + reserved 1 to 4; // These two fields are only relevant in the partition value case oneof partition_data { - string partition_key = 2; - bool bind_to_time_partition = 3; + string partition_key = 5; + bool bind_to_time_partition = 6; } // This is only relevant in the time partition case - string transform = 4; + TimeTransform time_transform = 7; +} + +enum Granularity { + UNSET = 0; + MINUTE = 1; + HOUR = 2; + DAY = 3; // default + MONTH = 4; +} + +enum Operator { + MINUS = 0; + PLUS = 1; +} + +message TimeTransform { + string transform = 1; + Operator op = 2; } message InputBindingData { string var = 1; } +message RuntimeBinding {} + message LabelValue { oneof value { // The string static value is for use in the Partitions object @@ -41,6 +62,7 @@ message LabelValue { google.protobuf.Timestamp time_value = 2; ArtifactBindingData triggered_binding = 3; InputBindingData input_binding = 4; + RuntimeBinding runtime_binding = 5; } } @@ -50,6 +72,7 @@ message Partitions { message TimePartition { LabelValue value = 1; + Granularity granularity = 2; } message ArtifactID { From da20f7018213326de53d4dfc226ff911006e0367 Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Tue, 5 Mar 2024 14:38:55 -0600 Subject: [PATCH 061/107] add links to contributing guide and code (#5006) Signed-off-by: nikki everett --- docs/flyte_agents/developing_agents.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/flyte_agents/developing_agents.md b/docs/flyte_agents/developing_agents.md index ba114be6c7c..a4a4adc7c73 100644 --- a/docs/flyte_agents/developing_agents.md +++ b/docs/flyte_agents/developing_agents.md @@ -15,7 +15,7 @@ If you need to create a new type of task, we recommend creating a new agent to r ```{note} -We strongly encourage you to contribute your agent to the Flyte community. To do so, follow the steps in "[Contributing to Flyte](https://docs.flyte.org/en/latest/community/contribute.html)", and reach out to us on [Slack](https://docs.flyte.org/en/latest/community/contribute.html#) if you have any questions. +We strongly encourage you to contribute your agent to the Flyte community. To do so, follow the steps in "[Contributing to Flyte](https://docs.flyte.org/en/latest/community/contribute.html)" to add your agent to [Flytekit](https://github.com/flyteorg/flytekit/tree/master/plugins) and [create an example](https://docs.flyte.org/en/latest/flytesnacks/contribute.html) of your agent for the [Integrations](https://docs.flyte.org/en/latest/flytesnacks/integrations.html) documentation. If you have any questions, reach out to us on [Slack](https://docs.flyte.org/en/latest/community/contribute.html#). ``` @@ -31,7 +31,7 @@ While agents can be written in any programming language, we currently only suppo ## Async agent interface specification -To create a new async agent, extend the `AsyncAgentBase` and implement `create`, `get`, and `delete` methods. These methods must be idempotent. +To create a new async agent, extend the [`AsyncAgentBase`](https://github.com/flyteorg/flytekit/blob/master/flytekit/extend/backend/base_agent.py#L127) class and implement `create`, `get`, and `delete` methods. These methods must be idempotent. - `create`: This method is used to initiate a new job. Users have the flexibility to use gRPC, REST, or an SDK to create a job. - `get`: This method retrieves the job resource (jobID or output literal) associated with the task, such as a BigQuery job ID or Databricks task ID. @@ -78,7 +78,7 @@ For an example implementation, see the [BigQuery agent](https://github.com/flyte ## Sync agent interface specification -To create a new sync agent, extend the `SyncAgentBase` class and implement a `do` method. This method must be idempotent. +To create a new sync agent, extend the [`SyncAgentBase`](https://github.com/flyteorg/flytekit/blob/master/flytekit/extend/backend/base_agent.py#L107) class and implement a `do` method. This method must be idempotent. - `do`: This method is used to execute the synchronous task, and the worker in Flyte will be blocked until the method returns. From f9c1a971b268b19ff951151e2bfa3b143d722d9b Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Tue, 5 Mar 2024 14:59:40 -0600 Subject: [PATCH 062/107] update link to flytesnacks repo (#5007) Signed-off-by: nikki everett --- docs/deployment/deployment/cloud_simple.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/deployment/deployment/cloud_simple.rst b/docs/deployment/deployment/cloud_simple.rst index c71708f1f43..94833a0db4b 100644 --- a/docs/deployment/deployment/cloud_simple.rst +++ b/docs/deployment/deployment/cloud_simple.rst @@ -112,8 +112,8 @@ hello world example: .. prompt:: bash $ git clone https://github.com/flyteorg/flytesnacks - cd flytesnacks/cookbook - pyflyte run --remote core/flyte_basics/hello_world.py my_wf + cd flytesnacks/examples/basics + pyflyte run --remote basics/hello_world.py hello_world_wf *********************************** Flyte in on-premises infrastructure From 99dad357a60869dae9d9201b3a9311b03f44f65b Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Tue, 5 Mar 2024 15:17:27 -0800 Subject: [PATCH 063/107] Improve the error message for databricks plugins (#4477) Signed-off-by: Kevin Su Signed-off-by: Kevin Su --- .../internal/webapi/launcher.go | 3 +- .../internal/webapi/launcher_test.go | 5 +- .../plugins/webapi/agent/integration_test.go | 12 +- .../webapi/databricks/integration_test.go | 14 +- .../tasks/plugins/webapi/databricks/plugin.go | 254 ++++++++---------- .../plugins/webapi/databricks/plugin_test.go | 147 ++++++---- 6 files changed, 224 insertions(+), 211 deletions(-) diff --git a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher.go b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher.go index bf6ef791ac5..99a3ccdf7a9 100644 --- a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher.go +++ b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher.go @@ -2,6 +2,7 @@ package webapi import ( "context" + pluginErrors "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors" "time" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" @@ -15,7 +16,7 @@ func launch(ctx context.Context, p webapi.AsyncPlugin, tCtx core.TaskExecutionCo rMeta, r, err := p.Create(ctx, tCtx) if err != nil { logger.Errorf(ctx, "Failed to create resource. Error: %v", err) - return nil, core.PhaseInfo{}, err + return state, core.PhaseInfoRetryableFailure(pluginErrors.TaskFailedWithError, err.Error(), nil), nil } // If the plugin also returned the created resource, check to see if it's already in a terminal state. diff --git a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher_test.go b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher_test.go index 85ba42d0c60..7836cc591d8 100644 --- a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher_test.go @@ -79,8 +79,9 @@ func Test_launch(t *testing.T) { plgn := newPluginWithProperties(webapi.PluginConfig{}) plgn.OnCreate(ctx, tCtx).Return("", nil, fmt.Errorf("error creating")) - _, _, err := launch(ctx, plgn, tCtx, c, &s) - assert.Error(t, err) + _, phase, err := launch(ctx, plgn, tCtx, c, &s) + assert.Nil(t, err) + assert.Equal(t, core.PhaseRetryableFailure, phase.Phase()) }) t.Run("Failed to cache", func(t *testing.T) { diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go b/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go index a4ddc5e3031..689527ee3b4 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go @@ -137,8 +137,8 @@ func TestEndToEnd(t *testing.T) { tCtx.OnInputReader().Return(inputReader) trns, err := plugin.Handle(context.Background(), tCtx) - assert.Error(t, err) - assert.Equal(t, trns.Info().Phase(), core.PhaseUndefined) + assert.Nil(t, err) + assert.Equal(t, trns.Info().Phase(), core.PhaseRetryableFailure) err = plugin.Abort(context.Background(), tCtx) assert.Nil(t, err) }) @@ -155,8 +155,8 @@ func TestEndToEnd(t *testing.T) { assert.NoError(t, err) trns, err := plugin.Handle(context.Background(), tCtx) - assert.Error(t, err) - assert.Equal(t, trns.Info().Phase(), core.PhaseUndefined) + assert.Nil(t, err) + assert.Equal(t, trns.Info().Phase(), core.PhaseRetryableFailure) }) t.Run("failed to read inputs", func(t *testing.T) { @@ -176,8 +176,8 @@ func TestEndToEnd(t *testing.T) { assert.NoError(t, err) trns, err := plugin.Handle(context.Background(), tCtx) - assert.Error(t, err) - assert.Equal(t, trns.Info().Phase(), core.PhaseUndefined) + assert.Nil(t, err) + assert.Equal(t, trns.Info().Phase(), core.PhaseRetryableFailure) }) } diff --git a/flyteplugins/go/tasks/plugins/webapi/databricks/integration_test.go b/flyteplugins/go/tasks/plugins/webapi/databricks/integration_test.go index 651892f6722..d18f4ba79ed 100644 --- a/flyteplugins/go/tasks/plugins/webapi/databricks/integration_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/databricks/integration_test.go @@ -109,8 +109,8 @@ func newFakeDatabricksServer() *httptest.Server { runID := "065168461" jobID := "019e7546" return httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { - if request.URL.Path == fmt.Sprintf("%v/submit", databricksAPI) && request.Method == post { - writer.WriteHeader(202) + if request.URL.Path == fmt.Sprintf("%v/submit", databricksAPI) && request.Method == http.MethodPost { + writer.WriteHeader(http.StatusOK) bytes := []byte(fmt.Sprintf(`{ "run_id": "%v" }`, runID)) @@ -118,8 +118,8 @@ func newFakeDatabricksServer() *httptest.Server { return } - if request.URL.Path == fmt.Sprintf("%v/get", databricksAPI) && request.Method == get { - writer.WriteHeader(200) + if request.URL.Path == fmt.Sprintf("%v/get", databricksAPI) && request.Method == http.MethodGet { + writer.WriteHeader(http.StatusOK) bytes := []byte(fmt.Sprintf(`{ "job_id": "%v", "state": {"state_message": "execution in progress.", "life_cycle_state": "TERMINATED", "result_state": "SUCCESS"} @@ -128,12 +128,12 @@ func newFakeDatabricksServer() *httptest.Server { return } - if request.URL.Path == fmt.Sprintf("%v/cancel", databricksAPI) && request.Method == post { - writer.WriteHeader(200) + if request.URL.Path == fmt.Sprintf("%v/cancel", databricksAPI) && request.Method == http.MethodPost { + writer.WriteHeader(http.StatusOK) return } - writer.WriteHeader(500) + writer.WriteHeader(http.StatusInternalServerError) })) } diff --git a/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go b/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go index 3e9b37ea939..5ebe1d00756 100644 --- a/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go +++ b/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go @@ -6,6 +6,7 @@ import ( "encoding/gob" "encoding/json" "fmt" + "io" "io/ioutil" "net/http" "time" @@ -26,20 +27,20 @@ import ( ) const ( - ErrSystem errors.ErrorCode = "System" - post string = "POST" - get string = "GET" - databricksAPI string = "/api/2.1/jobs/runs" - newCluster string = "new_cluster" - dockerImage string = "docker_image" - sparkConfig string = "spark_conf" - sparkPythonTask string = "spark_python_task" - pythonFile string = "python_file" - parameters string = "parameters" - url string = "url" + create string = "create" + get string = "get" + cancel string = "cancel" + databricksAPI string = "/api/2.1/jobs/runs" + newCluster string = "new_cluster" + dockerImage string = "docker_image" + sparkConfig string = "spark_conf" + sparkPythonTask string = "spark_python_task" + pythonFile string = "python_file" + parameters string = "parameters" + url string = "url" ) -// for mocking/testing purposes, and we'll override this method +// HTTPClient for mocking/testing purposes, and we'll override this method type HTTPClient interface { Do(req *http.Request) (*http.Response, error) } @@ -127,60 +128,41 @@ func (p Plugin) Create(ctx context.Context, taskCtx webapi.TaskExecutionContextR } databricksJob[sparkPythonTask] = map[string]interface{}{pythonFile: p.cfg.EntrypointFile, parameters: modifiedArgs} - req, err := buildRequest(post, databricksJob, p.cfg.databricksEndpoint, - p.cfg.DatabricksInstance, token, "", false) + data, err := p.sendRequest(create, databricksJob, token, "") if err != nil { return nil, nil, err } - resp, err := p.client.Do(req) - if err != nil { - return nil, nil, err - } - defer resp.Body.Close() - data, err := buildResponse(resp) - if err != nil { - return nil, nil, err - } - if data["run_id"] == "" { - return nil, nil, pluginErrors.Wrapf(pluginErrors.RuntimeFailure, err, - "Unable to fetch statementHandle from http response") + if _, ok := data["run_id"]; !ok { + return nil, nil, errors.Errorf("CorruptedPluginState", "can't get the run_id") } runID := fmt.Sprintf("%.0f", data["run_id"]) - return ResourceMetaWrapper{runID, p.cfg.DatabricksInstance, token}, - ResourceWrapper{StatusCode: resp.StatusCode}, nil + return ResourceMetaWrapper{runID, p.cfg.DatabricksInstance, token}, nil, nil } func (p Plugin) Get(ctx context.Context, taskCtx webapi.GetContext) (latest webapi.Resource, err error) { exec := taskCtx.ResourceMeta().(ResourceMetaWrapper) - req, err := buildRequest(get, nil, p.cfg.databricksEndpoint, - p.cfg.DatabricksInstance, exec.Token, exec.RunID, false) - if err != nil { - logger.Errorf(ctx, "Failed to build databricks job request [%v]", err) - return nil, err - } - resp, err := p.client.Do(req) - logger.Debugf(ctx, "Get databricks job response", "resp", resp) + res, err := p.sendRequest(get, nil, exec.Token, exec.RunID) if err != nil { - logger.Errorf(ctx, "Failed to get databricks job status [%v]", resp) return nil, err } - defer resp.Body.Close() - data, err := buildResponse(resp) - if err != nil { - return nil, err - } - if data == nil || data["state"] == nil { + if _, ok := res["state"]; !ok { return nil, errors.Errorf("CorruptedPluginState", "can't get the job state") } - jobState := data["state"].(map[string]interface{}) + jobState := res["state"].(map[string]interface{}) + jobID := fmt.Sprintf("%.0f", res["job_id"]) message := fmt.Sprintf("%s", jobState["state_message"]) - jobID := fmt.Sprintf("%.0f", data["job_id"]) lifeCycleState := fmt.Sprintf("%s", jobState["life_cycle_state"]) - resultState := fmt.Sprintf("%s", jobState["result_state"]) + var resultState string + if _, ok := jobState["result_state"]; !ok { + // The result_state is not available until the job is finished. + // https://docs.databricks.com/en/workflows/jobs/jobs-2.0-api.html#runresultstate + resultState = "" + } else { + resultState = fmt.Sprintf("%s", jobState["result_state"]) + } return ResourceWrapper{ - StatusCode: resp.StatusCode, JobID: jobID, LifeCycleState: lifeCycleState, ResultState: resultState, @@ -193,63 +175,111 @@ func (p Plugin) Delete(ctx context.Context, taskCtx webapi.DeleteContext) error return nil } exec := taskCtx.ResourceMeta().(ResourceMetaWrapper) - req, err := buildRequest(post, nil, p.cfg.databricksEndpoint, - p.cfg.DatabricksInstance, exec.Token, exec.RunID, true) + _, err := p.sendRequest(cancel, nil, exec.Token, exec.RunID) if err != nil { return err } + logger.Info(ctx, "Deleted Databricks job execution.") + + return nil +} + +func (p Plugin) sendRequest(method string, databricksJob map[string]interface{}, token string, runID string) (map[string]interface{}, error) { + var databricksURL string + // for mocking/testing purposes + if p.cfg.databricksEndpoint == "" { + databricksURL = fmt.Sprintf("https://%v%v", p.cfg.DatabricksInstance, databricksAPI) + } else { + databricksURL = fmt.Sprintf("%v%v", p.cfg.databricksEndpoint, databricksAPI) + } + + // build the request spec + var body io.Reader + var httpMethod string + switch method { + case create: + databricksURL += "/submit" + mJSON, err := json.Marshal(databricksJob) + if err != nil { + return nil, fmt.Errorf("failed to marshal the job request: %v", err) + } + body = bytes.NewBuffer(mJSON) + httpMethod = http.MethodPost + case get: + databricksURL += "/get?run_id=" + runID + httpMethod = http.MethodGet + case cancel: + databricksURL += "/cancel" + body = bytes.NewBuffer([]byte(fmt.Sprintf("{ \"run_id\": %v }", runID))) + httpMethod = http.MethodPost + } + + req, err := http.NewRequest(httpMethod, databricksURL, body) + if err != nil { + return nil, err + } + req.Header.Add("Authorization", "Bearer "+token) + req.Header.Add("Content-Type", "application/json") + + // Send the request resp, err := p.client.Do(req) if err != nil { - return err + return nil, fmt.Errorf("failed to send request to Databricks platform with err: [%v]", err) } defer resp.Body.Close() - logger.Infof(ctx, "Deleted query execution [%v]", resp) - return nil + // Parse the response body + responseBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + var data map[string]interface{} + err = json.Unmarshal(responseBody, &data) + if err != nil { + return nil, fmt.Errorf("failed to parse response with err: [%v]", err) + } + if resp.StatusCode != http.StatusOK { + message := "" + if v, ok := data["message"]; ok { + message = v.(string) + } + return nil, fmt.Errorf("failed to %v Databricks job with error [%v]", method, message) + } + return data, nil } func (p Plugin) Status(ctx context.Context, taskCtx webapi.StatusContext) (phase core.PhaseInfo, err error) { exec := taskCtx.ResourceMeta().(ResourceMetaWrapper) resource := taskCtx.Resource().(ResourceWrapper) message := resource.Message - statusCode := resource.StatusCode jobID := resource.JobID lifeCycleState := resource.LifeCycleState resultState := resource.ResultState - if statusCode == 0 { - return core.PhaseInfoUndefined, errors.Errorf(ErrSystem, "No Status field set.") - } - taskInfo := createTaskInfo(exec.RunID, jobID, exec.DatabricksInstance) - switch statusCode { - // Job response format. https://docs.databricks.com/dev-tools/api/latest/jobs.html#operation/JobsRunsSubmit - case http.StatusAccepted: - return core.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, taskInfo), nil - case http.StatusOK: - if lifeCycleState == "TERMINATED" || lifeCycleState == "TERMINATING" || lifeCycleState == "INTERNAL_ERROR" { - if resultState == "SUCCESS" { - if err := writeOutput(ctx, taskCtx); err != nil { - pluginsCore.PhaseInfoFailure(string(rune(statusCode)), "failed to write output", taskInfo) - } - return pluginsCore.PhaseInfoSuccess(taskInfo), nil + switch lifeCycleState { + // Job response format. https://docs.databricks.com/en/workflows/jobs/jobs-2.0-api.html#runlifecyclestate + case "PENDING": + return core.PhaseInfoInitializing(time.Now(), core.DefaultPhaseVersion, message, taskInfo), nil + case "RUNNING": + fallthrough + case "TERMINATING": + return core.PhaseInfoRunning(core.DefaultPhaseVersion, taskInfo), nil + case "TERMINATED": + if resultState == "SUCCESS" { + // Result state details. https://docs.databricks.com/en/workflows/jobs/jobs-2.0-api.html#runresultstate + if err := writeOutput(ctx, taskCtx); err != nil { + return core.PhaseInfoFailure(string(rune(http.StatusInternalServerError)), "failed to write output", taskInfo), nil } - return pluginsCore.PhaseInfoFailure(string(rune(statusCode)), message, taskInfo), nil - } - - if lifeCycleState == "PENDING" { - return core.PhaseInfoInitializing(time.Now(), core.DefaultPhaseVersion, message, taskInfo), nil + return core.PhaseInfoSuccess(taskInfo), nil } - - return core.PhaseInfoRunning(pluginsCore.DefaultPhaseVersion, taskInfo), nil - case http.StatusBadRequest: - fallthrough - case http.StatusInternalServerError: - fallthrough - case http.StatusUnauthorized: - return pluginsCore.PhaseInfoFailure(string(rune(statusCode)), message, taskInfo), nil + return core.PhaseInfoFailure(pluginErrors.TaskFailedWithError, message, taskInfo), nil + case "SKIPPED": + return core.PhaseInfoFailure(string(rune(http.StatusConflict)), message, taskInfo), nil + case "INTERNAL_ERROR": + return core.PhaseInfoFailure(string(rune(http.StatusInternalServerError)), message, taskInfo), nil } - return core.PhaseInfoUndefined, pluginErrors.Errorf(pluginsCore.SystemErrorCode, "unknown execution phase [%v].", statusCode) + return core.PhaseInfoUndefined, pluginErrors.Errorf(pluginsCore.SystemErrorCode, "unknown execution phase [%v].", lifeCycleState) } func writeOutput(ctx context.Context, taskCtx webapi.StatusContext) error { @@ -266,66 +296,6 @@ func writeOutput(ctx context.Context, taskCtx webapi.StatusContext) error { return taskCtx.OutputWriter().Put(ctx, outputReader) } -func buildRequest( - method string, - databricksJob map[string]interface{}, - databricksEndpoint string, - databricksInstance string, - token string, - runID string, - isCancel bool, -) (*http.Request, error) { - var databricksURL string - // for mocking/testing purposes - if databricksEndpoint == "" { - databricksURL = fmt.Sprintf("https://%v%v", databricksInstance, databricksAPI) - } else { - databricksURL = fmt.Sprintf("%v%v", databricksEndpoint, databricksAPI) - } - - var data []byte - var req *http.Request - var err error - if isCancel { - databricksURL += "/cancel" - data = []byte(fmt.Sprintf("{ \"run_id\": %v }", runID)) - } else if method == post { - databricksURL += "/submit" - mJSON, err := json.Marshal(databricksJob) - if err != nil { - return nil, err - } - data = []byte(string(mJSON)) - } else { - databricksURL += "/get?run_id=" + runID - } - - if data == nil { - req, err = http.NewRequest(method, databricksURL, nil) - } else { - req, err = http.NewRequest(method, databricksURL, bytes.NewBuffer(data)) - } - if err != nil { - return nil, err - } - req.Header.Add("Authorization", "Bearer "+token) - req.Header.Add("Content-Type", "application/json") - return req, nil -} - -func buildResponse(response *http.Response) (map[string]interface{}, error) { - responseBody, err := ioutil.ReadAll(response.Body) - if err != nil { - return nil, err - } - var data map[string]interface{} - err = json.Unmarshal(responseBody, &data) - if err != nil { - return nil, err - } - return data, nil -} - func createTaskInfo(runID, jobID, databricksInstance string) *core.TaskInfo { timeNow := time.Now() diff --git a/flyteplugins/go/tasks/plugins/webapi/databricks/plugin_test.go b/flyteplugins/go/tasks/plugins/webapi/databricks/plugin_test.go index fda3ab61b03..228914af93f 100644 --- a/flyteplugins/go/tasks/plugins/webapi/databricks/plugin_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/databricks/plugin_test.go @@ -2,10 +2,8 @@ package databricks import ( "context" - "encoding/json" - "io/ioutil" + "errors" "net/http" - "strings" "testing" "time" @@ -13,21 +11,22 @@ import ( pluginsCore "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" pluginCoreMocks "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks" + "github.com/flyteorg/flyte/flytestdlib/ioutils" "github.com/flyteorg/flyte/flytestdlib/promutils" ) type MockClient struct { + MockDo func(req *http.Request) (*http.Response, error) +} + +func (m MockClient) Do(req *http.Request) (*http.Response, error) { + return m.MockDo(req) } var ( - MockDo func(req *http.Request) (*http.Response, error) testInstance = "test-account.cloud.databricks.com" ) -func (m *MockClient) Do(req *http.Request) (*http.Response, error) { - return MockDo(req) -} - func TestPlugin(t *testing.T) { fakeSetupContext := pluginCoreMocks.SetupContext{} fakeSetupContext.OnMetricsScope().Return(promutils.NewScope("test")) @@ -35,7 +34,9 @@ func TestPlugin(t *testing.T) { plugin := Plugin{ metricScope: fakeSetupContext.MetricsScope(), cfg: GetConfig(), - client: &MockClient{}, + client: &MockClient{func(req *http.Request) (*http.Response, error) { + return nil, nil + }}, } t.Run("get config", func(t *testing.T) { cfg := defaultConfig @@ -53,61 +54,101 @@ func TestPlugin(t *testing.T) { }) } -func TestCreateTaskInfo(t *testing.T) { - t.Run("create task info", func(t *testing.T) { - taskInfo := createTaskInfo("run-id", "job-id", testInstance) +func TestSendRequest(t *testing.T) { + fakeSetupContext := pluginCoreMocks.SetupContext{} + fakeSetupContext.OnMetricsScope().Return(promutils.NewScope("test1")) + databricksJob := map[string]interface{}{"sparkConfig": map[string]interface{}{"sparkVersion": "7.3.x-scala2.12"}} + token := "token" - assert.Equal(t, 1, len(taskInfo.Logs)) - assert.Equal(t, taskInfo.Logs[0].Uri, "https://test-account.cloud.databricks.com/#job/job-id/run/run-id") - assert.Equal(t, taskInfo.Logs[0].Name, "Databricks Console") + plugin := Plugin{ + metricScope: fakeSetupContext.MetricsScope(), + cfg: GetConfig(), + client: &MockClient{MockDo: func(req *http.Request) (*http.Response, error) { + assert.Equal(t, req.Method, http.MethodPost) + return &http.Response{ + StatusCode: http.StatusOK, + Body: ioutils.NewBytesReadCloser([]byte(`{"id":"someID","data":"someData"}`)), + }, nil + }}, + } + + t.Run("create a Databricks job", func(t *testing.T) { + data, err := plugin.sendRequest(create, databricksJob, token, "") + assert.NotNil(t, data) + assert.Equal(t, "someID", data["id"]) + assert.Equal(t, "someData", data["data"]) + assert.Nil(t, err) }) -} -func TestBuildRequest(t *testing.T) { - token := "test-token" - runID := "019e70eb" - databricksEndpoint := "" - databricksURL := "https://" + testInstance + "/api/2.1/jobs/runs" - t.Run("build http request for submitting a databricks job", func(t *testing.T) { - req, err := buildRequest(post, nil, databricksEndpoint, testInstance, token, runID, false) - header := http.Header{} - header.Add("Authorization", "Bearer "+token) - header.Add("Content-Type", "application/json") + t.Run("failed to create a Databricks job", func(t *testing.T) { + plugin.client = &MockClient{MockDo: func(req *http.Request) (*http.Response, error) { + assert.Equal(t, req.Method, http.MethodPost) + return &http.Response{ + StatusCode: http.StatusBadRequest, + Body: ioutils.NewBytesReadCloser([]byte(`{"message":"failed"}`)), + }, nil + }} + data, err := plugin.sendRequest(create, databricksJob, token, "") + assert.Nil(t, data) + assert.Equal(t, err.Error(), "failed to create Databricks job with error [failed]") + }) - assert.NoError(t, err) - assert.Equal(t, header, req.Header) - assert.Equal(t, databricksURL+"/submit", req.URL.String()) - assert.Equal(t, post, req.Method) + t.Run("failed to send request to Databricks", func(t *testing.T) { + plugin.client = &MockClient{MockDo: func(req *http.Request) (*http.Response, error) { + assert.Equal(t, req.Method, http.MethodPost) + return nil, errors.New("failed to send request") + }} + data, err := plugin.sendRequest(create, databricksJob, token, "") + assert.Nil(t, data) + assert.Equal(t, err.Error(), "failed to send request to Databricks platform with err: [failed to send request]") }) - t.Run("Get a databricks spark job status", func(t *testing.T) { - req, err := buildRequest(get, nil, databricksEndpoint, testInstance, token, runID, false) - assert.NoError(t, err) - assert.Equal(t, databricksURL+"/get?run_id="+runID, req.URL.String()) - assert.Equal(t, get, req.Method) + t.Run("failed to send request to Databricks", func(t *testing.T) { + plugin.client = &MockClient{MockDo: func(req *http.Request) (*http.Response, error) { + assert.Equal(t, req.Method, http.MethodPost) + return &http.Response{ + StatusCode: http.StatusOK, + Body: ioutils.NewBytesReadCloser([]byte(`123`)), + }, nil + }} + data, err := plugin.sendRequest(create, databricksJob, token, "") + assert.Nil(t, data) + assert.Equal(t, err.Error(), "failed to parse response with err: [json: cannot unmarshal number into Go value of type map[string]interface {}]") }) - t.Run("Cancel a spark job", func(t *testing.T) { - req, err := buildRequest(post, nil, databricksEndpoint, testInstance, token, runID, true) - assert.NoError(t, err) - assert.Equal(t, databricksURL+"/cancel", req.URL.String()) - assert.Equal(t, post, req.Method) + t.Run("get a Databricks job", func(t *testing.T) { + plugin.client = &MockClient{MockDo: func(req *http.Request) (*http.Response, error) { + assert.Equal(t, req.Method, http.MethodGet) + return &http.Response{ + StatusCode: http.StatusOK, + Body: ioutils.NewBytesReadCloser([]byte(`{"message":"ok"}`)), + }, nil + }} + data, err := plugin.sendRequest(get, databricksJob, token, "") + assert.NotNil(t, data) + assert.Nil(t, err) + }) + + t.Run("cancel a Databricks job", func(t *testing.T) { + plugin.client = &MockClient{MockDo: func(req *http.Request) (*http.Response, error) { + assert.Equal(t, req.Method, http.MethodPost) + return &http.Response{ + StatusCode: http.StatusOK, + Body: ioutils.NewBytesReadCloser([]byte(`{"message":"ok"}`)), + }, nil + }} + data, err := plugin.sendRequest(cancel, databricksJob, token, "") + assert.NotNil(t, data) + assert.Nil(t, err) }) } -func TestBuildResponse(t *testing.T) { - t.Run("build http response", func(t *testing.T) { - bodyStr := `{"job_id":"019c06a4-0000", "message":"Statement executed successfully."}` - responseBody := ioutil.NopCloser(strings.NewReader(bodyStr)) - response := &http.Response{Body: responseBody} - actualData, err := buildResponse(response) - assert.NoError(t, err) +func TestCreateTaskInfo(t *testing.T) { + t.Run("create task info", func(t *testing.T) { + taskInfo := createTaskInfo("run-id", "job-id", testInstance) - bodyByte, err := ioutil.ReadAll(strings.NewReader(bodyStr)) - assert.NoError(t, err) - var expectedData map[string]interface{} - err = json.Unmarshal(bodyByte, &expectedData) - assert.NoError(t, err) - assert.Equal(t, expectedData, actualData) + assert.Equal(t, 1, len(taskInfo.Logs)) + assert.Equal(t, taskInfo.Logs[0].Uri, "https://test-account.cloud.databricks.com/#job/job-id/run/run-id") + assert.Equal(t, taskInfo.Logs[0].Name, "Databricks Console") }) } From 610830ccf9f5abfaa12e38934709f8dfb5988480 Mon Sep 17 00:00:00 2001 From: Flyte Bot Date: Tue, 5 Mar 2024 15:18:56 -0800 Subject: [PATCH 064/107] Update Flyte components (#5008) Signed-off-by: Flyte-Bot Signed-off-by: Yee Hing Tong --- CHANGELOG/CHANGELOG-v1.11.0-b1.md | 3 ++ charts/flyte-binary/README.md | 2 +- charts/flyte-binary/values.yaml | 2 +- charts/flyte-core/README.md | 14 ++++---- charts/flyte-core/values.yaml | 12 +++---- charts/flyte/README.md | 18 +++++----- charts/flyte/values.yaml | 12 +++---- .../flyte_aws_scheduler_helm_generated.yaml | 32 ++++++++--------- deployment/eks/flyte_generated.yaml | 24 ++++++------- .../flyte_helm_controlplane_generated.yaml | 22 ++++++------ .../eks/flyte_helm_dataplane_generated.yaml | 14 ++++---- deployment/eks/flyte_helm_generated.yaml | 36 +++++++++---------- .../flyte_helm_controlplane_generated.yaml | 22 ++++++------ .../gcp/flyte_helm_dataplane_generated.yaml | 14 ++++---- deployment/gcp/flyte_helm_generated.yaml | 36 +++++++++---------- .../flyte_sandbox_binary_helm_generated.yaml | 4 +-- deployment/sandbox/flyte_helm_generated.yaml | 36 +++++++++---------- .../manifests/complete-agent.yaml | 8 ++--- .../sandbox-bundled/manifests/complete.yaml | 8 ++--- docker/sandbox-bundled/manifests/dev.yaml | 4 +-- docs/conf.py | 2 +- kustomize/overlays/eks/kustomization.yaml | 10 +++--- 22 files changed, 169 insertions(+), 166 deletions(-) create mode 100644 CHANGELOG/CHANGELOG-v1.11.0-b1.md diff --git a/CHANGELOG/CHANGELOG-v1.11.0-b1.md b/CHANGELOG/CHANGELOG-v1.11.0-b1.md new file mode 100644 index 00000000000..be0c9414a26 --- /dev/null +++ b/CHANGELOG/CHANGELOG-v1.11.0-b1.md @@ -0,0 +1,3 @@ +# Flyte v1.11.0-b1 + +Second beta release for 1.11.0. \ No newline at end of file diff --git a/charts/flyte-binary/README.md b/charts/flyte-binary/README.md index 99aa1c40b13..78c301f2b36 100644 --- a/charts/flyte-binary/README.md +++ b/charts/flyte-binary/README.md @@ -42,7 +42,7 @@ Chart for basic single Flyte executable deployment | configuration.auth.oidc.clientId | string | `""` | | | configuration.auth.oidc.clientSecret | string | `""` | | | configuration.co-pilot.image.repository | string | `"cr.flyte.org/flyteorg/flytecopilot"` | | -| configuration.co-pilot.image.tag | string | `"v1.11.0-b0"` | | +| configuration.co-pilot.image.tag | string | `"v1.11.0-b1"` | | | configuration.database.dbname | string | `"flyte"` | | | configuration.database.host | string | `"127.0.0.1"` | | | configuration.database.options | string | `"sslmode=disable"` | | diff --git a/charts/flyte-binary/values.yaml b/charts/flyte-binary/values.yaml index 0da15a1855a..61bb73e72d5 100644 --- a/charts/flyte-binary/values.yaml +++ b/charts/flyte-binary/values.yaml @@ -159,7 +159,7 @@ configuration: # repository CoPilot sidecar image repository repository: cr.flyte.org/flyteorg/flytecopilot # FLYTECOPILOT_IMAGE # tag CoPilot sidecar image tag - tag: v1.11.0-b0 # FLYTECOPILOT_TAG + tag: v1.11.0-b1 # FLYTECOPILOT_TAG # agentService Flyte Agent configuration agentService: defaultAgent: diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index 6349b01a4bc..5f0e3dcbb52 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -95,8 +95,8 @@ helm install gateway bitnami/contour -n flyte | configmap.clusters.clusterConfigs | list | `[]` | | | configmap.clusters.labelClusterMap | object | `{}` | | | configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | configmap.core | object | `{"manager":{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"},"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | configmap.core.manager | object | `{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/manager/config#Config). | | configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | @@ -130,7 +130,7 @@ helm install gateway bitnami/contour -n flyte | datacatalog.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| datacatalog.image.tag | string | `"v1.11.0-b0"` | Docker image tag | +| datacatalog.image.tag | string | `"v1.11.0-b1"` | Docker image tag | | datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | datacatalog.podEnv | object | `{}` | Additional Datacatalog container environment variables | @@ -165,7 +165,7 @@ helm install gateway bitnami/contour -n flyte | flyteadmin.extraArgs | object | `{}` | Appends extra command line arguments to the serve command | | flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | | | flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyteadmin.image.tag | string | `"v1.11.0-b0"` | | +| flyteadmin.image.tag | string | `"v1.11.0-b1"` | | | flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -202,7 +202,7 @@ helm install gateway bitnami/contour -n flyte | flyteconsole.ga.tracking_id | string | `"G-0QW4DJWJ20"` | | | flyteconsole.image.pullPolicy | string | `"IfNotPresent"` | | | flyteconsole.image.repository | string | `"cr.flyte.org/flyteorg/flyteconsole"` | Docker image for Flyteconsole deployment | -| flyteconsole.image.tag | string | `"v1.10.3"` | | +| flyteconsole.image.tag | string | `"v1.11.0"` | | | flyteconsole.imagePullSecrets | list | `[]` | ImagePullSecrets to assign to the Flyteconsole deployment | | flyteconsole.nodeSelector | object | `{}` | nodeSelector for Flyteconsole deployment | | flyteconsole.podAnnotations | object | `{}` | Annotations for Flyteconsole pods | @@ -226,7 +226,7 @@ helm install gateway bitnami/contour -n flyte | flytepropeller.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | | | flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flytepropeller.image.tag | string | `"v1.11.0-b0"` | | +| flytepropeller.image.tag | string | `"v1.11.0-b1"` | | | flytepropeller.manager | bool | `false` | | | flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | @@ -256,7 +256,7 @@ helm install gateway bitnami/contour -n flyte | flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flytescheduler.image.tag | string | `"v1.11.0-b0"` | Docker image tag | +| flytescheduler.image.tag | string | `"v1.11.0-b1"` | Docker image tag | | flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flytescheduler.podEnv | object | `{}` | Additional Flytescheduler container environment variables | diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index de307f66494..32fb5c58278 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -16,7 +16,7 @@ flyteadmin: image: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE - tag: v1.11.0-b0 # FLYTEADMIN_TAG + tag: v1.11.0-b1 # FLYTEADMIN_TAG pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables # @@ -142,7 +142,7 @@ flytescheduler: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.11.0-b0 # FLYTESCHEDULER_TAG + tag: v1.11.0-b1 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -208,7 +208,7 @@ datacatalog: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.11.0-b0 # DATACATALOG_TAG + tag: v1.11.0-b1 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -296,7 +296,7 @@ flytepropeller: image: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE - tag: v1.11.0-b0 # FLYTEPROPELLER_TAG + tag: v1.11.0-b1 # FLYTEPROPELLER_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment resources: @@ -379,7 +379,7 @@ flyteconsole: image: # -- Docker image for Flyteconsole deployment repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE - tag: v1.10.3 # FLYTECONSOLE_TAG + tag: v1.11.0 # FLYTECONSOLE_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flyteconsole deployment resources: @@ -731,7 +731,7 @@ configmap: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/charts/flyte/README.md b/charts/flyte/README.md index 0bce53a417c..f2ac67bdc21 100644 --- a/charts/flyte/README.md +++ b/charts/flyte/README.md @@ -71,7 +71,7 @@ helm upgrade -f values-sandbox.yaml flyte . | contour.tolerations | list | `[]` | tolerations for Contour deployment | | daskoperator | object | `{"enabled":false}` | Optional: Dask Plugin using the Dask Operator | | daskoperator.enabled | bool | `false` | - enable or disable the dask operator deployment installation | -| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.11.0-b0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.11.0-b0"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.3"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.11.0-b0"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.11.0-b0"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | +| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.11.0-b1"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.11.0-b1"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.11.0-b1"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.11.0-b1"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | | flyte.cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | | flyte.cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. | | flyte.cluster_resource_manager.config.cluster_resources.standaloneDeployment | bool | `false` | Starts the cluster resource manager in standalone mode with requisite auth credentials to call flyteadmin service endpoints | @@ -91,15 +91,15 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.common.ingress.separateGrpcIngressAnnotations | object | `{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"}` | - Extra Ingress annotations applied only to the GRPC ingress. Only makes sense if `separateGrpcIngress` is enabled. | | flyte.common.ingress.tls | object | `{"enabled":false}` | - TLS Settings | | flyte.common.ingress.webpackHMR | bool | `true` | - Enable or disable HMR route to flyteconsole. This is useful only for frontend development. | -| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | +| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | | flyte.configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration | | flyte.configmap.adminServer.auth | object | `{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}}` | Authentication configuration | | flyte.configmap.adminServer.server.security.secure | bool | `false` | Controls whether to serve requests over SSL/TLS. | | flyte.configmap.adminServer.server.security.useAuth | bool | `false` | Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. | | flyte.configmap.catalog | object | `{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}}` | Catalog Client configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/catalog#Config) Additional advanced Catalog configuration [here](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/catalog#Config) | | flyte.configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | flyte.configmap.core | object | `{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | flyte.configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | | flyte.configmap.datacatalogServer | object | `{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config | @@ -120,7 +120,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.datacatalog.configPath | string | `"/etc/datacatalog/config/*.yaml"` | Default regex string for searching configuration files | | flyte.datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| flyte.datacatalog.image.tag | string | `"v1.11.0-b0"` | Docker image tag | +| flyte.datacatalog.image.tag | string | `"v1.11.0-b1"` | Docker image tag | | flyte.datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | flyte.datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | flyte.datacatalog.replicaCount | int | `1` | Replicas count for Datacatalog deployment | @@ -136,7 +136,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flyteadmin.env | list | `[]` | Additional flyteadmin container environment variables e.g. SendGrid's API key - name: SENDGRID_API_KEY value: "" e.g. secret environment variable (you can combine it with .additionalVolumes): - name: SENDGRID_API_KEY valueFrom: secretKeyRef: name: sendgrid-secret key: api_key | | flyte.flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyte.flyteadmin.image.tag | string | `"v1.11.0-b0"` | Docker image tag | +| flyte.flyteadmin.image.tag | string | `"v1.11.0-b1"` | Docker image tag | | flyte.flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyte.flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyte.flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -151,7 +151,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flyteconsole.affinity | object | `{}` | affinity for Flyteconsole deployment | | flyte.flyteconsole.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flyteconsole.image.repository | string | `"cr.flyte.org/flyteorg/flyteconsole"` | Docker image for Flyteconsole deployment | -| flyte.flyteconsole.image.tag | string | `"v1.10.3"` | Docker image tag | +| flyte.flyteconsole.image.tag | string | `"v1.11.0"` | Docker image tag | | flyte.flyteconsole.nodeSelector | object | `{}` | nodeSelector for Flyteconsole deployment | | flyte.flyteconsole.podAnnotations | object | `{}` | Annotations for Flyteconsole pods | | flyte.flyteconsole.replicaCount | int | `1` | Replicas count for Flyteconsole deployment | @@ -162,7 +162,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytepropeller.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flyte.flytepropeller.image.tag | string | `"v1.11.0-b0"` | Docker image tag | +| flyte.flytepropeller.image.tag | string | `"v1.11.0-b1"` | Docker image tag | | flyte.flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flyte.flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | | flyte.flytepropeller.replicaCount | int | `1` | Replicas count for Flytepropeller deployment | @@ -176,7 +176,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flyte.flytescheduler.image.tag | string | `"v1.11.0-b0"` | Docker image tag | +| flyte.flytescheduler.image.tag | string | `"v1.11.0-b1"` | Docker image tag | | flyte.flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flyte.flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flyte.flytescheduler.resources | object | `{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}}` | Default resources requests and limits for Flytescheduler deployment | diff --git a/charts/flyte/values.yaml b/charts/flyte/values.yaml index aecfce362f6..50a1fc54025 100755 --- a/charts/flyte/values.yaml +++ b/charts/flyte/values.yaml @@ -16,7 +16,7 @@ flyte: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE # -- Docker image tag - tag: v1.11.0-b0 # FLYTEADMIN_TAG + tag: v1.11.0-b1 # FLYTEADMIN_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables @@ -84,7 +84,7 @@ flyte: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.11.0-b0 # FLYTESCHEDULER_TAG + tag: v1.11.0-b1 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -129,7 +129,7 @@ flyte: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.11.0-b0 # DATACATALOG_TAG + tag: v1.11.0-b1 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -178,7 +178,7 @@ flyte: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE # -- Docker image tag - tag: v1.11.0-b0 # FLYTEPROPELLER_TAG + tag: v1.11.0-b1 # FLYTEPROPELLER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment @@ -223,7 +223,7 @@ flyte: # -- Docker image for Flyteconsole deployment repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE # -- Docker image tag - tag: v1.10.3 # FLYTECONSOLE_TAG + tag: v1.11.0 # FLYTECONSOLE_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flyteconsole deployment @@ -471,7 +471,7 @@ flyte: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index 5b559bd9dea..83c0d249c53 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -429,7 +429,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -868,7 +868,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -889,7 +889,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -907,7 +907,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -924,7 +924,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -951,7 +951,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1056,7 +1056,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1112,7 +1112,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -1186,7 +1186,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1204,7 +1204,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1267,7 +1267,7 @@ spec: template: metadata: annotations: - configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" + configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1293,7 +1293,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1347,9 +1347,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b0 + app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" + configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" spec: securityContext: fsGroup: 65534 @@ -1361,7 +1361,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1388,7 +1388,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_generated.yaml b/deployment/eks/flyte_generated.yaml index b4b8f63584d..b4ee31f106a 100644 --- a/deployment/eks/flyte_generated.yaml +++ b/deployment/eks/flyte_generated.yaml @@ -8640,7 +8640,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0 + image: cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1 imagePullPolicy: IfNotPresent name: datacatalog ports: @@ -8663,7 +8663,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0 + image: cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1 imagePullPolicy: IfNotPresent name: run-migrations volumeMounts: @@ -8724,7 +8724,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1 imagePullPolicy: IfNotPresent name: webhook volumeMounts: @@ -8751,7 +8751,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1 imagePullPolicy: IfNotPresent name: generate-secrets volumeMounts: @@ -8799,7 +8799,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 imagePullPolicy: IfNotPresent name: flyteadmin ports: @@ -8846,7 +8846,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 imagePullPolicy: IfNotPresent name: run-migrations volumeMounts: @@ -8863,7 +8863,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 imagePullPolicy: IfNotPresent name: seed-projects volumeMounts: @@ -8877,7 +8877,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 imagePullPolicy: IfNotPresent name: sync-cluster-resources volumeMounts: @@ -8897,7 +8897,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 imagePullPolicy: IfNotPresent name: generate-secrets volumeMounts: @@ -8951,7 +8951,7 @@ spec: - envFrom: - configMapRef: name: flyte-console-config - image: cr.flyte.org/flyteorg/flyteconsole:v1.10.3 + image: cr.flyte.org/flyteorg/flyteconsole:v1.11.0 name: flyteconsole ports: - containerPort: 8080 @@ -9002,7 +9002,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1 imagePullPolicy: IfNotPresent name: flytepropeller ports: @@ -9270,7 +9270,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 imagePullPolicy: IfNotPresent name: sync-cluster-resources volumeMounts: diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml index 1ae984cf69f..b60694f9471 100644 --- a/deployment/eks/flyte_helm_controlplane_generated.yaml +++ b/deployment/eks/flyte_helm_controlplane_generated.yaml @@ -574,7 +574,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -595,7 +595,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -613,7 +613,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -630,7 +630,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -657,7 +657,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -762,7 +762,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -818,7 +818,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -892,7 +892,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -910,7 +910,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -993,7 +993,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1013,7 +1013,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index 8d82b6f2a08..90d327cb9eb 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -427,7 +427,7 @@ spec: template: metadata: annotations: - configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" + configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -453,7 +453,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -507,9 +507,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b0 + app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" + configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" spec: securityContext: fsGroup: 65534 @@ -521,7 +521,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -548,7 +548,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index 25c17010510..8f34f4f2361 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -460,7 +460,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -899,7 +899,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -920,7 +920,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -938,7 +938,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -955,7 +955,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -982,7 +982,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1087,7 +1087,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1143,7 +1143,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -1217,7 +1217,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1235,7 +1235,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1318,7 +1318,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1338,7 +1338,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1397,7 +1397,7 @@ spec: template: metadata: annotations: - configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" + configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1423,7 +1423,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1477,9 +1477,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b0 + app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "30e5fce341e4344cb6253ef4321f37c1e0895b9b55a927f94dfbc303d65c15b" + configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" spec: securityContext: fsGroup: 65534 @@ -1491,7 +1491,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1518,7 +1518,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml index 0f1ebf13814..7e0b58b832b 100644 --- a/deployment/gcp/flyte_helm_controlplane_generated.yaml +++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml @@ -589,7 +589,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -610,7 +610,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -628,7 +628,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -645,7 +645,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -672,7 +672,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -777,7 +777,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -833,7 +833,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -907,7 +907,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -925,7 +925,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1008,7 +1008,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1028,7 +1028,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index a63234aec24..d19a4d48c45 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -435,7 +435,7 @@ spec: template: metadata: annotations: - configChecksum: "bfe89fce66aa8eee9543c676ab07345b9c05c4ec7859daefd51da6bf414f0f4" + configChecksum: "9c6856d58b3168a752486076eccbc6783bbb94d62b47139c6cab6e1fe12174c" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -460,7 +460,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -514,9 +514,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b0 + app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "bfe89fce66aa8eee9543c676ab07345b9c05c4ec7859daefd51da6bf414f0f4" + configChecksum: "9c6856d58b3168a752486076eccbc6783bbb94d62b47139c6cab6e1fe12174c" spec: securityContext: fsGroup: 65534 @@ -528,7 +528,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -555,7 +555,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index 315c83f1141..5b8757459c1 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -473,7 +473,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -922,7 +922,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -943,7 +943,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -961,7 +961,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -978,7 +978,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -1005,7 +1005,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1110,7 +1110,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1166,7 +1166,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -1240,7 +1240,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1258,7 +1258,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1341,7 +1341,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1361,7 +1361,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1420,7 +1420,7 @@ spec: template: metadata: annotations: - configChecksum: "bfe89fce66aa8eee9543c676ab07345b9c05c4ec7859daefd51da6bf414f0f4" + configChecksum: "9c6856d58b3168a752486076eccbc6783bbb94d62b47139c6cab6e1fe12174c" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1445,7 +1445,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1499,9 +1499,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b0 + app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "bfe89fce66aa8eee9543c676ab07345b9c05c4ec7859daefd51da6bf414f0f4" + configChecksum: "9c6856d58b3168a752486076eccbc6783bbb94d62b47139c6cab6e1fe12174c" spec: securityContext: fsGroup: 65534 @@ -1513,7 +1513,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1540,7 +1540,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml index 2d93910a5c4..1aeec5ee6de 100644 --- a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml +++ b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml @@ -116,7 +116,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1" k8s-array: logs: config: @@ -358,7 +358,7 @@ spec: app.kubernetes.io/instance: flyte app.kubernetes.io/component: flyte-binary annotations: - checksum/configuration: 882c31ec18bdac7aa4f1a9057f9e549b1307b60b5d76839dfb6bc526958bee57 + checksum/configuration: 9c864736e7d08baebc6de026def33e542b35097dd158017c89f85d7672401b92 checksum/configuration-secret: d5d93f4e67780b21593dc3799f0f6682aab0765e708e4020939975d14d44f929 checksum/cluster-resource-templates: 7dfa59f3d447e9c099b8f8ffad3af466fecbc9cf9f8c97295d9634254a55d4ae spec: diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index d8ddf237a6b..c398c5fbf8a 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -585,7 +585,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -6705,7 +6705,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -6725,7 +6725,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -6742,7 +6742,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -6758,7 +6758,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -6785,7 +6785,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -6880,7 +6880,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -6933,7 +6933,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -7005,7 +7005,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -7022,7 +7022,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -7095,7 +7095,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -7114,7 +7114,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -7170,7 +7170,7 @@ spec: template: metadata: annotations: - configChecksum: "8d992b3c2174350d363ddbf3b1ac0d7f8017a546ec794a9551a4f2b1f4e6ea7" + configChecksum: "fa64b9672600e5eeed8ca407828a7490b17dadfe16c273e2aacfb52d9b5b085" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -7195,7 +7195,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -7242,9 +7242,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b0 + app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "8d992b3c2174350d363ddbf3b1ac0d7f8017a546ec794a9551a4f2b1f4e6ea7" + configChecksum: "fa64b9672600e5eeed8ca407828a7490b17dadfe16c273e2aacfb52d9b5b085" spec: securityContext: fsGroup: 65534 @@ -7256,7 +7256,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -7283,7 +7283,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 6de7c86be98..bc96ffac8f0 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -468,7 +468,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1" k8s-array: logs: config: @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: UDI2NklEa2dSNUhNeTFteA== + haSharedSecret: YXFGVndTaXBySjFxWEIxNA== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1246,7 +1246,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: 9ab632fe7ac69bcf63d6965a44986a05e23798beda4a3175d1601e61057a9832 + checksum/configuration: 286b381aca83e796ac69572dba6d2071241be79d4f00f3c2af55415a95157efd checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: d57403ae8ea0fce27bceda25f6af446fe51652e99e95a07fddae387006ee29f1 + checksum/secret: f5132fa475eb2386265cbda64d4e6d56922b771a5f7f5e6e8e4536a712663e45 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index b56e367ac40..36aca312f35 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -457,7 +457,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1" k8s-array: logs: config: @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: T21pWVJOUEdxMXBTSVE1RQ== + haSharedSecret: QVo4T0pQZmZLcFZmNjIyNQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1194,7 +1194,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: 11cd65708fd872839c6e561e84c30e045567486f06757f4549c69cc22aea5697 + checksum/configuration: 1362bc266b00c161aac0a24f7db312b9d6b9e68d7d8d8859ec8e171b9dc3e2bd checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: b0e1d465fbab24856443e463cb7846c898d03f1e00ac443b08e5474d28418ba3 + checksum/secret: f5e2b9fbf28a7d7815a094f72366cac395bd0aacd7890faa07e80ec700770fc5 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index 2a8383a1dd2..80e06fc6a2c 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: bGRYdlJtdmZ5Qm14ZEJnNg== + haSharedSecret: dktYanZDU0tsa0hTWlZmWA== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: b3f9230da427e818d5a63cbbf15159f2b165c98e6f56e269983c0a8fff6b6099 + checksum/secret: 7956909ef2268e1aad9b4b132d938c8b1a5775321bacfaf61aea7b73cdbcc85e labels: app: docker-registry release: flyte-sandbox diff --git a/docs/conf.py b/docs/conf.py index b4666d94a44..6d20ecf4b93 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -35,7 +35,7 @@ # The short X.Y version version = "" # The full version, including alpha/beta/rc tags -release = "1.11.0-b0" +release = "1.11.0-b1" # -- General configuration --------------------------------------------------- diff --git a/kustomize/overlays/eks/kustomization.yaml b/kustomize/overlays/eks/kustomization.yaml index d50b42c64f0..b29d932a808 100644 --- a/kustomize/overlays/eks/kustomization.yaml +++ b/kustomize/overlays/eks/kustomization.yaml @@ -21,23 +21,23 @@ bases: images: # FlyteAdmin - name: flyteadmin # match images with this name - newTag: v1.11.0-b0 # FLYTEADMIN_TAG override the tag + newTag: v1.11.0-b1 # FLYTEADMIN_TAG override the tag newName: cr.flyte.org/flyteorg/flyteadmin # override the name # FlyteConsole - name: flyteconsole # match images with this name - newTag: v1.10.3 # FLYTECONSOLE_TAG the tag + newTag: v1.11.0 # FLYTECONSOLE_TAG the tag newName: cr.flyte.org/flyteorg/flyteconsole # override the namep # Flyte DataCatalog - name: datacatalog # match images with this name - newTag: v1.11.0-b0 # DATACATALOG_TAG override the tag + newTag: v1.11.0-b1 # DATACATALOG_TAG override the tag newName: cr.flyte.org/flyteorg/datacatalog # override the name # FlytePropeller - name: flytepropeller # match images with this name - newTag: v1.11.0-b0 # FLYTEPROPELLER_TAG override the tag + newTag: v1.11.0-b1 # FLYTEPROPELLER_TAG override the tag newName: cr.flyte.org/flyteorg/flytepropeller # override the name # Webhook - name: webhook # match images with this name - newTag: v1.11.0-b0 # FLYTEPROPELLER_TAG override the tag + newTag: v1.11.0-b1 # FLYTEPROPELLER_TAG override the tag newName: cr.flyte.org/flyteorg/flytepropeller # override the name # Override postgres image to use alpine based (rather smaller) docker image - name: postgres From ba5925868f9ece84c834a9d5a1e09f6287394bce Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Wed, 6 Mar 2024 07:51:56 +0800 Subject: [PATCH 065/107] [Docs] Chatgpt Agent Setup (#4992) Signed-off-by: Future-Outlier Co-authored-by: Nikki Everett --- , | 0 docs/deployment/agents/bigquery.rst | 2 +- docs/deployment/agents/chatgpt.rst | 138 ++++++++++++++++++++++++++ docs/deployment/agents/databricks.rst | 2 +- docs/deployment/agents/index.md | 3 + docs/deployment/agents/mmcloud.rst | 2 +- docs/deployment/agents/snowflake.rst | 2 +- monodocs-environment.yaml | 1 + 8 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 , create mode 100644 docs/deployment/agents/chatgpt.rst diff --git a/, b/, new file mode 100644 index 00000000000..e69de29bb2d diff --git a/docs/deployment/agents/bigquery.rst b/docs/deployment/agents/bigquery.rst index d706ac7c379..d3e4ee490e3 100644 --- a/docs/deployment/agents/bigquery.rst +++ b/docs/deployment/agents/bigquery.rst @@ -103,4 +103,4 @@ Upgrade the Flyte Helm release and ```` with the name of your namespace (e.g., ``flyte``). -For BigQuery agent on the Flyte cluster, see `BigQuery agent `_. +For BigQuery agent on the Flyte cluster, see `BigQuery agent `_. diff --git a/docs/deployment/agents/chatgpt.rst b/docs/deployment/agents/chatgpt.rst new file mode 100644 index 00000000000..c3e5a490ea8 --- /dev/null +++ b/docs/deployment/agents/chatgpt.rst @@ -0,0 +1,138 @@ +.. _deployment-agent-setup-chatgpt: + +ChatGPT agent +================= + +This guide provides an overview of how to set up the ChatGPT agent in your Flyte deployment. +Please note that you have to set up the OpenAI API key in the agent server to to run ChatGPT tasks. + +Specify agent configuration +---------------------------- + +.. tabs:: + + .. group-tab:: Flyte binary + + Edit the relevant YAML file to specify the agent. + + .. code-block:: bash + + kubectl edit configmap flyte-sandbox-config -n flyte + + .. code-block:: yaml + :emphasize-lines: 7,11,16 + + tasks: + task-plugins: + enabled-plugins: + - container + - sidecar + - k8s-array + - agent-service + default-for-task-types: + - container: container + - container_array: k8s-array + - chatgpt: agent-service + + plugins: + agent-service: + supportedTaskTypes: + - chatgpt + + .. group-tab:: Flyte core + + Create a file named ``values-override.yaml`` and add the following configuration to it: + + .. code-block:: yaml + + configmap: + enabled_plugins: + # -- Tasks specific configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#GetConfig) + tasks: + # -- Plugins configuration, [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#TaskPluginConfig) + task-plugins: + # -- [Enabled Plugins](https://pkg.go.dev/github.com/flyteorg/flyteplugins/go/tasks/config#Config). Enable sagemaker*, athena if you install the backend + enabled-plugins: + - container + - sidecar + - k8s-array + - agent-service + default-for-task-types: + container: container + sidecar: sidecar + container_array: k8s-array + chatgpt: agent-service + plugins: + agent-service: + supportedTaskTypes: + - chatgpt + +Add the OpenAI API token +------------------------------- + +1. Install flyteagent pod using helm: + +.. code-block:: + + helm repo add flyteorg https://flyteorg.github.io/flyte + helm install flyteagent flyteorg/flyteagent --namespace flyte + +2. Get the base64 value of your OpenAI API token: + +.. code-block:: + + echo -n "" | base64 + +3. Edit the flyteagent secret: + + .. code-block:: bash + + kubectl edit secret flyteagent -n flyte + + .. code-block:: yaml + :emphasize-lines: 3 + + apiVersion: v1 + data: + flyte_openai_access_token: + kind: Secret + metadata: + annotations: + meta.helm.sh/release-name: flyteagent + meta.helm.sh/release-namespace: flyte + creationTimestamp: "2023-10-04T04:09:03Z" + labels: + app.kubernetes.io/managed-by: Helm + name: flyteagent + namespace: flyte + resourceVersion: "753" + uid: 5ac1e1b6-2a4c-4e26-9001-d4ba72c39e54 + type: Opaque + + +Upgrade the Flyte Helm release +------------------------------ + +.. tabs:: + + .. group-tab:: Flyte binary + + .. code-block:: bash + + helm upgrade flyteorg/flyte-binary -n --values + + Replace ```` with the name of your release (e.g., ``flyte-backend``), + ```` with the name of your namespace (e.g., ``flyte``), + and ```` with the name of your YAML file. + + .. group-tab:: Flyte core + + .. code-block:: bash + + helm upgrade flyte/flyte-core -n --values values-override.yaml + + Replace ```` with the name of your release (e.g., ``flyte``) + + and ```` with the name of your namespace (e.g., ``flyte``). + +For ChatGPT agent on the Flyte cluster, see `ChatGPT agent `_. diff --git a/docs/deployment/agents/databricks.rst b/docs/deployment/agents/databricks.rst index 3dbf7731c5e..b21fab3c571 100644 --- a/docs/deployment/agents/databricks.rst +++ b/docs/deployment/agents/databricks.rst @@ -291,4 +291,4 @@ Wait for the upgrade to complete. You can check the status of the deployment pod kubectl get pods -n flyte -For Databricks agent on the Flyte cluster, see `Databricks agent `_. +For Databricks agent on the Flyte cluster, see `Databricks agent `_. diff --git a/docs/deployment/agents/index.md b/docs/deployment/agents/index.md index 0e114c8d066..7c7f3db92d8 100644 --- a/docs/deployment/agents/index.md +++ b/docs/deployment/agents/index.md @@ -17,6 +17,8 @@ If you are using a managed deployment of Flyte, you will need to contact your de * - {ref}`Airflow Agent ` - Configuring your Flyte deployment for the Airflow agent +* - {ref}`ChatGPT Agent ` + - Configuring your Flyte deployment for the ChatGPT agent. * - {ref}`Databricks Agent ` - Configuring your Flyte deployment for the Databricks agent. * - {ref}`Google BigQuery Agent ` @@ -33,6 +35,7 @@ If you are using a managed deployment of Flyte, you will need to contact your de :hidden: airflow +chatgpt databricks bigquery mmcloud diff --git a/docs/deployment/agents/mmcloud.rst b/docs/deployment/agents/mmcloud.rst index ac08f4fcdf2..422162af27f 100644 --- a/docs/deployment/agents/mmcloud.rst +++ b/docs/deployment/agents/mmcloud.rst @@ -118,4 +118,4 @@ Wait for the upgrade to complete. You can check the status of the deployment pod kubectl get pods -n flyte -For MMCloud agent on the Flyte cluster, see `MMCloud agent `_. +For MMCloud agent on the Flyte cluster, see `MMCloud agent `_. diff --git a/docs/deployment/agents/snowflake.rst b/docs/deployment/agents/snowflake.rst index f4d82c0eb2b..fe1c8482ae9 100644 --- a/docs/deployment/agents/snowflake.rst +++ b/docs/deployment/agents/snowflake.rst @@ -100,4 +100,4 @@ Upgrade the Flyte Helm release and ```` with the name of your namespace (e.g., ``flyte``). -For Snowflake agent on the Flyte cluster, see `Snowflake agent `_. +For Snowflake agent on the Flyte cluster, see `Snowflake agent `_. diff --git a/monodocs-environment.yaml b/monodocs-environment.yaml index 140552aa2d6..78f85c19cff 100644 --- a/monodocs-environment.yaml +++ b/monodocs-environment.yaml @@ -56,6 +56,7 @@ dependencies: - mlflow==2.7.0 # mlflow - snowflake-connector-python # snowflake - vaex-core # vaex + - openai # chatgpt - pip: - readthedocs-sphinx-ext From bce9b6f0383808f9648792189c3b8f913131aaef Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Wed, 6 Mar 2024 10:59:49 -0600 Subject: [PATCH 066/107] Add Airflow migration guide (#4871) * move @pingsutw airflow migration doc from flytesnacks branch to flyte Signed-off-by: nikki everett * copy edits Signed-off-by: nikki everett * more copy edits Signed-off-by: nikki everett * move airflow migration guide to development lifecycle section Signed-off-by: nikki everett * copy changes from docs/migration-guides-ping Signed-off-by: nikki everett --------- Signed-off-by: nikki everett --- .../index.md | 1 + .../user_guide/development_lifecycle/index.md | 1 + .../migrating_from_airflow_to_flyte.md | 87 +++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 docs/user_guide/development_lifecycle/migrating_from_airflow_to_flyte.md diff --git a/docs/getting_started_with_workflow_development/index.md b/docs/getting_started_with_workflow_development/index.md index d7b39d7cee6..e27705a465c 100644 --- a/docs/getting_started_with_workflow_development/index.md +++ b/docs/getting_started_with_workflow_development/index.md @@ -1,4 +1,5 @@ (getting_started_workflow_development)= + # Getting started with workflow development Machine learning engineers, data engineers, and data analysts often represent the processes that consume, transform, and output data with directed acyclic graphs (DAGs). In this section, you will learn how to create a Flyte project to contain the workflow code that implements your DAG, as well as the configuration files needed to package the code to run on a local or remote Flyte cluster. diff --git a/docs/user_guide/development_lifecycle/index.md b/docs/user_guide/development_lifecycle/index.md index 8c21abc2914..6da72983b9a 100644 --- a/docs/user_guide/development_lifecycle/index.md +++ b/docs/user_guide/development_lifecycle/index.md @@ -20,4 +20,5 @@ running_workflows running_launch_plans inspecting_executions debugging_executions +migrating_from_airflow_to_flyte ``` diff --git a/docs/user_guide/development_lifecycle/migrating_from_airflow_to_flyte.md b/docs/user_guide/development_lifecycle/migrating_from_airflow_to_flyte.md new file mode 100644 index 00000000000..42f2f93ccd4 --- /dev/null +++ b/docs/user_guide/development_lifecycle/migrating_from_airflow_to_flyte.md @@ -0,0 +1,87 @@ +(migrating_from_airflow_to_flyte)= +# Migrating from Airflow to Flyte + +:::{important} +Many Airflow operators and sensors have been tested on Flyte, but some may not work as expected. +If you encounter any issues, please file an [issue](https://github.com/flyteorg/flyte/issues) or reach out to the Flyte community on [Slack](https://slack.flyte.org/). +::: + +Flyte can compile Airflow tasks into Flyte tasks without changing code, which allows you +to migrate your Airflow DAGs to Flyte with minimal effort. + +In addition to migration capabilities, Flyte users can seamlessly integrate Airflow tasks into their workflows, leveraging the ecosystem of Airflow operators and sensors. +By combining the robust Airflow ecosystem with Flyte's capabilities such as scalability, versioning, and reproducibility, users can run more complex data and machine learning workflows with ease. +For more information, see the [Airflow agent documentation](https://docs.flyte.org/en/latest/flytesnacks/examples/airflow_agent/index.html). + +# For current Flyte users + +Even if you're already using Flyte and have no intentions of migrating from Airflow, +you can still incorporate Airflow tasks into your Flyte workflows. For instance, Airflow offers support +for Google Cloud [Dataproc Operators](https://airflow.apache.org/docs/apache-airflow-providers-google/stable/operators/cloud/dataproc.html), facilitating the execution of Spark jobs on Google Cloud Dataproc clusters. Rather than developing a custom plugin in Flyte, you can seamlessly integrate Airflow's Dataproc Operators into your Flyte workflows to execute Spark jobs. + +## Prerequisites + +- Install `flytekitplugins-airflow` in your Python environment. +- Enable an {ref}`Airflow agent` in your Flyte cluster. + +## Steps + +### 1. Define your Airflow tasks in a Flyte workflow + +Flytekit compiles Airflow tasks into Flyte tasks, so you can use +any Airflow sensor or operator in a Flyte workflow: + + +```python +from flytekit import task, workflow +from airflow.sensors.filesystem import FileSensor + +@task +def say_hello() -> str: + return "Hello, World!" + +@workflow +def airflow_wf(): + flyte_task = say_hello() + airflow_task = FileSensor(task_id="sensor", filepath="/") + airflow_task >> flyte_task + +if __name__ == "__main__": + print(f"Running airflow_wf() {airflow_wf()}") +``` + +### 2. Test your workflow locally + +:::{note} +Before running your workflow locally, you must configure the [Airflow connection](https://airflow.apache.org/docs/apache-airflow/stable/howto/connection.html) by setting the `AIRFLOW_CONN_{CONN_ID}` environment variable. +For example, +```bash +export AIRFLOW_CONN_MY_PROD_DATABASE='my-conn-type://login:password@host:port/schema?param1=val1¶m2=val2' +``` +::: + +Although Airflow doesn't support local execution, you can run your workflow that contains Airflow tasks locally, which is helpful for testing and debugging your tasks before moving to production. + +```bash +AIRFLOW_CONN_FS_DEFAULT="/" pyflyte run workflows.py airflow_wf +``` + +:::{warning} +Some Airflow operators may require certain permissions to execute. For instance, `DataprocCreateClusterOperator` requires the `dataproc.clusters.create` permission. +When running Airflow tasks locally, you may need to set the necessary permissions locally for the task to execute successfully. +::: + +### 3. Move your workflow to production + +:::{note} +In production, we recommend storing connections in a [secrets backend](https://airflow.apache.org/docs/apache-airflow/stable/security/secrets/secrets-backend/index.html). +Make sure the agent pod has the right permission (IAM role) to access the secret from the external secrets backend. +::: + +After you have tested your workflow locally, you can execute it on a Flyte cluster using the `--remote` flag. +In this case, Flyte creates a pod in the Kubernetes cluster to run the `say_hello` task, and then runs +your Airflow `BashOperator` task on the Airflow agent. + +```bash +pyflyte run --remote workflows.py airflow_wf +``` From fd42f65660069d9c164cda2de579d3a89cac5b0f Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Wed, 6 Mar 2024 11:05:24 -0600 Subject: [PATCH 067/107] Add Docker image build and FlyteAgent update steps to "Developing agents" doc (#5009) * add docker image build and flyteagent update steps Signed-off-by: nikki everett * fix link Signed-off-by: nikki everett * remove old agents doc and redirect to new agents guide Signed-off-by: nikki everett * update timeout Signed-off-by: Kevin Su --------- Signed-off-by: nikki everett Signed-off-by: Kevin Su Co-authored-by: Kevin Su --- docs/flyte_agents/developing_agents.md | 82 +++++- .../development_lifecycle/agents.md | 234 ------------------ .../user_guide/development_lifecycle/index.md | 1 - docs/user_guide/extending/index.md | 2 +- 4 files changed, 81 insertions(+), 238 deletions(-) delete mode 100644 docs/user_guide/development_lifecycle/agents.md diff --git a/docs/flyte_agents/developing_agents.md b/docs/flyte_agents/developing_agents.md index a4a4adc7c73..3ea6db1d037 100644 --- a/docs/flyte_agents/developing_agents.md +++ b/docs/flyte_agents/developing_agents.md @@ -29,7 +29,11 @@ While agents can be written in any programming language, we currently only suppo ``` -## Async agent interface specification +## Steps + +### 1. Implement required methods + +#### Async agent interface specification To create a new async agent, extend the [`AsyncAgentBase`](https://github.com/flyteorg/flytekit/blob/master/flytekit/extend/backend/base_agent.py#L127) class and implement `create`, `get`, and `delete` methods. These methods must be idempotent. @@ -76,7 +80,7 @@ AgentRegistry.register(BigQueryAgent()) For an example implementation, see the [BigQuery agent](https://github.com/flyteorg/flytekit/blob/master/plugins/flytekit-bigquery/flytekitplugins/bigquery/agent.py#L43). -## Sync agent interface specification +#### Sync agent interface specification To create a new sync agent, extend the [`SyncAgentBase`](https://github.com/flyteorg/flytekit/blob/master/flytekit/extend/backend/base_agent.py#L107) class and implement a `do` method. This method must be idempotent. @@ -98,3 +102,77 @@ class OpenAIAgent(SyncAgentBase): AgentRegistry.register(OpenAIAgent()) ``` + +### 2. Test the agent locally + +See {doc}`"Testing agents locally" ` to test your agent locally. + +### 3. Build a new Docker image + +The following is a sample Dockerfile for building an image for a Flyte agent: + +```Dockerfile +FROM python:3.9-slim-buster + +MAINTAINER Flyte Team +LABEL org.opencontainers.image.source=https://github.com/flyteorg/flytekit + +WORKDIR /root +ENV PYTHONPATH /root + +# flytekit will autoload the agent if package is installed. +RUN pip install flytekitplugins-bigquery +CMD pyflyte serve agent --port 8000 +``` + +:::{note} +For flytekit versions `<=v1.10.2`, use `pyflyte serve`. +For flytekit versions `>v1.10.2`, use `pyflyte serve agent`. +::: + +### 4. Update FlyteAgent + +1. Update the FlyteAgent deployment's [image](https://github.com/flyteorg/flyte/blob/master/charts/flyteagent/templates/agent/deployment.yaml#L35) +2. Update the FlytePropeller configmap. + +```YAML + tasks: + task-plugins: + enabled-plugins: + - agent-service + default-for-task-types: + - bigquery_query_job_task: agent-service + - custom_task: agent-service + + plugins: + agent-service: + supportedTaskTypes: + - bigquery_query_job_task + - default_task + - custom_task + # By default, all requests will be sent to the default agent. + defaultAgent: + endpoint: "dns:///flyteagent.flyte.svc.cluster.local:8000" + insecure: true + timeouts: + GetTask: 5s + defaultTimeout: 10s + agents: + custom_agent: + endpoint: "dns:///custom-flyteagent.flyte.svc.cluster.local:8000" + insecure: false + defaultServiceConfig: '{"loadBalancingConfig": [{"round_robin":{}}]}' + timeouts: + GetTask: 5s + defaultTimeout: 10s + agentForTaskTypes: + # It will override the default agent for custom_task, which means propeller will send the request to this agent. + - custom_task: custom_agent + ``` + +3. Restart the FlytePropeller + +``` +kubectl rollout restart deployment flytepropeller -n flyte +``` + diff --git a/docs/user_guide/development_lifecycle/agents.md b/docs/user_guide/development_lifecycle/agents.md deleted file mode 100644 index 2ec13092729..00000000000 --- a/docs/user_guide/development_lifecycle/agents.md +++ /dev/null @@ -1,234 +0,0 @@ ---- -jupytext: - cell_metadata_filter: all - formats: md:myst - main_language: python - notebook_metadata_filter: all - text_representation: - extension: .md - format_name: myst - format_version: 0.13 - jupytext_version: 1.16.1 -kernelspec: - display_name: Python 3 - language: python - name: python3 ---- - -(extend-agent-service)= - -# Agents - -```{eval-rst} -.. tags:: Extensibility, Contribute, Intermediate -``` - -:::{note} -This is an experimental feature, which is subject to change the API in the future. -::: - -## What is an agent? - -In Flyte, an agent is a long-running stateless service that can be used to execute tasks. It reduces the overhead of creating a pod for each task. -In addition, it's easy to scale up and down the agent service based on the workload. Agent services are designed to be language-agnostic. -For now, we only support Python agent, but we may support other languages in the future. - -Agent is designed to run a specific type of task. For example, you can create a BigQuery agent to run BigQuery task. Therefore, if you create a new type of task, you can -either run the task in the pod, or you can create a new agent to run it. You can determine how the task will be executed in the FlytePropeller configMap. - -Key goals of the agent service include: - -- Support for communication with external services: The focus is on enabling agents that seamlessly interact with external services. -- Independent testing and private deployment: Agents can be tested independently and deployed privately, providing flexibility and control over development. -- Flyte Agent usage in local development: Users, especially in `flytekit` and `unionml`, can leverage backend agents for local development, streamlining the development process. -- Language-agnostic: Agents can be authored in any programming language, allowing users to work with their preferred language and tools. -- Scalability: Agents are designed to be scalable, ensuring they can handle large-scale workloads effectively. -- Simple API: Agents offer a straightforward API, making integration and usage straightforward for developers. - -## Why do we need an agent service? - -Without agents, people need to implement a backend plugin in the propeller. The backend plugin is responsible for -creating a CRD and submitting a http request to the external service. However, it increases the complexity of flytepropeller, and -it's hard to maintain the backend plugin. For example, if we want to add a new plugin, we need to update and compile -flytepropeller, and it's also hard to test. In addition, the backend plugin is running in flytepropeller itself, so it -increases the load of the flytepropeller engine. - -Furthermore, implementing backend plugins can be challenging, particularly for data scientists and ML engineers who may lack proficiency in -Golang. Additionally, managing performance requirements, maintenance, and development can be burdensome. -To address these issues, we introduced the "Agent Service" in Flyte. This system enables rapid plugin -development while decoupling them from the core flytepropeller engine. - -## Overview - -The Flyte agent service is a Python-based agent registry powered by a gRPC server. It allows users and flytepropeller -to send gRPC requests to the registry for executing jobs such as BigQuery and Databricks. Each Agent service is a Kubernetes -deployment. You can create two different Agent services hosting different Agents. For example, you can create one production -agent service and one development agent service. - -:::{figure} https://i.ibb.co/vXhBDjP/Screen-Shot-2023-05-29-at-2-54-14-PM.png -:alt: Agent Service -:class: with-shadow -::: - -## How to register a new agent - -### Flytekit interface specification - -To register a new agent, you can extend the `AgentBase` class in the flytekit backend module. Implementing the following three methods is necessary, and it's important to ensure that all calls are idempotent: - -- `create`: This method is used to initiate a new task. Users have the flexibility to use gRPC, REST, or an SDK to create a task. -- `get`: This method allows retrieving the job Resource (jobID or output literal) associated with the task, such as a BigQuery Job ID or Databricks task ID. -- `delete`: Invoking this method will send a request to delete the corresponding job. - -```python -from flytekit.extend.backend.base_agent import AgentBase, AgentRegistry -from dataclasses import dataclass -import requests - -@dataclass -class Metadata: - # you can add any metadata you want, propeller will pass the metadata to the agent to get the job status. - # For example, you can add the job_id to the metadata, and the agent will use the job_id to get the job status. - # You could also add the s3 file path, and the agent can check if the file exists. - job_id: str - -class CustomAgent(AgentBase): - def __init__(self, task_type: str): - # Each agent should have a unique task type. Agent service will use the task type to find the corresponding agent. - self._task_type = task_type - - def create( - self, - context: grpc.ServicerContext, - output_prefix: str, - task_template: TaskTemplate, - inputs: typing.Optional[LiteralMap] = None, - ) -> TaskCreateResponse: - # 1. Submit the task to the external service (BigQuery, DataBricks, etc.) - # 2. Create a task metadata such as jobID. - # 3. Return the task metadata, and keep in mind that the metadata should be serialized to bytes. - res = requests.post(url, json=data) - return CreateTaskResponse(resource_meta=json.dumps(asdict(Metadata(job_id=str(res.job_id)))).encode("utf-8")) - - def get(self, context: grpc.ServicerContext, resource_meta: bytes) -> TaskGetResponse: - # 1. Deserialize the metadata. - # 2. Use the metadata to get the job status. - # 3. Return the job status. - metadata = Metadata(**json.loads(resource_meta.decode("utf-8"))) - res = requests.get(url, json={"job_id": metadata.job_id}) - return GetTaskResponse(resource=Resource(state=res.state) - - def delete(self, context: grpc.ServicerContext, resource_meta: bytes) -> TaskDeleteResponse: - # 1. Deserialize the metadata. - # 2. Use the metadata to delete the job. - # 3. If failed to delete the job, add the error message to the grpc context. - # context.set_code(grpc.StatusCode.INTERNAL) - # context.set_details(f"failed to create task with error {e}") - try: - metadata = Metadata(**json.loads(resource_meta.decode("utf-8"))) - requests.delete(url, json={"job_id": metadata.job_id}) - except Exception as e: - logger.error(f"failed to delete task with error {e}") - context.set_code(grpc.StatusCode.INTERNAL) - context.set_details(f"failed to delete task with error {e}") - return DeleteTaskResponse() - -# To register the custom agent -AgentRegistry.register(CustomAgent()) -``` - -Here is an example of [BigQuery Agent](https://github.com/flyteorg/flytekit/blob/9977aac26242ebbede8e00d476c2fbc59ac5487a/plugins/flytekit-bigquery/flytekitplugins/bigquery/agent.py#L35) implementation. - -### How to test the agent - -Agent can be tested locally without running backend server. It makes the development of the agent easier. - -The task inherited from AsyncAgentExecutorMixin can be executed locally, allowing flytekit to mimic the propeller's behavior to call the agent. -In some cases, you should store credentials in your local environment when testing locally. -For example, you need to set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable when testing the BigQuery task. -After setting up the CREDENTIALS, you can run the task locally. Flytekit will automatically call the agent to create, get, or delete the task. - -```python -bigquery_doge_coin = BigQueryTask( - name=f"bigquery.doge_coin", - inputs=kwtypes(version=int), - query_template="SELECT * FROM `bigquery-public-data.crypto_dogecoin.transactions` WHERE version = @version LIMIT 10;", - output_structured_dataset_type=StructuredDataset, - task_config=BigQueryConfig(ProjectID="flyte-test-340607") -) -``` - -Task above task as an example, you can run the task locally and test agent with the following command: - -```bash -pyflyte run wf.py bigquery_doge_coin --version 10 -``` - -### Build a new image - -The following is a sample Dockerfile for building an image for a flyte agent. - -```Dockerfile -FROM python:3.9-slim-buster - -MAINTAINER Flyte Team -LABEL org.opencontainers.image.source=https://github.com/flyteorg/flytekit - -WORKDIR /root -ENV PYTHONPATH /root - -# flytekit will autoload the agent if package is installed. -RUN pip install flytekitplugins-bigquery -CMD pyflyte serve agent --port 8000 -``` - -:::{note} -For flytekit versions `<=v1.10.2`, use `pyflyte serve`. -For flytekit versions `>v1.10.2`, use `pyflyte serve agent`. -::: - -### Update FlyteAgent - -1. Update the FlyteAgent deployment's [image](https://github.com/flyteorg/flyte/blob/c049865cba017ad826405c7145cd3eccbc553232/charts/flyteagent/templates/agent/deployment.yaml#L26) -2. Update the FlytePropeller configmap. - -```YAML -tasks: - task-plugins: - enabled-plugins: - - agent-service - default-for-task-types: - - bigquery_query_job_task: agent-service - - custom_task: agent-service - -plugins: - agent-service: - supportedTaskTypes: - - bigquery_query_job_task - - default_task - - custom_task - # By default, all the request will be sent to the default agent. - defaultAgent: - endpoint: "dns:///flyteagent.flyte.svc.cluster.local:8000" - insecure: true - timeouts: - GetTask: 200ms - defaultTimeout: 50ms - agents: - custom_agent: - endpoint: "dns:///custom-flyteagent.flyte.svc.cluster.local:8000" - insecure: false - defaultServiceConfig: '{"loadBalancingConfig": [{"round_robin":{}}]}' - timeouts: - GetTask: 100ms - defaultTimeout: 20ms - agentForTaskTypes: - # It will override the default agent for custom_task, which means propeller will send the request to this agent. - - custom_task: custom_agent -``` - -3. Restart the FlytePropeller - -``` -kubectl rollout restart deployment flytepropeller -n flyte -``` diff --git a/docs/user_guide/development_lifecycle/index.md b/docs/user_guide/development_lifecycle/index.md index 6da72983b9a..2617674e24a 100644 --- a/docs/user_guide/development_lifecycle/index.md +++ b/docs/user_guide/development_lifecycle/index.md @@ -8,7 +8,6 @@ You will gain an understanding of concepts like caching, the Flyte remote API, A :name: development_lifecycle_toc :hidden: -agents private_images caching cache_serializing diff --git a/docs/user_guide/extending/index.md b/docs/user_guide/extending/index.md index 19a553ddfcc..999214bf50f 100644 --- a/docs/user_guide/extending/index.md +++ b/docs/user_guide/extending/index.md @@ -157,7 +157,7 @@ of the plugin. _New in Flyte 1.7.0_ -{ref}`Flyte Agent Service ` allows you to write backend +The {ref}`Flyte Agent service ` allows you to write backend plugins in Python. ### Summary From f448a0358d8706a09b65b96543134f629327d755 Mon Sep 17 00:00:00 2001 From: Nikki Everett Date: Thu, 7 Mar 2024 13:44:50 -0600 Subject: [PATCH 068/107] Update docs links in /flyteidl (#4989) Signed-off-by: nikki everett Signed-off-by: Kevin Su Co-authored-by: Kevin Su --- flyteidl/README.md | 2 +- flyteidl/clients/go/assets/admin.swagger.json | 2 +- flyteidl/gen/pb-es/flyteidl/core/tasks_pb.ts | 2 -- flyteidl/gen/pb-go/flyteidl/core/tasks.pb.go | 2 -- .../gen/pb-go/gateway/flyteidl/service/admin.swagger.json | 2 +- .../gen/pb-go/gateway/flyteidl/service/agent.swagger.json | 2 +- .../flyteidl/service/external_plugin_service.swagger.json | 2 +- flyteidl/gen/pb_rust/flyteidl.core.rs | 2 -- flyteidl/index.rst | 8 ++++---- flyteidl/protos/docs/core/core.rst | 2 +- flyteidl/protos/flyteidl/core/tasks.proto | 2 -- 11 files changed, 10 insertions(+), 18 deletions(-) diff --git a/flyteidl/README.md b/flyteidl/README.md index a1be04d7420..67685f45b71 100644 --- a/flyteidl/README.md +++ b/flyteidl/README.md @@ -7,7 +7,7 @@ This is one of the core repositories of Flyte. It contains the Specification of * [flyte.org](https://flyte.org) * [Flyte Docs](http://docs.flyte.org) -* [Flyteidl API reference documentation](https://docs.flyte.org/projects/flyteidl/en/stable/index.html) +* [Flyteidl API reference documentation](https://docs.flyte.org/en/latest/reference_flyteidl.html) ## Contributing to Flyteidl diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 7b9045cbe34..64a6af5899b 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -7908,7 +7908,7 @@ "properties": { "statement": { "type": "string", - "title": "The actual query to run, the query can have templated parameters.\nWe use Flyte's Golang templating format for Query templating.\nRefer to the templating documentation.\nhttps://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/external_services/hive/hive.html#sphx-glr-auto-integrations-external-services-hive-hive-py\nFor example,\ninsert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet\nselect *\nfrom my_table\nwhere ds = '{{ .Inputs.ds }}'" + "title": "The actual query to run, the query can have templated parameters.\nWe use Flyte's Golang templating format for Query templating.\nFor example,\ninsert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet\nselect *\nfrom my_table\nwhere ds = '{{ .Inputs.ds }}'" }, "dialect": { "$ref": "#/definitions/SqlDialect" diff --git a/flyteidl/gen/pb-es/flyteidl/core/tasks_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/tasks_pb.ts index afd4e5f98b8..5cc011314c8 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/tasks_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/tasks_pb.ts @@ -1180,8 +1180,6 @@ export class Sql extends Message { /** * The actual query to run, the query can have templated parameters. * We use Flyte's Golang templating format for Query templating. - * Refer to the templating documentation. - * https://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/external_services/hive/hive.html#sphx-glr-auto-integrations-external-services-hive-hive-py * For example, * insert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet * select * diff --git a/flyteidl/gen/pb-go/flyteidl/core/tasks.pb.go b/flyteidl/gen/pb-go/flyteidl/core/tasks.pb.go index 92a40b8e018..122ddce5598 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/tasks.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/tasks.pb.go @@ -1514,8 +1514,6 @@ type Sql struct { // The actual query to run, the query can have templated parameters. // We use Flyte's Golang templating format for Query templating. - // Refer to the templating documentation. - // https://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/external_services/hive/hive.html#sphx-glr-auto-integrations-external-services-hive-hive-py // For example, // insert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet // select * 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 7b9045cbe34..64a6af5899b 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -7908,7 +7908,7 @@ "properties": { "statement": { "type": "string", - "title": "The actual query to run, the query can have templated parameters.\nWe use Flyte's Golang templating format for Query templating.\nRefer to the templating documentation.\nhttps://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/external_services/hive/hive.html#sphx-glr-auto-integrations-external-services-hive-hive-py\nFor example,\ninsert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet\nselect *\nfrom my_table\nwhere ds = '{{ .Inputs.ds }}'" + "title": "The actual query to run, the query can have templated parameters.\nWe use Flyte's Golang templating format for Query templating.\nFor example,\ninsert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet\nselect *\nfrom my_table\nwhere ds = '{{ .Inputs.ds }}'" }, "dialect": { "$ref": "#/definitions/SqlDialect" 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 2680d36bdae..9a6175929f1 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -1624,7 +1624,7 @@ "properties": { "statement": { "type": "string", - "title": "The actual query to run, the query can have templated parameters.\nWe use Flyte's Golang templating format for Query templating.\nRefer to the templating documentation.\nhttps://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/external_services/hive/hive.html#sphx-glr-auto-integrations-external-services-hive-hive-py\nFor example,\ninsert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet\nselect *\nfrom my_table\nwhere ds = '{{ .Inputs.ds }}'" + "title": "The actual query to run, the query can have templated parameters.\nWe use Flyte's Golang templating format for Query templating.\nFor example,\ninsert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet\nselect *\nfrom my_table\nwhere ds = '{{ .Inputs.ds }}'" }, "dialect": { "$ref": "#/definitions/SqlDialect" 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 cebc48b75bb..f488a49c003 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 @@ -928,7 +928,7 @@ "properties": { "statement": { "type": "string", - "title": "The actual query to run, the query can have templated parameters.\nWe use Flyte's Golang templating format for Query templating.\nRefer to the templating documentation.\nhttps://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/external_services/hive/hive.html#sphx-glr-auto-integrations-external-services-hive-hive-py\nFor example,\ninsert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet\nselect *\nfrom my_table\nwhere ds = '{{ .Inputs.ds }}'" + "title": "The actual query to run, the query can have templated parameters.\nWe use Flyte's Golang templating format for Query templating.\nFor example,\ninsert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet\nselect *\nfrom my_table\nwhere ds = '{{ .Inputs.ds }}'" }, "dialect": { "$ref": "#/definitions/SqlDialect" diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index a36add78f20..280140c75d0 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -1729,8 +1729,6 @@ pub struct K8sObjectMetadata { pub struct Sql { /// The actual query to run, the query can have templated parameters. /// We use Flyte's Golang templating format for Query templating. - /// Refer to the templating documentation. - /// /// For example, /// insert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet /// select * diff --git a/flyteidl/index.rst b/flyteidl/index.rst index f06f0e0e508..bbe9037b82b 100644 --- a/flyteidl/index.rst +++ b/flyteidl/index.rst @@ -17,12 +17,12 @@ This specification is used to generate client stubs for `Flytekit - |book-reader| User Guide - |chalkboard| Tutorials + |plane| Getting Started + |book-reader| User Guide + |chalkboard| Tutorials |project-diagram| Concepts |rocket| Deployment - |book| API Reference + |book| API Reference |hands-helping| Community .. NOTE: the caption text is important for the sphinx theme to correctly render the nav header diff --git a/flyteidl/protos/docs/core/core.rst b/flyteidl/protos/docs/core/core.rst index 43bf4c9c6e1..dd3cf71341c 100644 --- a/flyteidl/protos/docs/core/core.rst +++ b/flyteidl/protos/docs/core/core.rst @@ -2206,7 +2206,7 @@ Sql represents a generic sql workload with a statement and dialect. :header: "Field", "Type", "Label", "Description" :widths: auto - "statement", ":ref:`ref_string`", "", "The actual query to run, the query can have templated parameters. We use Flyte's Golang templating format for Query templating. Refer to the templating documentation. https://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/external_services/hive/hive.html#sphx-glr-auto-integrations-external-services-hive-hive-py For example, insert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet select * from my_table where ds = '{{ .Inputs.ds }}'" + "statement", ":ref:`ref_string`", "", "The actual query to run, the query can have templated parameters. We use Flyte's Golang templating format for Query templating. For example, insert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet select * from my_table where ds = '{{ .Inputs.ds }}'" "dialect", ":ref:`ref_flyteidl.core.Sql.Dialect`", "", "" diff --git a/flyteidl/protos/flyteidl/core/tasks.proto b/flyteidl/protos/flyteidl/core/tasks.proto index ab96615be7a..20a1fa0cbf0 100644 --- a/flyteidl/protos/flyteidl/core/tasks.proto +++ b/flyteidl/protos/flyteidl/core/tasks.proto @@ -332,8 +332,6 @@ message K8sObjectMetadata { message Sql { // The actual query to run, the query can have templated parameters. // We use Flyte's Golang templating format for Query templating. - // Refer to the templating documentation. - // https://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/external_services/hive/hive.html#sphx-glr-auto-integrations-external-services-hive-hive-py // For example, // insert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet // select * From b710ca445f25651106ffc5ea18f1ccbf867bb55c Mon Sep 17 00:00:00 2001 From: David Espejo <82604841+davidmirror-ops@users.noreply.github.com> Date: Thu, 7 Mar 2024 16:16:11 -0500 Subject: [PATCH 069/107] Fix minio config on helpers.tpl (#5018) * Fix sandbox endpoint Signed-off-by: davidmirror-ops * Make Helm Signed-off-by: davidmirror-ops --------- Signed-off-by: davidmirror-ops Co-authored-by: davidmirror-ops --- charts/flyte-core/templates/_helpers.tpl | 2 +- deployment/sandbox/flyte_helm_generated.yaml | 16 ++++++++-------- .../manifests/complete-agent.yaml | 4 ++-- docker/sandbox-bundled/manifests/complete.yaml | 4 ++-- docker/sandbox-bundled/manifests/dev.yaml | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/charts/flyte-core/templates/_helpers.tpl b/charts/flyte-core/templates/_helpers.tpl index 2c3b059841a..98a42655e3f 100755 --- a/charts/flyte-core/templates/_helpers.tpl +++ b/charts/flyte-core/templates/_helpers.tpl @@ -247,7 +247,7 @@ storage: region: us-east-1 signedUrl: stowConfigOverride: - endpoint: http://localhost:30084 + endpoint: http://minio.{{ .Release.Namespace }}.svc.cluster.local:9000 {{- else if eq .Values.storage.type "custom" }} {{- with .Values.storage.custom -}} {{ tpl (toYaml .) $ | nindent 2 }} diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index c398c5fbf8a..1959cc5bd81 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -326,7 +326,7 @@ data: region: us-east-1 signedUrl: stowConfigOverride: - endpoint: http://localhost:30084 + endpoint: http://minio.flyte.svc.cluster.local:9000 enable-multicontainer: false limits: maxDownloadMBs: 10 @@ -512,7 +512,7 @@ data: region: us-east-1 signedUrl: stowConfigOverride: - endpoint: http://localhost:30084 + endpoint: http://minio.flyte.svc.cluster.local:9000 enable-multicontainer: false limits: maxDownloadMBs: 10 @@ -674,7 +674,7 @@ data: region: us-east-1 signedUrl: stowConfigOverride: - endpoint: http://localhost:30084 + endpoint: http://minio.flyte.svc.cluster.local:9000 enable-multicontainer: false limits: maxDownloadMBs: 10 @@ -6684,7 +6684,7 @@ spec: template: metadata: annotations: - configChecksum: "45f0232531c0d1494809cf83387a95b2fc802019ea095de7a24ccd4f8de86ec" + configChecksum: "8702cc3d688d44938e6974b267f70fb01ce7fec4780de86b8f2e65f9446c711" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte @@ -6984,7 +6984,7 @@ spec: template: metadata: annotations: - configChecksum: "8feeaa7f7ec6506426db0d3e3cda6bc3ac0049a7eeba49d6cce62b3e1c7c424" + configChecksum: "ccdd0d27618b8053a8ae11046fd2b84b9a397144dd81c7113f398cddf001397" labels: app.kubernetes.io/name: datacatalog app.kubernetes.io/instance: flyte @@ -7075,7 +7075,7 @@ spec: template: metadata: annotations: - configChecksum: "45f0232531c0d1494809cf83387a95b2fc802019ea095de7a24ccd4f8de86ec" + configChecksum: "8702cc3d688d44938e6974b267f70fb01ce7fec4780de86b8f2e65f9446c711" labels: app.kubernetes.io/name: flytescheduler app.kubernetes.io/instance: flyte @@ -7170,7 +7170,7 @@ spec: template: metadata: annotations: - configChecksum: "fa64b9672600e5eeed8ca407828a7490b17dadfe16c273e2aacfb52d9b5b085" + configChecksum: "a82c947246fac99ad98c86bc01cdd99569b2ea11f25d3e1361cd40d145bed87" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -7244,7 +7244,7 @@ spec: app.kubernetes.io/name: flyte-pod-webhook app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "fa64b9672600e5eeed8ca407828a7490b17dadfe16c273e2aacfb52d9b5b085" + configChecksum: "a82c947246fac99ad98c86bc01cdd99569b2ea11f25d3e1361cd40d145bed87" spec: securityContext: fsGroup: 65534 diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index bc96ffac8f0..5f72d69c20c 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: YXFGVndTaXBySjFxWEIxNA== + haSharedSecret: NTRkQThQbW1FNDlVQ1B4Rw== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: f5132fa475eb2386265cbda64d4e6d56922b771a5f7f5e6e8e4536a712663e45 + checksum/secret: 7ce58af0efd945f657619718c017f528d7055b8069cab01aed85e29639bd6d6a labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index 36aca312f35..cacefc4730f 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: QVo4T0pQZmZLcFZmNjIyNQ== + haSharedSecret: c21mSkU1U0c0S0J0Q2lRRg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: f5e2b9fbf28a7d7815a094f72366cac395bd0aacd7890faa07e80ec700770fc5 + checksum/secret: 67f0b60e6520f3ae46a9f396411386d473441e7733c2544f6bface0f3b8475d9 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index 80e06fc6a2c..5e0017253ed 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: dktYanZDU0tsa0hTWlZmWA== + haSharedSecret: YjFqbVE2UE05QnpwMVVVeg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 7956909ef2268e1aad9b4b132d938c8b1a5775321bacfaf61aea7b73cdbcc85e + checksum/secret: ec699a25c688a15358899da82f9fa9bb199fe085f200f00facc09b448ad80369 labels: app: docker-registry release: flyte-sandbox From 992641c5e076e9e5c608a8a50f7fbb0a8cbb9d7c Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Thu, 7 Mar 2024 17:16:53 -0800 Subject: [PATCH 070/107] Fix ephemeral storage validation in the case of pod templates (#5019) * Fix ephemeral storage validation in the case of pod templates Signed-off-by: Eduardo Apolinario * Simplify the code and add a comment. Signed-off-by: Eduardo Apolinario * Use constants in the comparison Signed-off-by: Eduardo Apolinario --------- Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- flyteadmin/pkg/manager/impl/validation/task_validator.go | 6 ++++++ .../pkg/manager/impl/validation/task_validator_test.go | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/flyteadmin/pkg/manager/impl/validation/task_validator.go b/flyteadmin/pkg/manager/impl/validation/task_validator.go index c50e3311b36..02f2dcded07 100644 --- a/flyteadmin/pkg/manager/impl/validation/task_validator.go +++ b/flyteadmin/pkg/manager/impl/validation/task_validator.go @@ -166,6 +166,12 @@ func isWholeNumber(quantity resource.Quantity) bool { func resourceListToQuantity(resources corev1.ResourceList) map[core.Resources_ResourceName]resource.Quantity { var requestedToQuantity = make(map[core.Resources_ResourceName]resource.Quantity) for name, quantity := range resources { + // The name to refer to ephemeral storage defined in k8s (https://github.com/kubernetes/api/blob/05aa4bceed70af2652698a28fb144ee22b2dd2ba/core/v1/types.go#L5988) + // is different from the name defined in Flyte's proto (https://github.com/flyteorg/flyte/blob/fd42f65660069d9c164cda2de579d3a89cac5b0f/flyteidl/protos/flyteidl/core/tasks.proto#L25). + // This is a workaround to handle the conversion. + if name == corev1.ResourceEphemeralStorage { + name = corev1.ResourceName(core.Resources_EPHEMERAL_STORAGE.String()) + } resourceName := core.Resources_ResourceName(core.Resources_ResourceName_value[strings.ToUpper(name.String())]) requestedToQuantity[resourceName] = quantity } diff --git a/flyteadmin/pkg/manager/impl/validation/task_validator_test.go b/flyteadmin/pkg/manager/impl/validation/task_validator_test.go index c82d2e5f587..108a651517b 100644 --- a/flyteadmin/pkg/manager/impl/validation/task_validator_test.go +++ b/flyteadmin/pkg/manager/impl/validation/task_validator_test.go @@ -278,6 +278,11 @@ func TestResourceListToQuantity(t *testing.T) { gpuQuantity := gpuResources[core.Resources_CPU] val = gpuQuantity.Value() assert.Equal(t, val, int64(2)) + + ephemeralStorageResources := resourceListToQuantity(corev1.ResourceList{corev1.ResourceEphemeralStorage: resource.MustParse("500Mi")}) + ephemeralStorageQuantity := ephemeralStorageResources[core.Resources_EPHEMERAL_STORAGE] + val = ephemeralStorageQuantity.Value() + assert.Equal(t, val, int64(524288000)) } func TestRequestedResourcesToQuantity(t *testing.T) { From f52164d51338cbbcb2b29c9ecfba1dc461ec5f80 Mon Sep 17 00:00:00 2001 From: "Fabio M. Graetz, Ph.D" Date: Fri, 8 Mar 2024 19:22:37 +0100 Subject: [PATCH 071/107] Fix: Sanitize user identity before injecting into task pod as K8s label (#5023) * Fix: Sanitize user identity before injecting into task pod as K8s label Signed-off-by: Fabio Graetz * Lint Signed-off-by: Fabio Graetz --------- Signed-off-by: Fabio Graetz --- .../nodes/task/k8s/task_exec_context.go | 4 +++- .../nodes/task/k8s/task_exec_context_test.go | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context.go b/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context.go index 17bbce53985..bb987acbc2e 100644 --- a/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context.go +++ b/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context.go @@ -5,6 +5,7 @@ import ( pluginsCore "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/utils" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/utils/secrets" + k8sUtils "github.com/flyteorg/flyte/flytepropeller/pkg/utils" ) const executionIdentityVariable = "execution-identity" @@ -60,7 +61,8 @@ func newTaskExecutionMetadata(tCtx pluginsCore.TaskExecutionMetadata, taskTmpl * id := tCtx.GetSecurityContext().RunAs.ExecutionIdentity if len(id) > 0 { - injectLabels[executionIdentityVariable] = id + sanitizedID := k8sUtils.SanitizeLabelValue(id) + injectLabels[executionIdentityVariable] = sanitizedID } return TaskExecutionMetadata{ diff --git a/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context_test.go b/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context_test.go index bf9ca1eadb0..e3c6f10ab65 100644 --- a/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context_test.go +++ b/flytepropeller/pkg/controller/nodes/task/k8s/task_exec_context_test.go @@ -86,6 +86,25 @@ func Test_newTaskExecutionMetadata(t *testing.T) { assert.Equal(t, 2, len(actual.GetLabels())) assert.Equal(t, "test-exec-identity", actual.GetLabels()[executionIdentityVariable]) }) + t.Run("Inject exec identity K8s label sanitation", func(t *testing.T) { + + existingMetadata := &mocks.TaskExecutionMetadata{} + existingAnnotations := map[string]string{} + existingMetadata.OnGetAnnotations().Return(existingAnnotations) + + existingMetadata.OnGetSecurityContext().Return(core.SecurityContext{RunAs: &core.Identity{ExecutionIdentity: "name@company.com"}}) + + existingLabels := map[string]string{ + "existingLabel": "existingLabelValue", + } + existingMetadata.OnGetLabels().Return(existingLabels) + + actual, err := newTaskExecutionMetadata(existingMetadata, &core.TaskTemplate{}) + assert.NoError(t, err) + + assert.Equal(t, 2, len(actual.GetLabels())) + assert.Equal(t, "name-company-com", actual.GetLabels()[executionIdentityVariable]) + }) } func Test_newTaskExecutionContext(t *testing.T) { From 028ff987cb45478e07474953528f947ad6132e48 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Fri, 8 Mar 2024 11:19:03 -0800 Subject: [PATCH 072/107] Hide generated proto stubs by default (#4947) * Add flyteidl/gen to .gitattributes Signed-off-by: Eduardo Apolinario * make generate to show a change Signed-off-by: Eduardo Apolinario * Prepend forward slash to rule Signed-off-by: Eduardo Apolinario * Hide copied swagger.json Signed-off-by: Eduardo Apolinario * Move .gitattributes from flyteidl to root Signed-off-by: Eduardo Apolinario * Revert test attribute change Signed-off-by: Eduardo Apolinario --------- Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- .gitattributes | 4 ++++ flyteidl/.gitattributes | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) delete mode 100644 flyteidl/.gitattributes diff --git a/.gitattributes b/.gitattributes index e4b260b693b..cbaca9f35ce 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,5 @@ docs/**/*html linguist-generated=true +flyteidl/gen/** linguist-generated=true +flyteidl/protos/**/*.rst linguist-generated=true +flyteidl/clients/go/assets/admin.swagger.json linguist-generated=true + diff --git a/flyteidl/.gitattributes b/flyteidl/.gitattributes deleted file mode 100644 index a2236d5f139..00000000000 --- a/flyteidl/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -gen/** linguist-generated=true -protos/**/*.rst linguist-generated=true From d0245d6d0d343382d4b1915cacb43145eb8e6b98 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Fri, 8 Mar 2024 14:00:21 -0800 Subject: [PATCH 073/107] Fix yaml comment in pod template examples (#5024) * Replace character to denote a comment in podtemplate examples Signed-off-by: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> * Update the other example Signed-off-by: Eduardo Apolinario --------- Signed-off-by: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- docs/deployment/configuration/general.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/deployment/configuration/general.rst b/docs/deployment/configuration/general.rst index b5278365d22..0ce9d259a4c 100644 --- a/docs/deployment/configuration/general.rst +++ b/docs/deployment/configuration/general.rst @@ -241,19 +241,19 @@ The resultant Pod using the above default PodTemplate and K8s Plugin configurati name: example-pod namespace: flytesnacks-development labels: - - foo // maintained initial value - - bar // value appended by k8s plugin configuration + - foo # maintained initial value + - bar # value appended by k8s plugin configuration annotations: - - foo: overridden-value // value overridden by k8s plugin configuration - - bar: initial-value // maintained initial value - - baz: non-overridden-value // value added by k8s plugin configuration + - foo: overridden-value # value overridden by k8s plugin configuration + - bar: initial-value # maintained initial value + - baz: non-overridden-value # value added by k8s plugin configuration spec: containers: - name: ax9kd5xb4p8r45bpdv7v-n0-0 image: ghcr.io/flyteorg/flytecookbook:core-bfee7e549ad749bfb55922e130f4330a0ebc25b0 terminationMessagePath: "/dev/foo" - // remaining container configuration omitted - hostNetwork: true // overridden by the k8s plugin configuration + # remaining container configuration omitted + hostNetwork: true # overridden by the k8s plugin configuration The last step in constructing a Pod is to apply any task-specific configuration. These options follow the same rules as merging the default PodTemplate and K8s @@ -343,7 +343,7 @@ The resultant Pod is as follows: image: a.b.c/image:v1 command: cmd args: [] - // remaining container configuration omitted + # remaining container configuration omitted Notice how options follow the same merging rules, i.e. lists append and maps override. @@ -450,4 +450,4 @@ The resultant pod for that task is as follows: image: a.b.c/image:v1 command: cmd args: [] - // remaining container configuration omitted + # remaining container configuration omitted From 3ff007a69b02b489d77b83856dd92d55b9808616 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Fri, 8 Mar 2024 15:17:24 -0800 Subject: [PATCH 074/107] Fix use of labels and annotations in pod template examples (#5025) Signed-off-by: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> --- docs/deployment/configuration/general.rst | 66 +++++++++++------------ 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/deployment/configuration/general.rst b/docs/deployment/configuration/general.rst index 0ce9d259a4c..0b97f8b8ff5 100644 --- a/docs/deployment/configuration/general.rst +++ b/docs/deployment/configuration/general.rst @@ -202,10 +202,10 @@ An example PodTemplate is shown: template: metadata: labels: - - foo + foo: from-pod-template annotations: - - foo: initial-value - - bar: initial-value + foo: initial-value + bar: initial-value spec: containers: - name: default @@ -221,10 +221,10 @@ Pod Labels, Annotations, and enables the host networking. plugins: k8s: default-labels: - - bar + bar: from-default-label default-annotations: - - foo: overridden-value - - baz: non-overridden-value + foo: overridden-value + baz: non-overridden-value enable-host-networking-pod: true To construct a Pod, FlytePropeller initializes a Pod definition using the default @@ -241,12 +241,12 @@ The resultant Pod using the above default PodTemplate and K8s Plugin configurati name: example-pod namespace: flytesnacks-development labels: - - foo # maintained initial value - - bar # value appended by k8s plugin configuration + foo: from-pod-template # maintained initial value + bar: from-default-label # value appended by k8s plugin configuration annotations: - - foo: overridden-value # value overridden by k8s plugin configuration - - bar: initial-value # maintained initial value - - baz: non-overridden-value # value added by k8s plugin configuration + foo: overridden-value # value overridden by k8s plugin configuration + bar: initial-value # maintained initial value + baz: non-overridden-value # value added by k8s plugin configuration spec: containers: - name: ax9kd5xb4p8r45bpdv7v-n0-0 @@ -280,8 +280,8 @@ of the task. For example: template: metadata: annotations: - - annotation_1: initial-value - - bar: initial-value + annotation_1: initial-value + bar: initial-value spec: containers: - name: default @@ -328,12 +328,12 @@ The resultant Pod is as follows: name: example-pod namespace: flytesnacks-development labels: - - label_1: value-1 # from Compile-time value - - label_2: value-2 # from Compile-time value + label_1: value-1 # from Compile-time value + label_2: value-2 # from Compile-time value annotations: - - annotation_1: value-1 # value overridden by Compile-time PodTemplate - - annotation_2: value-2 # from Compile-time PodTemplate - - bar: initial-value # from Runtime PodTemplate + annotation_1: value-1 # value overridden by Compile-time PodTemplate + annotation_2: value-2 # from Compile-time PodTemplate + bar: initial-value # from Runtime PodTemplate spec: containers: - name: default @@ -398,12 +398,12 @@ And a Runtime PodTemplate: template: metadata: labels: - - label_1: value-runtime - - label_2: value-runtime - - label_3: value-runtime + label_1: value-runtime + label_2: value-runtime + label_3: value-runtime annotations: - - foo: value-runtime - - bar: value-runtime + foo: value-runtime + bar: value-runtime spec: containers: - name: default @@ -418,10 +418,10 @@ And the following K8s Plugin Configuration: plugins: k8s: default-labels: - - label_1: value-plugin + label_1: value-plugin default-annotations: - - annotation_1: value-plugin - - baz: value-plugin + annotation_1: value-plugin + baz: value-plugin The resultant pod for that task is as follows: @@ -433,14 +433,14 @@ The resultant pod for that task is as follows: name: example-pod namespace: flytesnacks-development labels: - - label_1: value-plugin - - label_2: value-compile + label_1: value-plugin + label_2: value-compile annotations: - - annotation_1: value-plugin - - annotation_2: value-compile - - foo: value-runtime - - bar: value-runtime - - baz: value-plugin + annotation_1: value-plugin + annotation_2: value-compile + foo: value-runtime + bar: value-runtime + baz: value-plugin spec: containers: - name: default From a49284e94e156f10a1f1b4a91c825cb70aa70ea0 Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Fri, 8 Mar 2024 17:11:44 -0800 Subject: [PATCH 075/107] Add gRPC probe for agent (#4990) Signed-off-by: Kevin Su --- charts/flyteagent/README.md | 3 ++- charts/flyteagent/templates/agent/deployment.yaml | 4 ++++ charts/flyteagent/values.yaml | 9 ++++++++- deployment/agent/flyte_agent_helm_generated.yaml | 7 ++++++- docker/sandbox-bundled/manifests/complete-agent.yaml | 11 ++++++++--- docker/sandbox-bundled/manifests/complete.yaml | 4 ++-- docker/sandbox-bundled/manifests/dev.yaml | 4 ++-- 7 files changed, 32 insertions(+), 10 deletions(-) diff --git a/charts/flyteagent/README.md b/charts/flyteagent/README.md index f889c095bd4..d8627166733 100644 --- a/charts/flyteagent/README.md +++ b/charts/flyteagent/README.md @@ -20,7 +20,7 @@ A Helm chart for Flyte agent | fullnameOverride | string | `""` | | | image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | image.repository | string | `"ghcr.io/flyteorg/flyteagent"` | Docker image for flyteagent deployment | -| image.tag | string | `"1.10.7"` | Docker image tag | +| image.tag | string | `"1.10.8b4"` | Docker image tag | | nameOverride | string | `""` | | | nodeSelector | object | `{}` | nodeSelector for flyteagent deployment | | podAnnotations | object | `{}` | Annotations for flyteagent pods | @@ -30,6 +30,7 @@ A Helm chart for Flyte agent | ports.containerPort | int | `8000` | | | ports.name | string | `"agent-grpc"` | | | priorityClassName | string | `""` | Sets priorityClassName for datacatalog pod(s). | +| readinessProbe | object | `{"grpc":{"port":8000},"initialDelaySeconds":1,"periodSeconds":3}` | https://kubernetes.io/blog/2022/05/13/grpc-probes-now-in-beta/#trying-the-feature-out | | replicaCount | int | `1` | Replicas count for flyteagent deployment | | resources | object | `{"limits":{"cpu":"500m","ephemeral-storage":"200Mi","memory":"200Mi"},"requests":{"cpu":"500m","ephemeral-storage":"200Mi","memory":"200Mi"}}` | Default resources requests and limits for flyteagent deployment | | securityContext | object | `{"allowPrivilegeEscalation":false}` | Security context for container | diff --git a/charts/flyteagent/templates/agent/deployment.yaml b/charts/flyteagent/templates/agent/deployment.yaml index 2c6a903f8fa..caad9ca44a0 100644 --- a/charts/flyteagent/templates/agent/deployment.yaml +++ b/charts/flyteagent/templates/agent/deployment.yaml @@ -39,6 +39,10 @@ spec: ports: - containerPort: {{ .Values.ports.containerPort }} name: {{ .Values.ports.name }} + readinessProbe: + {{- with .Values.readinessProbe -}} + {{ tpl (toYaml .) $ | nindent 10 }} + {{- end }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} resources: {{- toYaml .Values.resources | nindent 10 }} diff --git a/charts/flyteagent/values.yaml b/charts/flyteagent/values.yaml index aee84dc2b28..266ec9c0eb7 100755 --- a/charts/flyteagent/values.yaml +++ b/charts/flyteagent/values.yaml @@ -23,7 +23,7 @@ image: # -- Docker image for flyteagent deployment repository: ghcr.io/flyteorg/flyteagent # -- Docker image tag - tag: 1.10.7 # FLYTEAGENT_TAG + tag: 1.10.8b4 # FLYTEAGENT_TAG # -- Docker image pull policy pullPolicy: IfNotPresent ports: @@ -56,6 +56,13 @@ serviceAccount: imagePullSecrets: [] # -- Security context for pod podSecurityContext: {} +# -- Readiness probe for flyteagent. Use readinessProbe: {} if agent doesn't implement grpc-health-checking service. +# -- https://kubernetes.io/blog/2022/05/13/grpc-probes-now-in-beta/#trying-the-feature-out +readinessProbe: + grpc: + port: 8000 + initialDelaySeconds: 1 + periodSeconds: 3 # -- Security context for container securityContext: allowPrivilegeEscalation: false diff --git a/deployment/agent/flyte_agent_helm_generated.yaml b/deployment/agent/flyte_agent_helm_generated.yaml index 46762b4cff2..4e78b991ac3 100644 --- a/deployment/agent/flyte_agent_helm_generated.yaml +++ b/deployment/agent/flyte_agent_helm_generated.yaml @@ -78,7 +78,7 @@ spec: - pyflyte - serve - agent - image: "ghcr.io/flyteorg/flyteagent:1.10.7" + image: "ghcr.io/flyteorg/flyteagent:1.10.8b4" imagePullPolicy: "IfNotPresent" name: flyteagent volumeMounts: @@ -87,6 +87,11 @@ spec: ports: - containerPort: 8000 name: agent-grpc + readinessProbe: + grpc: + port: 8000 + initialDelaySeconds: 1 + periodSeconds: 3 securityContext: allowPrivilegeEscalation: false resources: diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 5f72d69c20c..60577c57162 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: NTRkQThQbW1FNDlVQ1B4Rw== + haSharedSecret: UVdVTnB4cXBMVXMyRjhGUw== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 7ce58af0efd945f657619718c017f528d7055b8069cab01aed85e29639bd6d6a + checksum/secret: 7dd7be244652f0c2d4d5651db7e9d879fb74fb3a4407a80c48cba3dcd7b74e53 labels: app: docker-registry release: flyte-sandbox @@ -1755,12 +1755,17 @@ spec: value: minio - name: FLYTE_AWS_SECRET_ACCESS_KEY value: miniostorage - image: ghcr.io/flyteorg/flyteagent:1.10.7 + image: ghcr.io/flyteorg/flyteagent:1.10.8b4 imagePullPolicy: IfNotPresent name: flyteagent ports: - containerPort: 8000 name: agent-grpc + readinessProbe: + grpc: + port: 8000 + initialDelaySeconds: 1 + periodSeconds: 3 resources: limits: cpu: 500m diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index cacefc4730f..f148ebf1c81 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: c21mSkU1U0c0S0J0Q2lRRg== + haSharedSecret: cnBScDd2Y3Y0a2JlcHlzVQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 67f0b60e6520f3ae46a9f396411386d473441e7733c2544f6bface0f3b8475d9 + checksum/secret: 459fe43b90e7be7fce10bc94020ba94037c1a21501b61d4e7121c84251f1b198 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index 5e0017253ed..84e16dcabac 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: YjFqbVE2UE05QnpwMVVVeg== + haSharedSecret: NlJkVzYyZ1MzZmZIRE1nOA== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: ec699a25c688a15358899da82f9fa9bb199fe085f200f00facc09b448ad80369 + checksum/secret: 2e417b7dd337346d064d1cd4edf6b5624d335fce92ccfe22acd20485be450ec9 labels: app: docker-registry release: flyte-sandbox From 6a6855220e6967d06771cd9598e0effacd39884a Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Sun, 10 Mar 2024 16:53:31 +0800 Subject: [PATCH 076/107] Remove , file in the root directory (#4983) Signed-off-by: Future-Outlier --- , | 0 .../go/tasks/pluginmachinery/internal/webapi/launcher.go | 2 +- flyteplugins/go/tasks/plugins/webapi/agent/plugin.go | 2 +- flytepropeller/events/local_eventsink.go | 3 ++- flytepropeller/pkg/compiler/test/compiler_test.go | 2 +- flytepropeller/pkg/compiler/validators/utils_test.go | 2 +- flytepropeller/pkg/compiler/workflow_compiler_test.go | 2 +- flytepropeller/pkg/controller/nodes/executor.go | 2 +- 8 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 , diff --git a/, b/, deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher.go b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher.go index 99a3ccdf7a9..9482b3df953 100644 --- a/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher.go +++ b/flyteplugins/go/tasks/pluginmachinery/internal/webapi/launcher.go @@ -2,9 +2,9 @@ package webapi import ( "context" - pluginErrors "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors" "time" + pluginErrors "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/webapi" "github.com/flyteorg/flyte/flytestdlib/cache" diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go index 11ef7871b3d..c4decd04ef6 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go @@ -4,13 +4,13 @@ import ( "context" "encoding/gob" "fmt" - "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service" "time" "golang.org/x/exp/maps" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" flyteIdl "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service" pluginErrors "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" diff --git a/flytepropeller/events/local_eventsink.go b/flytepropeller/events/local_eventsink.go index 39e3ff5cac6..fdcd5408a49 100644 --- a/flytepropeller/events/local_eventsink.go +++ b/flytepropeller/events/local_eventsink.go @@ -7,8 +7,9 @@ import ( "os" "sync" - "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event" "github.com/golang/protobuf/proto" + + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event" ) type localSink struct { diff --git a/flytepropeller/pkg/compiler/test/compiler_test.go b/flytepropeller/pkg/compiler/test/compiler_test.go index 115d4bbf3ef..ae0322b66b5 100644 --- a/flytepropeller/pkg/compiler/test/compiler_test.go +++ b/flytepropeller/pkg/compiler/test/compiler_test.go @@ -4,7 +4,6 @@ import ( "bytes" "encoding/json" "flag" - "github.com/flyteorg/flyte/flytepropeller/pkg/visualize" "io/ioutil" "os" "path/filepath" @@ -27,6 +26,7 @@ import ( "github.com/flyteorg/flyte/flytepropeller/pkg/compiler/common" "github.com/flyteorg/flyte/flytepropeller/pkg/compiler/errors" "github.com/flyteorg/flyte/flytepropeller/pkg/compiler/transformers/k8s" + "github.com/flyteorg/flyte/flytepropeller/pkg/visualize" ) var update = flag.Bool("update", false, "Update .golden files") diff --git a/flytepropeller/pkg/compiler/validators/utils_test.go b/flytepropeller/pkg/compiler/validators/utils_test.go index 29daed99ae9..4a37f100dc9 100644 --- a/flytepropeller/pkg/compiler/validators/utils_test.go +++ b/flytepropeller/pkg/compiler/validators/utils_test.go @@ -1,9 +1,9 @@ package validators import ( - "github.com/golang/protobuf/proto" "testing" + "github.com/golang/protobuf/proto" "github.com/stretchr/testify/assert" "github.com/flyteorg/flyte/flyteidl/clients/go/coreutils" diff --git a/flytepropeller/pkg/compiler/workflow_compiler_test.go b/flytepropeller/pkg/compiler/workflow_compiler_test.go index 1e1e99fb022..eaffec3e218 100644 --- a/flytepropeller/pkg/compiler/workflow_compiler_test.go +++ b/flytepropeller/pkg/compiler/workflow_compiler_test.go @@ -2,10 +2,10 @@ package compiler import ( "fmt" - "github.com/golang/protobuf/proto" "strings" "testing" + "github.com/golang/protobuf/proto" "github.com/stretchr/testify/assert" "k8s.io/apimachinery/pkg/util/sets" diff --git a/flytepropeller/pkg/controller/nodes/executor.go b/flytepropeller/pkg/controller/nodes/executor.go index 0c98aeeb5fc..cf8c62cfad5 100644 --- a/flytepropeller/pkg/controller/nodes/executor.go +++ b/flytepropeller/pkg/controller/nodes/executor.go @@ -791,7 +791,7 @@ func isTimeoutExpired(queuedAt *metav1.Time, timeout time.Duration) bool { return false } -func (c *nodeExecutor) isEligibleForRetry(nCtx interfaces.NodeExecutionContext, nodeStatus v1alpha1.ExecutableNodeStatus, err *core.ExecutionError) (currentAttempt, maxAttempts uint32, isEligible bool) { +func (c *nodeExecutor) isEligibleForRetry(nCtx interfaces.NodeExecutionContext, nodeStatus v1alpha1.ExecutableNodeStatus, err *core.ExecutionError) (currentAttempt uint32, maxAttempts uint32, isEligible bool) { if config.GetConfig().NodeConfig.IgnoreRetryCause { currentAttempt = nodeStatus.GetAttempts() + 1 } else { From 24e8bc7123ebd7f01f154f24a65e38206680def3 Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Sun, 10 Mar 2024 01:18:45 -0800 Subject: [PATCH 077/107] [Housekeeping] Remove sandbox lite (#4996) Signed-off-by: Kevin Su --- .github/workflows/lite-image-manual.yml | 70 ----------- .github/workflows/sandbox.yml | 57 --------- .gitignore | 2 - Dockerfile.sandbox-lite | 115 ------------------ docker/sandbox-bundled/README.md | 11 -- docker/sandbox-lite/flyte-entrypoint-dind.sh | 84 ------------- docker/sandbox-lite/templates/namespace.yaml | 7 -- .../templates/project_resource_quota.yaml | 9 -- 8 files changed, 355 deletions(-) delete mode 100644 .github/workflows/lite-image-manual.yml delete mode 100644 Dockerfile.sandbox-lite delete mode 100644 docker/sandbox-bundled/README.md delete mode 100755 docker/sandbox-lite/flyte-entrypoint-dind.sh delete mode 100644 docker/sandbox-lite/templates/namespace.yaml delete mode 100644 docker/sandbox-lite/templates/project_resource_quota.yaml diff --git a/.github/workflows/lite-image-manual.yml b/.github/workflows/lite-image-manual.yml deleted file mode 100644 index 8b5831b0e24..00000000000 --- a/.github/workflows/lite-image-manual.yml +++ /dev/null @@ -1,70 +0,0 @@ -name: Manually push - -on: - workflow_dispatch: - inputs: - flyte_version: - description: 'flyte version' - required: true - default: 'latest' - type: string - -jobs: - sandbox-lite-build-dind: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: "0" - - name: Set flyte version to release - id: set_version - run: | - echo ::set-output name=flyte_version::$(echo ${{ github.event.inputs.flyte_version }}) - - name: Prepare DIND Image Names - id: dind-names - uses: docker/metadata-action@v3 - with: - # list of Docker images to use as base name for tags - images: | - ghcr.io/${{ github.repository_owner }}/flyte-sandbox-lite - tags: | - ${{ steps.set_version.outputs.flyte_version }} - type=sha,format=long, prefix=dind- - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-single-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-single-buildx - - name: Login to GitHub Container Registry - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: "${{ secrets.FLYTE_BOT_USERNAME }}" - password: "${{ secrets.FLYTE_BOT_PAT }}" - - name: Build and push DIND Image - uses: docker/build-push-action@v2 - with: - context: . - platforms: linux/arm64, linux/amd64 - push: true - target: dind - tags: ${{ steps.dind-names.outputs.tags }} - build-args: "FLYTE_VERSION=${{ steps.set_version.outputs.flyte_version }}" - file: Dockerfile.sandbox-lite - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new - - # Temp fix - # https://github.com/docker/build-push-action/issues/252 - # https://github.com/moby/buildkit/issues/1896 - name: Move cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache diff --git a/.github/workflows/sandbox.yml b/.github/workflows/sandbox.yml index dc78d4b5591..5b9a6056a44 100644 --- a/.github/workflows/sandbox.yml +++ b/.github/workflows/sandbox.yml @@ -62,60 +62,3 @@ jobs: tags: ${{ steps.dind-names.outputs.tags }} build-args: "FLYTE_VERSION=${{ steps.set_version.outputs.flyte_version }}" file: docker/sandbox/Dockerfile - - trigger-sandbox-lite-build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: "0" - - name: Setup Golang caches - uses: actions/cache@v3 - with: - path: | - /root/.cache/go-build - /root/go/pkg/mod - key: ${{ runner.os }}-golang-${{ hashFiles('go.sum') }} - restore-keys: | - ${{ runner.os }}-golang- - - name: Set flyte version to release - id: set_version - run: | - if [ ${{ github.event_name}} = "release" ]; then - echo ::set-output name=flyte_version::$(echo ${{ github.event.release.tag_name }}) - else - echo ::set-output name=flyte_version::latest - fi - - name: Prepare DIND Image Names - id: dind-names - uses: docker/metadata-action@v3 - with: - # list of Docker images to use as base name for tags - images: | - ghcr.io/${{ github.repository_owner }}/flyte-sandbox-lite - tags: | - ${{ steps.set_version.outputs.flyte_version }} - type=sha,format=long - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - name: Login to GitHub Container Registry - if: ${{ github.event_name == 'release' }} - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: "${{ secrets.FLYTE_BOT_USERNAME }}" - password: "${{ secrets.FLYTE_BOT_PAT }}" - - name: Build and push DIND Image - uses: docker/build-push-action@v2 - with: - context: . - platforms: linux/arm64, linux/amd64 - push: ${{ github.event_name == 'release' }} - target: dind - tags: ${{ steps.dind-names.outputs.tags }} - build-args: "FLYTE_VERSION=${{ steps.set_version.outputs.flyte_version }}" - file: Dockerfile.sandbox-lite diff --git a/.gitignore b/.gitignore index a8e78b52d68..301bf266a85 100644 --- a/.gitignore +++ b/.gitignore @@ -20,8 +20,6 @@ __pycache__/ /charts/flyteagent/Chart.lock /charts/flyte-deps/Chart.lock /charts/flyte-core/Chart.lock -/docker/sandbox-lite/storage/charts -/docker/sandbox-lite/storage/Chart.lock **/*.bak- .python-version dist/ diff --git a/Dockerfile.sandbox-lite b/Dockerfile.sandbox-lite deleted file mode 100644 index 095c83b6e1e..00000000000 --- a/Dockerfile.sandbox-lite +++ /dev/null @@ -1,115 +0,0 @@ -# syntax=docker/dockerfile:1.3 - - -ARG FLYTE_VERSION="latest" -FROM ghcr.io/flyteorg/flyteconsole-release:${FLYTE_VERSION} AS flyteconsole - -FROM --platform=${BUILDPLATFORM} golang:1.19.0-alpine3.16 AS go_builder - -ARG TARGETARCH -ENV GOARCH=${TARGETARCH} -ENV GOOS=linux - -# Install dependencies -RUN apk add --no-cache build-base - -COPY go.mod go.sum /app/flyte/ -WORKDIR /app/flyte - -COPY datacatalog datacatalog -COPY flyteadmin flyteadmin -COPY flytecopilot flytecopilot -COPY flyteidl flyteidl -COPY flyteplugins flyteplugins -COPY flytepropeller flytepropeller -COPY flytestdlib flytestdlib - -RUN go mod download - -COPY --from=flyteconsole /app/ cmd/single/dist - -COPY cmd/ /app/flyte/cmd/ -RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/root/go/pkg/mod go build -tags console -v -o /flyte cmd/main.go - -FROM alpine:3.15 AS base - -# Install dependencies -RUN apk add --no-cache openssl - -# Make directory to store artifacts -RUN mkdir -p /flyteorg/bin /flyteorg/share - -# Install k3s -ARG K3S_VERSION="v1.21.1%2Bk3s1" -ARG TARGETARCH - -RUN case $TARGETARCH in \ - amd64) export SUFFIX=;; \ - arm64) export SUFFIX=-arm64;; \ - aarch64) export SUFFIX=-arm64;; \ - # TODO: Check if we need to add case fail - esac; \ - wget -q -O /flyteorg/bin/k3s https://github.com/k3s-io/k3s/releases/download/${K3S_VERSION}/k3s${SUFFIX} \ - && chmod +x /flyteorg/bin/k3s - -# Install Helm -ARG HELM_VERSION="v3.6.3" - -RUN wget -q -O /flyteorg/bin/get_helm.sh https://raw.githubusercontent.com/helm/helm/${HELM_VERSION}/scripts/get-helm-3 && \ - chmod 700 /flyteorg/bin/get_helm.sh && \ - sh /flyteorg/bin/get_helm.sh --version ${HELM_VERSION} && \ - mv /usr/local/bin/helm /flyteorg/bin/helm && \ - rm /flyteorg/bin/get_helm.sh - -# Install flytectl -RUN wget -q -O - https://raw.githubusercontent.com/flyteorg/flytectl/master/install.sh | BINDIR=/flyteorg/bin sh -s - -# Install buildkit-cli-for-kubectl -COPY --from=go_builder /flyte /flyteorg/bin/ - -# Copy flyte chart -COPY charts/flyte-deps/ /flyteorg/share/flyte-deps - -# Copy scripts -COPY docker/sandbox/kubectl docker/sandbox/cgroup-v2-hack.sh /flyteorg/bin/ - -# Copy Flyte config -COPY flyte.yaml /flyteorg/share/flyte.yaml - -FROM docker:20.10.14-dind-alpine3.15 AS dind - -# Install dependencies -RUN apk add --no-cache bash git make tini curl jq - -# Copy artifacts from base -COPY --from=base /flyteorg/ /flyteorg/ - -# Copy entrypoints -COPY docker/sandbox-lite/flyte-entrypoint-dind.sh /flyteorg/bin/flyte-entrypoint.sh - -# Copy cluster resource templates -COPY docker/sandbox-lite/templates/ /etc/flyte/clusterresource/templates/ - -ENV FLYTE_VERSION "${FLYTE_VERSION}" - -ARG FLYTE_TEST="release" -ENV FLYTE_TEST "${FLYTE_TEST}" -ENV FLYTE_DEV "False" - -RUN addgroup -S docker - -# Update PATH variable -ENV PATH "/flyteorg/bin:${PATH}" -ENV POD_NAMESPACE "flyte" - -# Declare volumes for k3s -VOLUME /var/lib/kubelet -VOLUME /var/lib/rancher/k3s -VOLUME /var/lib/cni -VOLUME /var/log - -# Expose Flyte ports -# 30080 for console, 30081 for gRPC, 30082 for k8s dashboard, 30084 for minio api, 30088 for minio console -EXPOSE 30080 30081 30082 30084 30088 30089 - -ENTRYPOINT ["tini", "flyte-entrypoint.sh"] diff --git a/docker/sandbox-bundled/README.md b/docker/sandbox-bundled/README.md deleted file mode 100644 index 17ca62b0020..00000000000 --- a/docker/sandbox-bundled/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Flyte Deployment Sandbox - -First make images -``` -ytong@Yees-MBP:~/go/src/github.com/flyteorg/flyte/docker/sandbox-ultra [flyte-sandbox] (cicd-sandbox-lite) $ make images -``` - -then build the k3s image. -``` -ytong@Yees-MBP:~/go/src/github.com/flyteorg/flyte/docker/sandbox-ultra [] (cicd-sandbox-lite) $ docker buildx build --file images/dockerfiles/k3s/Dockerfile --platform linux/arm64,linux/amd64 --push --tag ghcr.io/flyteorg/flyte-sandbox-lite:ultra7 . -``` diff --git a/docker/sandbox-lite/flyte-entrypoint-dind.sh b/docker/sandbox-lite/flyte-entrypoint-dind.sh deleted file mode 100755 index 0585624970c..00000000000 --- a/docker/sandbox-lite/flyte-entrypoint-dind.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/sh - -set -euo pipefail - -# Apply cgroup v2 hack -cgroup-v2-hack.sh - -trap 'pkill -P $$' EXIT -FLYTE_TIMEOUT=${FLYTE_TIMEOUT:-600} - -monitor() { - while : ; do - for pid in $@ ; do - kill -0 $pid &> /dev/null || exit 1 - done - - sleep 1 - done -} - -# Start docker daemon -echo "Starting Docker daemon..." -file="/var/run/docker.pid" -if [ -f "$file" ] ; then - rm "$file" -fi -dockerd &> /var/log/dockerd.log & -DOCKERD_PID=$! -timeout "$FLYTE_TIMEOUT" sh -c "until docker info &> /dev/null; do sleep 1; done" || ( echo >&2 "Timed out while waiting for dockerd to start"; exit 1 ) -echo "Done." - -# Start k3s -echo "Starting k3s cluster..." -KUBERNETES_API_PORT=${KUBERNETES_API_PORT:-6443} -k3s server --docker --no-deploy=traefik --no-deploy=servicelb --no-deploy=local-storage --no-deploy=metrics-server --https-listen-port=${KUBERNETES_API_PORT} &> /var/log/k3s.log & -K3S_PID=$! -timeout "$FLYTE_TIMEOUT" sh -c "until k3s kubectl get node $HOSTNAME &> /dev/null; do sleep 1; done" || ( echo >&2 "Timed out while waiting for the Kubernetes cluster to start"; exit 1 ) -k3s kubectl wait node $HOSTNAME --for condition=Ready --timeout ${FLYTE_TIMEOUT}s &> /dev/null || ( echo >&2 "Timed out while waiting for the Kubernetes cluster to be ready"; exit 1 ) -echo "Done." - -# Deploy flyte -echo "Deploying Flyte..." -charts="/flyteorg/share/flyte-deps" -version="" - -if [[ $FLYTE_TEST = "release" ]] -then - helm repo add flyteorg https://flyteorg.github.io/flyte - helm fetch flyteorg/flyte-deps --version=$FLYTE_VERSION - version="--version $FLYTE_VERSION" - charts="flyteorg/flyte-deps" -fi - -if [[ $FLYTE_TEST = "local" ]] -then - helm dep update $charts -fi -helm upgrade -n flyte --create-namespace flyte $charts --kubeconfig /etc/rancher/k3s/k3s.yaml --install --wait - -timeout "$FLYTE_TIMEOUT" sh -c "until k3s kubectl get namespace flyte &> /dev/null; do sleep 1; done" || ( echo >&2 "Timed out while waiting for the Flyte namespace to be created"; exit 1 ) -timeout "$FLYTE_TIMEOUT" sh -c "until k3s kubectl rollout status deployment minio -n flyte &> /dev/null; do sleep 1; done" || ( echo >&2 "Timed out while waiting for the minio rollout to be created"; exit 1 ) -timeout "$FLYTE_TIMEOUT" sh -c "until k3s kubectl rollout status deployment postgres -n flyte &> /dev/null; do sleep 1; done" || ( echo >&2 "Timed out while waiting for the postgres rollout to be created"; exit 1 ) - -k3s kubectl wait --for=condition=available deployment/minio deployment/postgres -n flyte --timeout=5m || ( echo >&2 "Timed out while waiting for the Flyte deployment to start"; exit 1 ) -# Create directory to store certificate -mkdir -p /tmp/k8s-webhook-server/serving-certs - -# With flytectl sandbox --source flag, we mount the root volume to user source dir that will create helm & k8s cache specific directory. -# In Linux, These file belongs to root user that is different then current user -# In this case during fast serialization, Pyflyte will through error because of permission denied -rm -rf /root/.cache /root/.kube /root/.config - -if [[ $FLYTE_DEV = "True" ]] -then - # Namespaces must be manually created since cluster resource manager is disabled by default - k3s kubectl create ns flytesnacks-development - # Monitor running processes. Exit when the first process exits. - monitor ${DOCKERD_PID} ${K3S_PID} -else - flyte start --config /flyteorg/share/flyte.yaml & - FLYTE_PID=$! - # Monitor running processes. Exit when the first process exits. - monitor ${DOCKERD_PID} ${K3S_PID} ${FLYTE_PID} -fi diff --git a/docker/sandbox-lite/templates/namespace.yaml b/docker/sandbox-lite/templates/namespace.yaml deleted file mode 100644 index 90b53893ac4..00000000000 --- a/docker/sandbox-lite/templates/namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: {{ namespace }} -spec: - finalizers: - - kubernetes \ No newline at end of file diff --git a/docker/sandbox-lite/templates/project_resource_quota.yaml b/docker/sandbox-lite/templates/project_resource_quota.yaml deleted file mode 100644 index 12e77115030..00000000000 --- a/docker/sandbox-lite/templates/project_resource_quota.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v1 -kind: ResourceQuota -metadata: - name: project-quota - namespace: {{ namespace }} -spec: - hard: - limits.cpu: {{ projectQuotaCpu }} - limits.memory: {{ projectQuotaMemory }} \ No newline at end of file From aea794fc434c1be1b80d5fb369245a054ef900b1 Mon Sep 17 00:00:00 2001 From: "Ethan Brown (Domino)" <111539728+ddl-ebrown@users.noreply.github.com> Date: Mon, 11 Mar 2024 10:53:26 -0700 Subject: [PATCH 078/107] Remove unnecessary ingress capability checks (#5028) - Kubernetes 1.19 was released in August 2020 and it added support for non-beta ingress types - Kubernetes 1.22 removed the beta ingress type in August 2021 and went out of support in October 2022 - As of March 2024, only Kubernetes 1.26 and later are supported - Therefore, there's no reason to make this check! Signed-off-by: ddl-ebrown --- .../flyte-core/templates/common/ingress.yaml | 183 ------------------ 1 file changed, 183 deletions(-) diff --git a/charts/flyte-core/templates/common/ingress.yaml b/charts/flyte-core/templates/common/ingress.yaml index 69f7c4ae070..d812f2abe3a 100644 --- a/charts/flyte-core/templates/common/ingress.yaml +++ b/charts/flyte-core/templates/common/ingress.yaml @@ -7,154 +7,90 @@ - path: /flyteidl.service.SignalService pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /flyteidl.service.SignalService/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /flyteidl.service.AdminService pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /flyteidl.service.AdminService/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /flyteidl.service.DataProxyService pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /flyteidl.service.DataProxyService/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /flyteidl.service.AuthMetadataService pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /flyteidl.service.AuthMetadataService/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /flyteidl.service.IdentityService pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /flyteidl.service.IdentityService/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /grpc.health.v1.Health pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} - path: /grpc.health.v1.Health/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: {{ $grpcPort }} -{{- else }} - serviceName: flyteadmin - servicePort: {{ $grpcPort }} -{{- end }} {{- end }} {{- if .Values.common.ingress.enabled }} -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} apiVersion: networking.k8s.io/v1 -{{- else }} -apiVersion: networking.k8s.io/v1beta1 -{{- end }} kind: Ingress metadata: name: {{ template "flyte.name" . }} @@ -171,288 +107,173 @@ spec: - path: /* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: ssl-redirect port: name: use-annotation -{{- else }} - serviceName: ssl-redirect - servicePort: use-annotation -{{- end }} {{- end }} # This is useful only for frontend development {{- if .Values.common.ingress.webpackHMR }} - path: /__webpack_hmr pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteconsole port: number: 80 -{{- else }} - serviceName: flyteconsole - servicePort: 80 -{{- end }} {{- end }} # NOTE: If you change this, you must update the BASE_URL value in flyteconsole.yaml - path: /console pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteconsole port: number: 80 -{{- else }} - serviceName: flyteconsole - servicePort: 80 -{{- end }} - path: /console/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteconsole port: number: 80 -{{- else }} - serviceName: flyteconsole - servicePort: 80 -{{- end }} - path: /api pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /api/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /healthcheck pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /v1/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} {{- if .Values.deployRedoc }} # Port 87 in FlyteAdmin maps to the redoc container. - path: /openapi pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: redoc port: number: 87 -{{- else }} - serviceName: redoc - servicePort: 87 -{{- end }} # Port 87 in FlyteAdmin maps to the redoc container. - path: /openapi/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: redoc port: number: 87 -{{- else }} - serviceName: redoc - servicePort: 87 -{{- end }} {{- end }} - path: /.well-known pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /.well-known/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /login pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /login/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /logout pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /logout/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /callback pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /callback/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /me pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /config pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /config/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /oauth2 pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} - path: /oauth2/* pathType: ImplementationSpecific backend: -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} service: name: flyteadmin port: number: 80 -{{- else }} - serviceName: flyteadmin - servicePort: 80 -{{- end }} {{- if not .Values.common.ingress.separateGrpcIngress }} {{- include "grpcRoutes" . | nindent 10 -}} {{- end }} @@ -469,11 +290,7 @@ spec: # Certain ingress controllers like nginx cannot serve HTTP 1 and GRPC with a single ingress because GRPC can only # enabled on the ingress object, not on backend services (GRPC annotation is set on the ingress, not on the services). --- -{{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} apiVersion: networking.k8s.io/v1 -{{- else }} -apiVersion: networking.k8s.io/v1beta1 -{{- end }} kind: Ingress metadata: name: {{ template "flyte.name" . }}-grpc From b0b5dc35a23666c1201ddd63ea496ef2331746c5 Mon Sep 17 00:00:00 2001 From: pryce-turner <31577879+pryce-turner@users.noreply.github.com> Date: Mon, 11 Mar 2024 13:21:49 -0700 Subject: [PATCH 079/107] Nested parallelization (#5022) * Nested parallelization first draft Signed-off-by: pryce-turner * Added screenshots and considerations section Signed-off-by: pryce-turner * Spelling Signed-off-by: pryce-turner * toctree Signed-off-by: pryce-turner * Apply suggestions from code review Adding most suggestions with a few that need to be handled locally! Co-authored-by: Nikki Everett Signed-off-by: pryce-turner <31577879+pryce-turner@users.noreply.github.com> * Merge * Updated screenshot with annotation Signed-off-by: pryce-turner --------- Signed-off-by: pryce-turner Signed-off-by: pryce-turner <31577879+pryce-turner@users.noreply.github.com> Co-authored-by: Nikki Everett --- docs/user_guide/advanced_composition/index.md | 1 + .../nested_parallelization.md | 177 ++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 docs/user_guide/advanced_composition/nested_parallelization.md diff --git a/docs/user_guide/advanced_composition/index.md b/docs/user_guide/advanced_composition/index.md index 26eb8df33cf..3d0f14fc83c 100644 --- a/docs/user_guide/advanced_composition/index.md +++ b/docs/user_guide/advanced_composition/index.md @@ -16,6 +16,7 @@ chaining_flyte_entities subworkflows dynamic_workflows map_tasks +nested_parallelization eager_workflows decorating_tasks decorating_workflows diff --git a/docs/user_guide/advanced_composition/nested_parallelization.md b/docs/user_guide/advanced_composition/nested_parallelization.md new file mode 100644 index 00000000000..73fd921b2e4 --- /dev/null +++ b/docs/user_guide/advanced_composition/nested_parallelization.md @@ -0,0 +1,177 @@ +(nested_parallelization)= + +# Nested parallelization + +```{eval-rst} +.. tags:: Advanced +``` + +For exceptionally large or complicated workflows that can't be adequately implemented as dynamic workflows or map tasks, it can be beneficial to have multiple levels of workflow parallelization. + +This is useful for multiple reasons: +- Better code organization +- Better code reuse +- Better testing +- Better debugging +- Better monitoring, since each subworkflow can be run independently and monitored independently +- Better performance and scale, since each subworkflow is executed as a separate workflow and thus can be distributed among different flytepropeller workers and shards. This allows for better parallelism and scale. + +## Nested dynamic workflows + +You can use nested dynamic workflows to break down a large workflow into smaller workflows and then compose them together to form a hierarchy. In this example, a top-level workflow uses two levels of dynamic workflows to process a list through some simple addition tasks and then flatten the list again. + +### Example code + +```python +""" +A core workflow parallelized as six items with a chunk size of two will be structured as follows: + +multi_wf -> level1 -> level2 -> core_wf -> step1 -> step2 + -> core_wf -> step1 -> step2 + level2 -> core_wf -> step1 -> step2 + -> core_wf -> step1 -> step2 + level2 -> core_wf -> step1 -> step2 + -> core_wf -> step1 -> step2 +""" + +import typing +from flytekit import task, workflow, dynamic, LaunchPlan + + +@task +def step1(a: int) -> int: + return a + 1 + + +@task +def step2(a: int) -> int: + return a + 2 + + +@workflow +def core_wf(a: int) -> int: + return step2(a=step1(a=a)) + + +core_wf_lp = LaunchPlan.get_or_create(core_wf) + + +@dynamic +def level2(l: typing.List[int]) -> typing.List[int]: + return [core_wf_lp(a=a) for a in l] + + +@task +def reduce(l: typing.List[typing.List[int]]) -> typing.List[int]: + f = [] + for i in l: + f.extend(i) + return f + + +@dynamic +def level1(l: typing.List[int], chunk: int) -> typing.List[int]: + v = [] + for i in range(0, len(l), chunk): + v.append(level2(l=l[i:i + chunk])) + return reduce(l=v) + + +@workflow +def multi_wf(l: typing.List[int], chunk: int) -> typing.List[int]: + return level1(l=l, chunk=chunk) +``` + + +### Flyte console + +Here is a visual representation of the execution of nested dynamic workflows in the Flyte console: + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/nested_parallel_top_level.png?raw=true +:alt: Nested Parallelization UI View +:class: with-shadow +::: + +In each level2 node at the top level, two core workflows are run in parallel: + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/nested_parallel_inner_dynamic_anno.png?raw=true +:alt: Inner dynamic workflow +:class: with-shadow +::: + +Finally, in each core workflow, the two tasks are executed in series: + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/nested_parallel_subworkflow.png?raw=true +:alt: Core workflow +:class: with-shadow +::: + +## Mixed parallelism + +This example is similar to nested dynamic workflows, but instead of using a dynamic workflow to parallelize a core workflow with serial tasks, we use a core workflow to call a map task, which processes both inputs in parallel. This workflow has one less layer of parallelism, so the outputs won't be the same as those of the nested parallelization example, but it does still demonstrate how you can mix these different approaches to achieve concurrency. + +### Example code + +```python +""" +A core workflow parallelized as six items with a chunk size of two will be structured as follows: + +multi_wf -> level1 -> level2 -> mappable + -> mappable + level2 -> mappable + -> mappable + level2 -> mappable + -> mappable +""" +import typing +from flytekit import task, workflow, dynamic, map_task + + +@task +def mappable(a: int) -> int: + return a + 2 + + +@workflow +def level2(l: typing.List[int]) -> typing.List[int]: + return map_task(mappable)(a=l) + + +@task +def reduce(l: typing.List[typing.List[int]]) -> typing.List[int]: + f = [] + for i in l: + f.extend(i) + return f + + +@dynamic +def level1(l: typing.List[int], chunk: int) -> typing.List[int]: + v = [] + for i in range(0, len(l), chunk): + v.append(level2(l=l[i : i + chunk])) + return reduce(l=v) + + +@workflow +def multi_wf(l: typing.List[int], chunk: int) -> typing.List[int]: + return level1(l=l, chunk=chunk) + +``` + +### Flyte console + +While the top-level dynamic workflow will be exactly the same as the nested dynamic workflows example, the inner map task nodes will be visible as links in the sidebar: + +:::{figure} https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/user_guide/nested_parallel_inner_map.png?raw=true +:alt: Inner Map Task +:class: with-shadow +::: + +## Design considerations + +While you can nest even further if needed, or incorporate map tasks if your inputs are all the same type, the design of your workflow should be informed by the actual data you're processing. For example, if you have a big library of music from which you'd like to extract the lyrics, the first level could loop through all the albums, and the second level could process each song. + +If you're just processing an enormous list of the same input, it's best to keep your code simple and let the scheduler handle optimizing the execution. Additionally, unless you need dynamic workflow features like mixing and matching inputs and outputs, it's usually most efficient to use a map task, which has the added benefit of keeping the UI clean. + +You can also choose to limit the scale of parallel execution at a few levels. The `max_parallelism` attribute can be applied at the workflow level and will limit the number of parallel tasks being executed. (This is set to 25 by default.) Within map tasks, you can specify a `concurrency` argument, which will limit the number of mapped tasks that can run in parallel at any given time. \ No newline at end of file From 04508c0bcc90f8447dab906a495ea02e14cee925 Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Mon, 11 Mar 2024 13:54:21 -0700 Subject: [PATCH 080/107] Enable agent service by default (#4993) Signed-off-by: Kevin Su --- charts/flyte-binary/eks-production.yaml | 1 + charts/flyte-binary/eks-starter.yaml | 1 + charts/flyte-core/README.md | 6 +++--- charts/flyte-core/values-eks.yaml | 1 + charts/flyte-core/values-gcp.yaml | 1 + .../values-keycloak-idp-flyteclients-without-browser.yaml | 1 + charts/flyte-core/values.yaml | 3 +-- deployment/eks/flyte_aws_scheduler_helm_generated.yaml | 5 +++-- deployment/eks/flyte_helm_dataplane_generated.yaml | 5 +++-- deployment/eks/flyte_helm_generated.yaml | 5 +++-- deployment/gcp/flyte_helm_dataplane_generated.yaml | 5 +++-- deployment/gcp/flyte_helm_generated.yaml | 5 +++-- docker/sandbox-bundled/manifests/complete-agent.yaml | 4 ++-- docker/sandbox-bundled/manifests/complete.yaml | 4 ++-- docker/sandbox-bundled/manifests/dev.yaml | 4 ++-- flyteplugins/go/tasks/plugins/webapi/agent/client.go | 3 +++ 16 files changed, 33 insertions(+), 21 deletions(-) diff --git a/charts/flyte-binary/eks-production.yaml b/charts/flyte-binary/eks-production.yaml index b73da0278a6..987269a5aa5 100644 --- a/charts/flyte-binary/eks-production.yaml +++ b/charts/flyte-binary/eks-production.yaml @@ -68,6 +68,7 @@ configuration: - container - sidecar - K8S-ARRAY #used for MapTasks + - agent-service default-for-task-types: - container: container - container_array: K8S-ARRAY diff --git a/charts/flyte-binary/eks-starter.yaml b/charts/flyte-binary/eks-starter.yaml index 51fd15f112b..20257bf0723 100644 --- a/charts/flyte-binary/eks-starter.yaml +++ b/charts/flyte-binary/eks-starter.yaml @@ -68,6 +68,7 @@ configuration: - container - sidecar - K8S-ARRAY #used for MapTasks + - agent-service default-for-task-types: - container: container - container_array: K8S-ARRAY diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index 5f0e3dcbb52..6b54dc56d3c 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -102,9 +102,9 @@ helm install gateway bitnami/contour -n flyte | configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | | configmap.datacatalogServer | object | `{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"heartbeat-grace-period-multiplier":3,"max-reservation-heartbeat":"30s","metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config | | configmap.domain | object | `{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]}` | Domains configuration for Flyte projects. This enables the specified number of domains across all projects in Flyte. | -| configmap.enabled_plugins.tasks | object | `{"task-plugins":{"default-for-task-types":{"container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array"]}}` | Tasks specific configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#GetConfig) | -| configmap.enabled_plugins.tasks.task-plugins | object | `{"default-for-task-types":{"container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array"]}` | Plugins configuration, [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#TaskPluginConfig) | -| configmap.enabled_plugins.tasks.task-plugins.enabled-plugins | list | `["container","sidecar","k8s-array"]` | [Enabled Plugins](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/config#Config). Enable sagemaker*, athena if you install the backend plugins | +| configmap.enabled_plugins.tasks | object | `{"task-plugins":{"default-for-task-types":{"container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}` | Tasks specific configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#GetConfig) | +| configmap.enabled_plugins.tasks.task-plugins | object | `{"default-for-task-types":{"container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}` | Plugins configuration, [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#TaskPluginConfig) | +| configmap.enabled_plugins.tasks.task-plugins.enabled-plugins | list | `["container","sidecar","k8s-array","agent-service"]` | [Enabled Plugins](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/config#Config). Enable sagemaker*, athena if you install the backend plugins | | configmap.k8s | object | `{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[],"default-memory":"100Mi"}}}` | Kubernetes specific Flyte configuration | | configmap.k8s.plugins.k8s | object | `{"default-cpus":"100m","default-env-vars":[],"default-memory":"100Mi"}` | Configuration section for all K8s specific plugins [Configuration structure](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/flytek8s/config) | | configmap.remoteData.remoteData.region | string | `"us-east-1"` | | diff --git a/charts/flyte-core/values-eks.yaml b/charts/flyte-core/values-eks.yaml index b05cd1f61cc..1dbaded1c7e 100644 --- a/charts/flyte-core/values-eks.yaml +++ b/charts/flyte-core/values-eks.yaml @@ -277,6 +277,7 @@ configmap: - container - sidecar - k8s-array + - agent-service # - sagemaker_hyperparameter_tuning # - sagemaker_custom_training # - sagemaker_training diff --git a/charts/flyte-core/values-gcp.yaml b/charts/flyte-core/values-gcp.yaml index 4051fb23b92..181772c0c6e 100644 --- a/charts/flyte-core/values-gcp.yaml +++ b/charts/flyte-core/values-gcp.yaml @@ -292,6 +292,7 @@ configmap: - container - sidecar - k8s-array + - agent-service default-for-task-types: container: container sidecar: sidecar diff --git a/charts/flyte-core/values-keycloak-idp-flyteclients-without-browser.yaml b/charts/flyte-core/values-keycloak-idp-flyteclients-without-browser.yaml index 380db08be71..edfd9478bcd 100644 --- a/charts/flyte-core/values-keycloak-idp-flyteclients-without-browser.yaml +++ b/charts/flyte-core/values-keycloak-idp-flyteclients-without-browser.yaml @@ -669,6 +669,7 @@ configmap: - container - sidecar - k8s-array + - agent-service default-for-task-types: container: container sidecar: sidecar diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index 32fb5c58278..fbc20165226 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -792,8 +792,7 @@ configmap: - container - sidecar - k8s-array - # -- Uncomment to enable agent service - # - agent-service + - agent-service default-for-task-types: container: container sidecar: sidecar diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index 83c0d249c53..a3f67a2fb84 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -489,6 +489,7 @@ data: - container - sidecar - k8s-array + - agent-service k8s.yaml: | plugins: k8s: @@ -1267,7 +1268,7 @@ spec: template: metadata: annotations: - configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" + configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1349,7 +1350,7 @@ spec: app.kubernetes.io/name: flyte-pod-webhook app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" + configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" spec: securityContext: fsGroup: 65534 diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index 90d327cb9eb..9a73a12ccf0 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -154,6 +154,7 @@ data: - container - sidecar - k8s-array + - agent-service k8s.yaml: | plugins: k8s: @@ -427,7 +428,7 @@ spec: template: metadata: annotations: - configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" + configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -509,7 +510,7 @@ spec: app.kubernetes.io/name: flyte-pod-webhook app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" + configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" spec: securityContext: fsGroup: 65534 diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index 8f34f4f2361..8a6787818bf 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -520,6 +520,7 @@ data: - container - sidecar - k8s-array + - agent-service k8s.yaml: | plugins: k8s: @@ -1397,7 +1398,7 @@ spec: template: metadata: annotations: - configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" + configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1479,7 +1480,7 @@ spec: app.kubernetes.io/name: flyte-pod-webhook app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "6f925c4627a6ae0040ea2073d2f5faca3fbfa82c90d90eae474819f23d52212" + configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" spec: securityContext: fsGroup: 65534 diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index d19a4d48c45..ee3844680c0 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -154,6 +154,7 @@ data: - container - sidecar - k8s-array + - agent-service k8s.yaml: | plugins: k8s: @@ -435,7 +436,7 @@ spec: template: metadata: annotations: - configChecksum: "9c6856d58b3168a752486076eccbc6783bbb94d62b47139c6cab6e1fe12174c" + configChecksum: "9bc27a186f548894dceed907e428e5ff148a7bc709218fa0d828cade4598f1f" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -516,7 +517,7 @@ spec: app.kubernetes.io/name: flyte-pod-webhook app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "9c6856d58b3168a752486076eccbc6783bbb94d62b47139c6cab6e1fe12174c" + configChecksum: "9bc27a186f548894dceed907e428e5ff148a7bc709218fa0d828cade4598f1f" spec: securityContext: fsGroup: 65534 diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index 5b8757459c1..3167fb54adc 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -533,6 +533,7 @@ data: - container - sidecar - k8s-array + - agent-service k8s.yaml: | plugins: k8s: @@ -1420,7 +1421,7 @@ spec: template: metadata: annotations: - configChecksum: "9c6856d58b3168a752486076eccbc6783bbb94d62b47139c6cab6e1fe12174c" + configChecksum: "9bc27a186f548894dceed907e428e5ff148a7bc709218fa0d828cade4598f1f" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1501,7 +1502,7 @@ spec: app.kubernetes.io/name: flyte-pod-webhook app.kubernetes.io/version: v1.11.0-b1 annotations: - configChecksum: "9c6856d58b3168a752486076eccbc6783bbb94d62b47139c6cab6e1fe12174c" + configChecksum: "9bc27a186f548894dceed907e428e5ff148a7bc709218fa0d828cade4598f1f" spec: securityContext: fsGroup: 65534 diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 60577c57162..95fa73316ac 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: UVdVTnB4cXBMVXMyRjhGUw== + haSharedSecret: ZVNtQlpWSTRkZnFtRVp0cw== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 7dd7be244652f0c2d4d5651db7e9d879fb74fb3a4407a80c48cba3dcd7b74e53 + checksum/secret: e540906f7530a7b8f9c9e7488bfe922999294201b1f0f75ab310162ef6441d96 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index f148ebf1c81..5117665b858 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: cnBScDd2Y3Y0a2JlcHlzVQ== + haSharedSecret: VnRRWDlOZXVWcXNmZFRXRQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 459fe43b90e7be7fce10bc94020ba94037c1a21501b61d4e7121c84251f1b198 + checksum/secret: 1a60b7cc9612c65c9a369c55629f6054dfed24c40b064269274d0fbb7c6d0823 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index 84e16dcabac..a4ae9c83db4 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: NlJkVzYyZ1MzZmZIRE1nOA== + haSharedSecret: dlY1cWxrMFBJOU8yazFyZQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 2e417b7dd337346d064d1cd4edf6b5624d335fce92ccfe22acd20485be450ec9 + checksum/secret: b86db743a29c0ae883fd1fd39fb1a6e81288c8451f3ebac001c7f2f1893d3f2a labels: app: docker-registry release: flyte-sandbox diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/client.go b/flyteplugins/go/tasks/plugins/webapi/agent/client.go index b525acc5c3d..9f4409c8e6b 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/client.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/client.go @@ -99,6 +99,7 @@ func getFinalContext(ctx context.Context, operation string, agent *Deployment) ( } func initializeAgentRegistry(cs *ClientSet) (Registry, error) { + logger.Infof(context.Background(), "Initializing agent registry") agentRegistry := make(Registry) cfg := GetConfig() var agentDeployments []*Deployment @@ -156,6 +157,8 @@ func initializeAgentRegistry(cs *ClientSet) (Registry, error) { } func initializeClients(ctx context.Context) (*ClientSet, error) { + logger.Infof(ctx, "Initializing agent clients") + asyncAgentClients := make(map[string]service.AsyncAgentServiceClient) syncAgentClients := make(map[string]service.SyncAgentServiceClient) agentMetadataClients := make(map[string]service.AgentMetadataServiceClient) From 05b554326fe7effabbed9b1ceb4af63ded8c85c9 Mon Sep 17 00:00:00 2001 From: Jason Lai Date: Tue, 12 Mar 2024 04:57:55 +0800 Subject: [PATCH 081/107] docs: improve documentation for overwriting existing images (#5030) Signed-off-by: jason.lai --- .../customizing_dependencies/imagespec.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/user_guide/customizing_dependencies/imagespec.md b/docs/user_guide/customizing_dependencies/imagespec.md index 5a9ef93736e..12d9295b1e3 100644 --- a/docs/user_guide/customizing_dependencies/imagespec.md +++ b/docs/user_guide/customizing_dependencies/imagespec.md @@ -160,3 +160,17 @@ If you only want to build the image without registering the workflow, you can us ``` pyflyte build --remote image_spec.py wf ``` + ++++ + +In some cases, you may want to force an image to rebuild, even if the image spec hasn’t changed. If you want to overwrite an existing image, you can pass the `FLYTE_FORCE_PUSH_IMAGE_SPEC=True` to `pyflyte` command or add `force_push()` to the ImageSpec. + +```bash +FLYTE_FORCE_PUSH_IMAGE_SPEC=True pyflyte run --remote image_spec.py wf +``` + +or + +```python +image = ImageSpec(registry="ghcr.io/flyteorg", packages=["pandas"]).force_push() +``` From bcd81b6840a7751b9e3019fc721d1b043b801251 Mon Sep 17 00:00:00 2001 From: WenChih Lo Date: Tue, 12 Mar 2024 05:20:39 +0800 Subject: [PATCH 082/107] Remove outdated kustomize deployment (#5029) * remove kustomize Signed-off-by: Ryan Lo * update docs Signed-off-by: Ryan Lo --------- Signed-off-by: Ryan Lo --- .github/workflows/generate_flyte_manifest.yml | 6 - .github/workflows/tests.yml | 10 - Makefile | 4 - deployment/eks/flyte_generated.yaml | 9526 ---------------- deployment/gcp/flyte_generated.yaml | 9553 ----------------- deployment/sandbox/flyte_generated.yaml | 3965 ------- docs/community/contribute.rst | 2 +- .../configuration/customizable_resources.rst | 2 +- docs/deployment/deployment/index.rst | 3 +- kustomize/README.md | 13 - kustomize/base/README.md | 19 - .../base/addons/cloudsqlproxy/deployment.yaml | 26 - .../addons/cloudsqlproxy/kustomization.yaml | 3 - .../base/addons/cloudsqlproxy/service.yaml | 12 - .../kustomization.yaml | 4 - .../contour_ingress_controller/service.yaml | 14 - kustomize/base/addons/database/database.yaml | 41 - .../base/addons/database/kustomization.yaml | 2 - .../clusterrolebinding.yaml | 12 - .../kubernetes_dashboard/deployment.yaml | 15 - .../kubernetes_dashboard/kustomization.yaml | 7 - .../addons/kubernetes_dashboard/service.yaml | 12 - kustomize/base/addons/redis/deployment.yaml | 59 - .../base/addons/redis/kustomization.yaml | 3 - kustomize/base/addons/redis/service.yaml | 16 - .../base/addons/storage/kustomization.yaml | 2 - kustomize/base/addons/storage/storage.yaml | 74 - .../base/admindeployment/auth_secret.yaml | 6 - .../admindeployment/clustersync/cron.yaml | 35 - .../clustersync/kustomization.yaml | 2 - .../base/admindeployment/deployment.yaml | 157 - .../base/admindeployment/kustomization.yaml | 4 - kustomize/base/admindeployment/service.yaml | 25 - .../adminserviceaccount.yaml | 50 - .../adminserviceaccount/kustomization.yaml | 2 - kustomize/base/console/configmap.yaml | 10 - kustomize/base/console/deployment.yaml | 38 - kustomize/base/console/kustomization.yaml | 4 - kustomize/base/console/service.yaml | 14 - kustomize/base/datacatalog/deployment.yaml | 60 - kustomize/base/datacatalog/kustomization.yaml | 4 - kustomize/base/datacatalog/rbac.yaml | 5 - kustomize/base/datacatalog/service.yaml | 24 - kustomize/base/ingress/ingress.yaml | 193 - kustomize/base/ingress/kustomization.yaml | 5 - kustomize/base/namespace/kustomization.yaml | 2 - kustomize/base/namespace/namespace.yaml | 4 - kustomize/base/operators/README.md | 1 - .../kfoperators/namespace/kustomization.yaml | 2 - .../kfoperators/namespace/namespace.yaml | 4 - .../kfoperators/pytorch/kustomization.yaml | 4 - .../kfoperators/tensorflow/kustomization.yaml | 4 - .../operators/sagemaker/kustomization.yaml | 4 - .../base/operators/spark/deployment.yaml | 51 - .../base/operators/spark/kustomization.yaml | 15 - .../spark/scheduledsparkapplications-crd.yaml | 3762 ------- .../base/operators/spark/spark-operator.yaml | 56 - .../spark/sparkapplications-crd.yaml | 3771 ------- kustomize/base/operators/spark/webhook.yaml | 36 - kustomize/base/pod_webhook/deployment.yaml | 83 - kustomize/base/pod_webhook/kustomization.yaml | 5 - kustomize/base/pod_webhook/rbac.yaml | 42 - kustomize/base/pod_webhook/secret.yaml | 6 - kustomize/base/pod_webhook/service.yaml | 20 - kustomize/base/propeller/auth_secret.yaml | 8 - kustomize/base/propeller/deployment.yaml | 60 - kustomize/base/propeller/kustomization.yaml | 4 - kustomize/base/propeller/rbac.yaml | 89 - .../base/schedulerdeployment/configmap.yaml | 31 - .../base/schedulerdeployment/deployment.yaml | 72 - .../schedulerdeployment/kustomization.yaml | 3 - kustomize/base/single_cluster/README.md | 15 - .../base/single_cluster/complete/README.md | 7 - .../complete/kustomization.yaml | 17 - .../base/single_cluster/headless/README.md | 9 - .../config/admin/cluster_resources.yaml | 19 - .../headless/config/admin/db.yaml | 10 - .../headless/config/admin/domain.yaml | 7 - .../headless/config/admin/server.yaml | 43 - .../config/admin/task_resource_defaults.yaml | 10 - .../aa_namespace.yaml | 7 - .../ab_project-resource-quota.yaml | 10 - .../headless/config/common/logger.yaml | 4 - .../headless/config/common/storage.yaml | 6 - .../headless/config/console/console.yaml | 3 - .../headless/config/datacatalog/db.yaml | 10 - .../headless/config/datacatalog/server.yaml | 6 - .../headless/config/propeller/admin.yaml | 7 - .../headless/config/propeller/catalog.yaml | 4 - .../headless/config/propeller/core.yaml | 36 - .../config/propeller/enabled_plugins.yaml | 8 - .../config/propeller/plugins/copilot.yaml | 6 - .../config/propeller/plugins/k8s.yaml | 7 - .../config/propeller/resource_manager.yaml | 7 - .../headless/kustomization.yaml | 63 - kustomize/base/wf_crd/kustomization.yaml | 2 - kustomize/base/wf_crd/wf_crd.yaml | 28 - kustomize/overlays/README.md | 7 - kustomize/overlays/eks/README.md | 73 - .../overlays/eks/flyte/admin/deployment.yaml | 15 - .../overlays/eks/flyte/admin/service.yaml | 28 - .../eks/flyte/admin/serviceaccount.yaml | 8 - .../overlays/eks/flyte/config/admin/db.yaml | 7 - .../config/admin/task_resource_defaults.yaml | 10 - .../ad_spark-role.yaml | 24 - .../ae_spark-service-account.yaml | 5 - .../af_spark-role-binding.yaml | 14 - .../eks/flyte/config/common/storage.yaml | 17 - .../eks/flyte/config/datacatalog/db.yaml | 7 - .../eks/flyte/config/propeller/core.yaml | 40 - .../config/propeller/enabled_plugins.yaml | 15 - .../propeller/plugins/catalog_cache.yaml | 6 - .../flyte/config/propeller/plugins/k8s.yaml | 8 - .../config/propeller/plugins/qubole.yaml | 3 - .../flyte/config/propeller/plugins/spark.yaml | 20 - .../config/propeller/plugins/task_logs.yaml | 10 - .../overlays/eks/flyte/console/service.yaml | 23 - .../eks/flyte/datacatalog/deployment.yaml | 15 - .../eks/flyte/datacatalog/service.yaml | 15 - .../overlays/eks/flyte/ingress/README.md | 5 - .../overlays/eks/flyte/ingress/ingress.yaml | 157 - .../eks/flyte/ingress/ingress_grpc.yaml | 52 - .../eks/flyte/ingress/kustomization.yaml | 6 - .../overlays/eks/flyte/kustomization.yaml | 62 - .../eks/flyte/propeller/deployment.yaml | 15 - .../overlays/eks/flyte/propeller/service.yaml | 15 - .../eks/flyte/propeller/serviceaccount.yaml | 8 - kustomize/overlays/eks/kustomization.yaml | 51 - kustomize/overlays/gcp/README.md | 95 - .../overlays/gcp/flyte/admin/deployment.yaml | 15 - .../overlays/gcp/flyte/admin/service.yaml | 17 - .../overlays/gcp/flyte/config/admin/db.yaml | 6 - .../config/admin/task_resource_defaults.yaml | 10 - .../ad_spark-role.yaml | 24 - .../ae_spark-service-account.yaml | 5 - .../af_spark-role-binding.yaml | 14 - .../gcp/flyte/config/common/storage.yaml | 19 - .../gcp/flyte/config/datacatalog/db.yaml | 7 - .../gcp/flyte/config/propeller/core.yaml | 40 - .../config/propeller/enabled_plugins.yaml | 15 - .../propeller/plugins/catalog_cache.yaml | 6 - .../flyte/config/propeller/plugins/k8s.yaml | 8 - .../config/propeller/plugins/qubole.yaml | 3 - .../flyte/config/propeller/plugins/spark.yaml | 16 - .../config/propeller/plugins/task_logs.yaml | 10 - .../overlays/gcp/flyte/console/service.yaml | 19 - .../gcp/flyte/datacatalog/deployment.yaml | 15 - .../gcp/flyte/datacatalog/service.yaml | 15 - .../overlays/gcp/flyte/kustomization.yaml | 59 - .../gcp/flyte/propeller/deployment.yaml | 15 - .../overlays/gcp/flyte/propeller/service.yaml | 15 - kustomize/overlays/gcp/kustomization.yaml | 53 - kustomize/overlays/sandbox/README.md | 4 - .../sandbox/flyte/admin/deployment.yaml | 105 - .../sandbox/flyte/config/admin/db.yaml | 6 - .../config/admin/task_resource_defaults.yaml | 10 - .../ad_spark-role.yaml | 24 - .../ae_spark-service-account.yaml | 5 - .../af_spark-role-binding.yaml | 13 - .../sandbox/flyte/config/common/logger.yaml | 3 - .../sandbox/flyte/config/common/storage.yaml | 11 - .../sandbox/flyte/config/datacatalog/db.yaml | 6 - .../config/propeller/enabled_plugins.yaml | 10 - .../flyte/config/propeller/plugins/k8s.yaml | 8 - .../config/propeller/plugins/task_logs.yaml | 4 - .../config/propeller/resource_manager.yaml | 3 - .../overlays/sandbox/flyte/kustomization.yaml | 41 - .../flyte/propeller/webhook-secret.yaml | 10 - .../sandbox/flyte/propeller/webhook.yaml | 18 - kustomize/overlays/sandbox/kustomization.yaml | 55 - .../overlays/sandbox/nodeport-services.yaml | 51 - .../overlays/test/flyte/admin/deployment.yaml | 64 - .../overlays/test/flyte/config/admin/db.yaml | 6 - .../test/flyte/config/common/logger.yaml | 3 - .../test/flyte/config/common/storage.yaml | 11 - .../test/flyte/config/datacatalog/db.yaml | 6 - .../config/propeller/enabled_plugins.yaml | 10 - .../flyte/config/propeller/plugins/k8s.yaml | 8 - .../config/propeller/resource_manager.yaml | 3 - .../overlays/test/flyte/kustomization.yaml | 42 - kustomize/overlays/test/kustomization.yaml | 49 - script/generate_kustomize.sh | 42 - script/release.sh | 6 - 183 files changed, 3 insertions(+), 34409 deletions(-) delete mode 100644 deployment/eks/flyte_generated.yaml delete mode 100644 deployment/gcp/flyte_generated.yaml delete mode 100644 deployment/sandbox/flyte_generated.yaml delete mode 100644 kustomize/README.md delete mode 100644 kustomize/base/README.md delete mode 100644 kustomize/base/addons/cloudsqlproxy/deployment.yaml delete mode 100644 kustomize/base/addons/cloudsqlproxy/kustomization.yaml delete mode 100644 kustomize/base/addons/cloudsqlproxy/service.yaml delete mode 100644 kustomize/base/addons/contour_ingress_controller/kustomization.yaml delete mode 100644 kustomize/base/addons/contour_ingress_controller/service.yaml delete mode 100644 kustomize/base/addons/database/database.yaml delete mode 100644 kustomize/base/addons/database/kustomization.yaml delete mode 100644 kustomize/base/addons/kubernetes_dashboard/clusterrolebinding.yaml delete mode 100644 kustomize/base/addons/kubernetes_dashboard/deployment.yaml delete mode 100644 kustomize/base/addons/kubernetes_dashboard/kustomization.yaml delete mode 100644 kustomize/base/addons/kubernetes_dashboard/service.yaml delete mode 100644 kustomize/base/addons/redis/deployment.yaml delete mode 100644 kustomize/base/addons/redis/kustomization.yaml delete mode 100644 kustomize/base/addons/redis/service.yaml delete mode 100644 kustomize/base/addons/storage/kustomization.yaml delete mode 100644 kustomize/base/addons/storage/storage.yaml delete mode 100644 kustomize/base/admindeployment/auth_secret.yaml delete mode 100644 kustomize/base/admindeployment/clustersync/cron.yaml delete mode 100644 kustomize/base/admindeployment/clustersync/kustomization.yaml delete mode 100644 kustomize/base/admindeployment/deployment.yaml delete mode 100644 kustomize/base/admindeployment/kustomization.yaml delete mode 100644 kustomize/base/admindeployment/service.yaml delete mode 100644 kustomize/base/adminserviceaccount/adminserviceaccount.yaml delete mode 100644 kustomize/base/adminserviceaccount/kustomization.yaml delete mode 100644 kustomize/base/console/configmap.yaml delete mode 100644 kustomize/base/console/deployment.yaml delete mode 100644 kustomize/base/console/kustomization.yaml delete mode 100644 kustomize/base/console/service.yaml delete mode 100644 kustomize/base/datacatalog/deployment.yaml delete mode 100644 kustomize/base/datacatalog/kustomization.yaml delete mode 100644 kustomize/base/datacatalog/rbac.yaml delete mode 100644 kustomize/base/datacatalog/service.yaml delete mode 100644 kustomize/base/ingress/ingress.yaml delete mode 100644 kustomize/base/ingress/kustomization.yaml delete mode 100644 kustomize/base/namespace/kustomization.yaml delete mode 100644 kustomize/base/namespace/namespace.yaml delete mode 100644 kustomize/base/operators/README.md delete mode 100644 kustomize/base/operators/kfoperators/namespace/kustomization.yaml delete mode 100644 kustomize/base/operators/kfoperators/namespace/namespace.yaml delete mode 100644 kustomize/base/operators/kfoperators/pytorch/kustomization.yaml delete mode 100644 kustomize/base/operators/kfoperators/tensorflow/kustomization.yaml delete mode 100644 kustomize/base/operators/sagemaker/kustomization.yaml delete mode 100644 kustomize/base/operators/spark/deployment.yaml delete mode 100644 kustomize/base/operators/spark/kustomization.yaml delete mode 100644 kustomize/base/operators/spark/scheduledsparkapplications-crd.yaml delete mode 100644 kustomize/base/operators/spark/spark-operator.yaml delete mode 100644 kustomize/base/operators/spark/sparkapplications-crd.yaml delete mode 100644 kustomize/base/operators/spark/webhook.yaml delete mode 100644 kustomize/base/pod_webhook/deployment.yaml delete mode 100644 kustomize/base/pod_webhook/kustomization.yaml delete mode 100644 kustomize/base/pod_webhook/rbac.yaml delete mode 100644 kustomize/base/pod_webhook/secret.yaml delete mode 100644 kustomize/base/pod_webhook/service.yaml delete mode 100644 kustomize/base/propeller/auth_secret.yaml delete mode 100644 kustomize/base/propeller/deployment.yaml delete mode 100644 kustomize/base/propeller/kustomization.yaml delete mode 100644 kustomize/base/propeller/rbac.yaml delete mode 100644 kustomize/base/schedulerdeployment/configmap.yaml delete mode 100644 kustomize/base/schedulerdeployment/deployment.yaml delete mode 100644 kustomize/base/schedulerdeployment/kustomization.yaml delete mode 100644 kustomize/base/single_cluster/README.md delete mode 100644 kustomize/base/single_cluster/complete/README.md delete mode 100644 kustomize/base/single_cluster/complete/kustomization.yaml delete mode 100644 kustomize/base/single_cluster/headless/README.md delete mode 100644 kustomize/base/single_cluster/headless/config/admin/cluster_resources.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/admin/db.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/admin/domain.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/admin/server.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/admin/task_resource_defaults.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/clusterresource-templates/aa_namespace.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/clusterresource-templates/ab_project-resource-quota.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/common/logger.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/common/storage.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/console/console.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/datacatalog/db.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/datacatalog/server.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/propeller/admin.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/propeller/catalog.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/propeller/core.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/propeller/enabled_plugins.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/propeller/plugins/copilot.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/propeller/plugins/k8s.yaml delete mode 100644 kustomize/base/single_cluster/headless/config/propeller/resource_manager.yaml delete mode 100644 kustomize/base/single_cluster/headless/kustomization.yaml delete mode 100644 kustomize/base/wf_crd/kustomization.yaml delete mode 100644 kustomize/base/wf_crd/wf_crd.yaml delete mode 100644 kustomize/overlays/README.md delete mode 100644 kustomize/overlays/eks/README.md delete mode 100644 kustomize/overlays/eks/flyte/admin/deployment.yaml delete mode 100644 kustomize/overlays/eks/flyte/admin/service.yaml delete mode 100644 kustomize/overlays/eks/flyte/admin/serviceaccount.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/admin/db.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/admin/task_resource_defaults.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/clusterresource-templates/ad_spark-role.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/clusterresource-templates/ae_spark-service-account.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/clusterresource-templates/af_spark-role-binding.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/common/storage.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/datacatalog/db.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/propeller/core.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/propeller/enabled_plugins.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/propeller/plugins/catalog_cache.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/propeller/plugins/k8s.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/propeller/plugins/qubole.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/propeller/plugins/spark.yaml delete mode 100644 kustomize/overlays/eks/flyte/config/propeller/plugins/task_logs.yaml delete mode 100644 kustomize/overlays/eks/flyte/console/service.yaml delete mode 100644 kustomize/overlays/eks/flyte/datacatalog/deployment.yaml delete mode 100644 kustomize/overlays/eks/flyte/datacatalog/service.yaml delete mode 100644 kustomize/overlays/eks/flyte/ingress/README.md delete mode 100644 kustomize/overlays/eks/flyte/ingress/ingress.yaml delete mode 100644 kustomize/overlays/eks/flyte/ingress/ingress_grpc.yaml delete mode 100644 kustomize/overlays/eks/flyte/ingress/kustomization.yaml delete mode 100644 kustomize/overlays/eks/flyte/kustomization.yaml delete mode 100644 kustomize/overlays/eks/flyte/propeller/deployment.yaml delete mode 100644 kustomize/overlays/eks/flyte/propeller/service.yaml delete mode 100644 kustomize/overlays/eks/flyte/propeller/serviceaccount.yaml delete mode 100644 kustomize/overlays/eks/kustomization.yaml delete mode 100644 kustomize/overlays/gcp/README.md delete mode 100644 kustomize/overlays/gcp/flyte/admin/deployment.yaml delete mode 100644 kustomize/overlays/gcp/flyte/admin/service.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/admin/db.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/admin/task_resource_defaults.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/clusterresource-templates/ad_spark-role.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/clusterresource-templates/ae_spark-service-account.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/clusterresource-templates/af_spark-role-binding.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/common/storage.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/datacatalog/db.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/propeller/core.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/propeller/enabled_plugins.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/propeller/plugins/catalog_cache.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/propeller/plugins/k8s.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/propeller/plugins/qubole.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/propeller/plugins/spark.yaml delete mode 100644 kustomize/overlays/gcp/flyte/config/propeller/plugins/task_logs.yaml delete mode 100644 kustomize/overlays/gcp/flyte/console/service.yaml delete mode 100644 kustomize/overlays/gcp/flyte/datacatalog/deployment.yaml delete mode 100644 kustomize/overlays/gcp/flyte/datacatalog/service.yaml delete mode 100644 kustomize/overlays/gcp/flyte/kustomization.yaml delete mode 100644 kustomize/overlays/gcp/flyte/propeller/deployment.yaml delete mode 100644 kustomize/overlays/gcp/flyte/propeller/service.yaml delete mode 100644 kustomize/overlays/gcp/kustomization.yaml delete mode 100644 kustomize/overlays/sandbox/README.md delete mode 100644 kustomize/overlays/sandbox/flyte/admin/deployment.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/admin/db.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/admin/task_resource_defaults.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/clusterresource-templates/ad_spark-role.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/clusterresource-templates/ae_spark-service-account.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/clusterresource-templates/af_spark-role-binding.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/common/logger.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/common/storage.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/datacatalog/db.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/propeller/enabled_plugins.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/propeller/plugins/k8s.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/propeller/plugins/task_logs.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/config/propeller/resource_manager.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/kustomization.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/propeller/webhook-secret.yaml delete mode 100644 kustomize/overlays/sandbox/flyte/propeller/webhook.yaml delete mode 100644 kustomize/overlays/sandbox/kustomization.yaml delete mode 100644 kustomize/overlays/sandbox/nodeport-services.yaml delete mode 100644 kustomize/overlays/test/flyte/admin/deployment.yaml delete mode 100644 kustomize/overlays/test/flyte/config/admin/db.yaml delete mode 100644 kustomize/overlays/test/flyte/config/common/logger.yaml delete mode 100644 kustomize/overlays/test/flyte/config/common/storage.yaml delete mode 100644 kustomize/overlays/test/flyte/config/datacatalog/db.yaml delete mode 100644 kustomize/overlays/test/flyte/config/propeller/enabled_plugins.yaml delete mode 100644 kustomize/overlays/test/flyte/config/propeller/plugins/k8s.yaml delete mode 100644 kustomize/overlays/test/flyte/config/propeller/resource_manager.yaml delete mode 100644 kustomize/overlays/test/flyte/kustomization.yaml delete mode 100644 kustomize/overlays/test/kustomization.yaml delete mode 100755 script/generate_kustomize.sh diff --git a/.github/workflows/generate_flyte_manifest.yml b/.github/workflows/generate_flyte_manifest.yml index e0c9c589ab9..b2cdb2f2d6d 100644 --- a/.github/workflows/generate_flyte_manifest.yml +++ b/.github/workflows/generate_flyte_manifest.yml @@ -23,7 +23,6 @@ jobs: VERSION: ${{ github.event.inputs.next-version }} run: | make release_automation - make kustomize make helm - name: Create Pull Request id: cpr @@ -39,17 +38,12 @@ jobs: title: 'Update Flyte components' body: | Updated flyte deployment - - Updated GCP Flyte kustomize generated manifest file - - Updated EKS Flyte kustomize generated manifest file - - Updated Sandbox Flyte kustomize generated manifest file - - Updated TEST Flyte kustomize generated manifest file - Updated GCP Flyte helm generated manifest file - Updated EKS Flyte helm generated manifest file - Updated Sandbox Flyte helm generated manifest file - Updated TEST Flyte helm generated manifest file - Auto-generated by [flyte-bot] labels: | - kustomize helm team-reviewers: | flyte-maintainers diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 831beda79d9..28813360deb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -70,16 +70,6 @@ jobs: conda activate monodocs-env make docs - generate_kustomize: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 - with: - go-version: "1.21" - - name: Kustomize and diff - run: DELTA_CHECK=true make kustomize - generate_helm: runs-on: ubuntu-latest steps: diff --git a/Makefile b/Makefile index 64af8207879..3f351392894 100644 --- a/Makefile +++ b/Makefile @@ -30,10 +30,6 @@ linux_compile: cmd/single/dist update_boilerplate: @boilerplate/update.sh -.PHONY: kustomize -kustomize: - KUSTOMIZE_VERSION=3.9.2 bash script/generate_kustomize.sh - .PHONY: helm helm: ## Generate K8s Manifest from Helm Charts. bash script/generate_helm.sh diff --git a/deployment/eks/flyte_generated.yaml b/deployment/eks/flyte_generated.yaml deleted file mode 100644 index b4ee31f106a..00000000000 --- a/deployment/eks/flyte_generated.yaml +++ /dev/null @@ -1,9526 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: flyte ---- -apiVersion: v1 -kind: Namespace -metadata: - name: kubeflow ---- -apiVersion: v1 -kind: Namespace -metadata: - name: sparkoperator ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: flyteworkflows.flyte.lyft.com -spec: - group: flyte.lyft.com - names: - kind: FlyteWorkflow - plural: flyteworkflows - shortNames: - - fly - singular: flyteworkflow - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - type: object - x-kubernetes-preserve-unknown-fields: true - served: true - storage: true ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: (unknown) - creationTimestamp: null - name: scheduledsparkapplications.sparkoperator.k8s.io -spec: - group: sparkoperator.k8s.io - names: - kind: ScheduledSparkApplication - listKind: ScheduledSparkApplicationList - plural: scheduledsparkapplications - shortNames: - - scheduledsparkapp - singular: scheduledsparkapplication - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - concurrencyPolicy: - type: string - failedRunHistoryLimit: - format: int32 - type: integer - schedule: - type: string - successfulRunHistoryLimit: - format: int32 - type: integer - suspend: - type: boolean - template: - properties: - arguments: - items: - type: string - type: array - batchScheduler: - type: string - batchSchedulerOptions: - properties: - priorityClassName: - type: string - queue: - type: string - type: object - deps: - properties: - files: - items: - type: string - type: array - jars: - items: - type: string - type: array - pyFiles: - items: - type: string - type: array - type: object - driver: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - podName: - pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' - type: string - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - executor: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - deleteOnTermination: - type: boolean - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - instances: - format: int32 - minimum: 1 - type: integer - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - failureRetries: - format: int32 - type: integer - hadoopConf: - additionalProperties: - type: string - type: object - hadoopConfigMap: - type: string - image: - type: string - imagePullPolicy: - type: string - imagePullSecrets: - items: - type: string - type: array - mainApplicationFile: - type: string - mainClass: - type: string - memoryOverheadFactor: - type: string - mode: - enum: - - cluster - - client - type: string - monitoring: - properties: - exposeDriverMetrics: - type: boolean - exposeExecutorMetrics: - type: boolean - metricsProperties: - type: string - metricsPropertiesFile: - type: string - prometheus: - properties: - configFile: - type: string - configuration: - type: string - jmxExporterJar: - type: string - port: - format: int32 - maximum: 49151 - minimum: 1024 - type: integer - required: - - jmxExporterJar - type: object - required: - - exposeDriverMetrics - - exposeExecutorMetrics - type: object - nodeSelector: - additionalProperties: - type: string - type: object - pythonVersion: - enum: - - "2" - - "3" - type: string - restartPolicy: - properties: - onFailureRetries: - format: int32 - minimum: 0 - type: integer - onFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - onSubmissionFailureRetries: - format: int32 - minimum: 0 - type: integer - onSubmissionFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - type: - enum: - - Never - - Always - - OnFailure - type: string - type: object - retryInterval: - format: int64 - type: integer - serviceAccount: - type: string - sparkConf: - additionalProperties: - type: string - type: object - sparkConfigMap: - type: string - sparkVersion: - type: string - timeToLiveSeconds: - format: int64 - type: integer - type: - enum: - - Java - - Python - - Scala - - R - type: string - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - driver - - executor - - sparkVersion - - type - type: object - required: - - schedule - - template - type: object - status: - properties: - lastRun: - format: date-time - nullable: true - type: string - lastRunName: - type: string - nextRun: - format: date-time - nullable: true - type: string - pastFailedRunNames: - items: - type: string - type: array - pastSuccessfulRunNames: - items: - type: string - type: array - reason: - type: string - scheduleState: - type: string - type: object - required: - - metadata - - spec - type: object - version: v1beta2 - versions: - - name: v1beta2 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: (unknown) - creationTimestamp: null - name: sparkapplications.sparkoperator.k8s.io -spec: - group: sparkoperator.k8s.io - names: - kind: SparkApplication - listKind: SparkApplicationList - plural: sparkapplications - shortNames: - - sparkapp - singular: sparkapplication - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - arguments: - items: - type: string - type: array - batchScheduler: - type: string - batchSchedulerOptions: - properties: - priorityClassName: - type: string - queue: - type: string - type: object - deps: - properties: - files: - items: - type: string - type: array - jars: - items: - type: string - type: array - pyFiles: - items: - type: string - type: array - type: object - driver: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - podName: - pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' - type: string - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - executor: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - deleteOnTermination: - type: boolean - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - instances: - format: int32 - minimum: 1 - type: integer - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - failureRetries: - format: int32 - type: integer - hadoopConf: - additionalProperties: - type: string - type: object - hadoopConfigMap: - type: string - image: - type: string - imagePullPolicy: - type: string - imagePullSecrets: - items: - type: string - type: array - mainApplicationFile: - type: string - mainClass: - type: string - memoryOverheadFactor: - type: string - mode: - enum: - - cluster - - client - type: string - monitoring: - properties: - exposeDriverMetrics: - type: boolean - exposeExecutorMetrics: - type: boolean - metricsProperties: - type: string - metricsPropertiesFile: - type: string - prometheus: - properties: - configFile: - type: string - configuration: - type: string - jmxExporterJar: - type: string - port: - format: int32 - maximum: 49151 - minimum: 1024 - type: integer - required: - - jmxExporterJar - type: object - required: - - exposeDriverMetrics - - exposeExecutorMetrics - type: object - nodeSelector: - additionalProperties: - type: string - type: object - pythonVersion: - enum: - - "2" - - "3" - type: string - restartPolicy: - properties: - onFailureRetries: - format: int32 - minimum: 0 - type: integer - onFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - onSubmissionFailureRetries: - format: int32 - minimum: 0 - type: integer - onSubmissionFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - type: - enum: - - Never - - Always - - OnFailure - type: string - type: object - retryInterval: - format: int64 - type: integer - serviceAccount: - type: string - sparkConf: - additionalProperties: - type: string - type: object - sparkConfigMap: - type: string - sparkVersion: - type: string - timeToLiveSeconds: - format: int64 - type: integer - type: - enum: - - Java - - Python - - Scala - - R - type: string - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - driver - - executor - - sparkVersion - - type - type: object - status: - properties: - applicationState: - properties: - errorMessage: - type: string - state: - type: string - required: - - state - type: object - driverInfo: - properties: - podName: - type: string - webUIAddress: - type: string - webUIIngressAddress: - type: string - webUIIngressName: - type: string - webUIPort: - format: int32 - type: integer - webUIServiceName: - type: string - type: object - executionAttempts: - format: int32 - type: integer - executorState: - additionalProperties: - type: string - type: object - sparkApplicationId: - type: string - submissionAttempts: - format: int32 - type: integer - submissionID: - type: string - submissionTime: - format: date-time - nullable: true - type: string - terminationTime: - format: date-time - nullable: true - type: string - required: - - driverInfo - type: object - required: - - metadata - - spec - type: object - version: v1beta2 - versions: - - name: v1beta2 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: pytorchjobs.kubeflow.org -spec: - additionalPrinterColumns: - - JSONPath: .status.conditions[-1:].type - name: State - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: kubeflow.org - names: - kind: PyTorchJob - plural: pytorchjobs - singular: pytorchjob - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - pytorchReplicaSpecs: - properties: - Master: - properties: - replicas: - maximum: 1 - minimum: 1 - type: integer - Worker: - properties: - replicas: - minimum: 1 - type: integer - versions: - - name: v1 - served: true - storage: true ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: datacatalog - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flyte-pod-webhook - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - annotations: - eks.amazonaws.com/role-arn: arn:aws:iam::111222333456:role/flyte-operator - name: flyteadmin - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - annotations: - eks.amazonaws.com/role-arn: arn:aws:iam::111222333456:role/flyte-operator - name: flytepropeller - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: pytorch-operator - kustomize.component: pytorch-operator - name: pytorch-operator - namespace: kubeflow ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: sparkoperator - namespace: sparkoperator ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: flyte-pod-webhook - namespace: flyte -rules: -- apiGroups: - - '*' - resources: - - mutatingwebhookconfigurations - - secrets - - pods - - replicasets/finalizers - verbs: - - get - - create - - update - - patch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: flyteadmin - namespace: flyte -rules: -- apiGroups: - - "" - - flyte.lyft.com - - rbac.authorization.k8s.io - resources: - - configmaps - - flyteworkflows - - namespaces - - pods - - resourcequotas - - roles - - rolebindings - - secrets - - services - - serviceaccounts - - spark-role - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: flytepropeller -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - update - - delete - - patch -- apiGroups: - - '*' - resources: - - '*' - verbs: - - get - - list - - watch - - create - - update - - delete - - patch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - get - - list - - watch - - create - - delete - - update -- apiGroups: - - flyte.lyft.com - resources: - - flyteworkflows - - flyteworkflows/finalizers - verbs: - - get - - list - - watch - - create - - update - - delete - - patch - - post - - deletecollection ---- -aggregationRule: - clusterRoleSelectors: - - matchLabels: - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true" -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - kustomize.component: pytorch-operator - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" - name: kubeflow-pytorchjobs-admin -rules: [] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - kustomize.component: pytorch-operator - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true" - name: kubeflow-pytorchjobs-edit -rules: -- apiGroups: - - kubeflow.org - resources: - - pytorchjobs - - pytorchjobs/status - verbs: - - get - - list - - watch - - create - - delete - - deletecollection - - patch - - update ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - kustomize.component: pytorch-operator - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" - name: kubeflow-pytorchjobs-view -rules: -- apiGroups: - - kubeflow.org - resources: - - pytorchjobs - - pytorchjobs/status - verbs: - - get - - list - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: sparkoperator -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - '*' -- apiGroups: - - "" - resources: - - services - - configmaps - - secrets - verbs: - - create - - get - - delete -- apiGroups: - - extensions - resources: - - ingresses - verbs: - - create - - get - - delete -- apiGroups: - - "" - resources: - - nodes - verbs: - - get -- apiGroups: - - batch - resources: - - jobs - verbs: - - create - - get - - update - - delete - - list - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - update - - patch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - get - - update - - delete -- apiGroups: - - admissionregistration.k8s.io - resources: - - mutatingwebhookconfigurations - verbs: - - create - - get - - update - - delete -- apiGroups: - - sparkoperator.k8s.io - resources: - - sparkapplications - - scheduledsparkapplications - - sparkapplications/status - - scheduledsparkapplications/status - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - labels: - app: pytorch-operator - kustomize.component: pytorch-operator - name: pytorch-operator -rules: -- apiGroups: - - kubeflow.org - resources: - - pytorchjobs - - pytorchjobs/status - verbs: - - '*' -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - '*' -- apiGroups: - - "" - resources: - - pods - - services - - endpoints - - events - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flyte-pod-webhook - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flyte-pod-webhook -subjects: -- kind: ServiceAccount - name: flyte-pod-webhook - namespace: flyte ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flyteadmin-binding - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flyteadmin -subjects: -- kind: ServiceAccount - name: flyteadmin - namespace: flyte ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flytepropeller - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flytepropeller -subjects: -- kind: ServiceAccount - name: flytepropeller - namespace: flyte ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: sparkoperator -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: sparkoperator -subjects: -- kind: ServiceAccount - name: sparkoperator - namespace: sparkoperator ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - labels: - app: pytorch-operator - kustomize.component: pytorch-operator - name: pytorch-operator -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: pytorch-operator -subjects: -- kind: ServiceAccount - name: pytorch-operator - namespace: kubeflow ---- -apiVersion: v1 -data: - aa_namespace.yaml: | - apiVersion: v1 - kind: Namespace - metadata: - name: {{ namespace }} - spec: - finalizers: - - kubernetes - ab_project-resource-quota.yaml: "apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }} \nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }} \n limits.memory: {{ projectQuotaMemory }}\n\n" - ad_spark-role.yaml: | - apiVersion: rbac.authorization.k8s.io/v1 - kind: Role - metadata: - name: spark-role - namespace: {{ namespace }} - rules: - - apiGroups: - - "" - resources: - - pods - verbs: - - '*' - - apiGroups: - - "" - resources: - - services - verbs: - - '*' - - apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' - ae_spark-service-account.yaml: | - apiVersion: v1 - kind: ServiceAccount - metadata: - name: spark - namespace: {{ namespace }} - af_spark-role-binding.yaml: "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n name: spark-role-binding\n namespace: {{ namespace }} \nroleRef:\n apiGroup: rbac.authorization.k8s.io\n kind: Role\n name: spark-role\nsubjects:\n- kind: ServiceAccount\n name: spark\n namespace: {{ namespace }}\n\n" -kind: ConfigMap -metadata: - name: clusterresource-template-4fbh4bk26k - namespace: flyte ---- -apiVersion: v1 -data: - db.yaml: | - database: - port: 5432 - username: flyte - # TODO Change this to match aurora or rds postgres endpoint - host: flyteadmin-cluster.cluster-456123e6ivib.us-west-2.rds.amazonaws.com - dbname: flytedatacatalog - passwordPath: /etc/db/pass.txt - logger.yaml: | - # TODO this is used to control the log level - logger: - show-source: true - level: 2 - server.yaml: | - datacatalog: - storage-prefix: metadata/datacatalog - metrics-scope: "datacatalog" - profiler-port: 10254 - application: - grpcPort: 8089 - storage.yaml: | - storage: - type: stow - stow: - kind: s3 - config: - auth_type: iam - region: us-east-2 - # TODO replace with the container (bucket) in s3 used by Flyte as intermediate store - container: "flyte-demo" - # NOTE this cache configuration is purely for propeller. But since we are having a common storage - # config, we are configuring this value. In production create a separate storage config for - # propeller and increase the cache size - cache: - max_size_mbs: 512 - target_gc_percent: 70 - limits: - maxDownloadMBs: 10 -kind: ConfigMap -metadata: - name: datacatalog-config-fktmhdgfk8 - namespace: flyte ---- -apiVersion: v1 -data: - cluster_resources.yaml: | - cluster_resources: - templatePath: "/etc/flyte/clusterresource/templates" - customData: - - production: - - projectQuotaCpu: - value: "5" - - projectQuotaMemory: - value: "4000Mi" - - staging: - - projectQuotaCpu: - value: "2" - - projectQuotaMemory: - value: "3000Mi" - - development: - - projectQuotaCpu: - value: "4" - - projectQuotaMemory: - value: "3000Mi" - refreshInterval: 1m - db.yaml: | - database: - port: 5432 - username: flyte - # TODO Change this to match aurora or rds postgres endpoint - host: flyteadmin-cluster.cluster-456123e6ivib.us-west-2.rds.amazonaws.com - dbname: flyte - passwordPath: /etc/db/pass.txt - domain.yaml: | - domains: - - id: development - name: development - - id: staging - name: staging - - id: production - name: production - logger.yaml: | - # TODO this is used to control the log level - logger: - show-source: true - level: 2 - server.yaml: | - server: - httpPort: 8088 - grpcPort: 8089 - security: - # Controls whether to serve requests over SSL/TLS. - secure: false - # Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. - useAuth: false - allowCors: true - allowedOrigins: - # Accepting all domains for Sandbox installation - - "*" - allowedHeaders: - - "Content-Type" - - "flyte-authorization" - auth: - authorizedUris: - # This should point at your public http Uri. - - https://localhost:30081 - # This will be used by internal services in the same namespace as flyteadmin - - http://flyteadmin:80 - # This will be used by internal services in the same cluster but different namespaces - - http://flyteadmin.flyte.svc.cluster.local:80 - - # Controls app authentication config - appAuth: - thirdPartyConfig: - flyteClient: - clientId: flytectl - redirectUri: https://localhost:53593/callback - scopes: - - offline - - all - # Controls user authentication - userAuth: - openId: - baseUrl: https://accounts.google.com - scopes: - - profile - - openid - clientId: 657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com - flyteadmin: - roleNameKey: "iam.amazonaws.com/role" - storage.yaml: | - storage: - type: stow - stow: - kind: s3 - config: - auth_type: iam - region: us-east-2 - # TODO replace with the container (bucket) in s3 used by Flyte as intermediate store - container: "flyte-demo" - # NOTE this cache configuration is purely for propeller. But since we are having a common storage - # config, we are configuring this value. In production create a separate storage config for - # propeller and increase the cache size - cache: - max_size_mbs: 512 - target_gc_percent: 70 - limits: - maxDownloadMBs: 10 - task_resource_defaults.yaml: | - task_resources: - defaults: - cpu: 1000m - memory: 1000Mi - storage: 1000Mi - limits: - cpu: 2 - memory: 8Gi - storage: 2000Mi - gpu: 1 -kind: ConfigMap -metadata: - name: flyte-admin-config-29g4dtt8tc - namespace: flyte ---- -apiVersion: v1 -data: - BASE_URL: /console - CONFIG_DIR: /etc/flyte/config -kind: ConfigMap -metadata: - name: flyte-console-config - namespace: flyte ---- -apiVersion: v1 -data: - admin.yaml: | - event: - type: admin - rate: 500 - capacity: 1000 - admin: - endpoint: flyteadmin:81 - insecure: true - catalog.yaml: | - catalog-cache: - endpoint: datacatalog:89 - type: datacatalog - insecure: true - catalog_cache.yaml: "plugins:\n catalogCache: \n reader:\n maxItems: 10000\n writer:\n maxItems: 10000\n" - copilot.yaml: | - plugins: - k8s: - co-pilot: - name: "flyte-copilot-" - image: "cr.flyte.org/flyteorg/flytecopilot:v0.0.15" - start-timeout: "30s" - core.yaml: | - propeller: - rawoutput-prefix: s3://my-s3-bucket/ - metadata-prefix: metadata/propeller - workers: 40 - gc-interval: 12h - max-workflow-retries: 50 - workflow-reeval-duration: 30s - downstream-eval-duration: 30s - limit-namespace: "all" - prof-port: 10254 - metrics-prefix: flyte - enable-admin-launcher: true - leader-election: - lock-config-map: - name: propeller-leader - namespace: flyte - enabled: true - lease-duration: 15s - renew-deadline: 10s - retry-period: 2s - kube-client-config: - qps: 100 - burst: 25 - timeout: 30s - queue: - type: batch - batching-interval: 2s - batch-size: -1 - queue: - type: maxof - rate: 100 - capacity: 1000 - base-delay: 5s - max-delay: 120s - sub-queue: - type: bucket - rate: 100 - capacity: 1000 - workflowStore: - policy: "ResourceVersionCache" - enabled_plugins.yaml: | - tasks: - max-plugin-phase-versions: 1000000 - task-plugins: - enabled-plugins: - - container - - sidecar - - spark - - k8s-array - - pytorch - default-for-task-types: - container: container - sidecar: sidecar - spark: spark - container_array: k8s-array - pytorch: pytorch - k8s.yaml: | - plugins: - k8s: - default-env-vars: - - FLYTE_AWS_ENDPOINT: "http://minio.flyte:9000" - - FLYTE_AWS_ACCESS_KEY_ID: minio - - FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage - default-cpus: 100m - default-memory: 100Mi - logger.yaml: | - # TODO this is used to control the log level - logger: - show-source: true - level: 2 - qubole.yaml: | - plugins: - qubole: - quboleTokenKey: "FLYTE_QUBOLE_CLIENT_TOKEN" - resource_manager.yaml: | - propeller: - resourcemanager: - type: redis - resourceMaxQuota: 10000 - redis: - hostPath: redis-resource-manager:6379 - hostKey: mypassword - spark.yaml: | - plugins: - spark: - spark-config-default: - # We override the default credentials chain provider for Hadoop so that - # it can use the serviceAccount based IAM role or ec2 metadata based. - # This is more in line with how AWS works - - spark.hadoop.fs.s3a.aws.credentials.provider: "com.amazonaws.auth.DefaultAWSCredentialsProviderChain" - - spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version: "2" - - spark.kubernetes.allocation.batch.size: "50" - - spark.hadoop.fs.s3a.acl.default: "BucketOwnerFullControl" - - spark.hadoop.fs.s3n.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3n.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3a.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3a.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3a.multipart.threshold: "536870912" - - spark.blacklist.enabled: "true" - - spark.blacklist.timeout: "5m" - - spark.task.maxfailures: "8" - storage.yaml: | - storage: - type: stow - stow: - kind: s3 - config: - auth_type: iam - region: us-east-2 - # TODO replace with the container (bucket) in s3 used by Flyte as intermediate store - container: "flyte-demo" - # NOTE this cache configuration is purely for propeller. But since we are having a common storage - # config, we are configuring this value. In production create a separate storage config for - # propeller and increase the cache size - cache: - max_size_mbs: 512 - target_gc_percent: 70 - limits: - maxDownloadMBs: 10 - task_logs.yaml: | - plugins: - logs: - # Log links can link to multiple options - # #1 Kubernetes dashboard is disabled in GCP - kubernetes-enabled: false - # #2 AWS Cloudwatch - cloudwatch-enabled: true - # TODO Add region and log group - cloudwatch-region: - cloudwatch-log-group: -kind: ConfigMap -metadata: - name: flyte-propeller-config-dtkccdkch8 - namespace: flyte ---- -apiVersion: v1 -data: - admin.yaml: | - admin: - clientId: flytepropeller - clientSecretLocation: /etc/secrets/client_secret - endpoint: flyteadmin:81 - insecure: true - event: - capacity: 1000 - rate: 500 - type: admin - db.yaml: | - database: - dbname: postgres - host: postgres - port: 5432 - username: postgres - logger.yaml: | - logger: - level: 4 - show-source: true -kind: ConfigMap -metadata: - labels: - app.kubernetes.io/instance: flyte - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: flytescheduler - helm.sh/chart: flyte-v0.1.10 - name: flyte-scheduler-config - namespace: flyte ---- -apiVersion: v1 -data: - pass.txt: eW91cnBhc3N3b3Jk -kind: Secret -metadata: - name: db-pass-bthd2588cc - namespace: flyte -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - name: flyte-admin-auth - namespace: flyte -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - name: flyte-pod-webhook - namespace: flyte -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - name: flyte-secret-auth - namespace: flyte -stringData: - client_secret: foobar -type: Opaque ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - contour.heptio.com/upstream-protocol.h2c: grpc - name: datacatalog - namespace: flyte -spec: - ports: - - name: http - port: 88 - protocol: TCP - targetPort: 8088 - - name: grpc - port: 89 - protocol: TCP - targetPort: 8089 - selector: - app: datacatalog ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - cloud.google.com/load-balancer-type: Internal - name: datacatalog-metrics - namespace: flyte -spec: - ports: - - name: http-metrics - port: 10254 - protocol: TCP - selector: - app: datacatalog - type: LoadBalancer ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - projectcontour.io/upstream-protocol.h2c: grpc - name: flyte-pod-webhook - namespace: flyte -spec: - ports: - - name: https - port: 443 - protocol: TCP - targetPort: 9443 - selector: - app: flyte-pod-webhook ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - external-dns.alpha.kubernetes.io/hostname: flyteadmin.subdomain.mydomain.com - projectcontour.io/upstream-protocol.h2c: grpc - service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600" - service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: sg-...,sg-...,sg-... - name: flyteadmin - namespace: flyte -spec: - loadBalancerSourceRanges: - - 0.0.0.0 - ports: - - name: http - port: 80 - protocol: TCP - targetPort: 8088 - - name: grpc - port: 81 - protocol: TCP - targetPort: 8089 - selector: - app: flyteadmin - type: LoadBalancer ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - external-dns.alpha.kubernetes.io/hostname: flyte.subdomain.mydomain.com - service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600" - service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: sg-....,sg-...,sg-... - name: flyteconsole - namespace: flyte -spec: - loadBalancerSourceRanges: - - 0.0.0.0 - ports: - - name: http - port: 80 - protocol: TCP - targetPort: 8080 - selector: - app: flyteconsole - type: LoadBalancer ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - cloud.google.com/load-balancer-type: Internal - name: flytepropeller - namespace: flyte -spec: - ports: - - name: http-metrics - port: 10254 - protocol: TCP - selector: - app: flytepropeller - type: LoadBalancer ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: redis-resource-manager - name: redis-resource-manager - namespace: flyte -spec: - ports: - - name: redis - port: 6379 - protocol: TCP - targetPort: redis - selector: - app: redis-resource-manager - type: ClusterIP ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "8443" - prometheus.io/scrape: "true" - labels: - app: pytorch-operator - kustomize.component: pytorch-operator - name: pytorch-operator - namespace: kubeflow -spec: - ports: - - name: monitoring-port - port: 8443 - targetPort: 8443 - selector: - kustomize.component: pytorch-operator - name: pytorch-operator - type: ClusterIP ---- -apiVersion: v1 -kind: Service -metadata: - name: spark-webhook - namespace: sparkoperator -spec: - ports: - - name: webhook - port: 443 - targetPort: 8080 - selector: - app.kubernetes.io/name: sparkoperator ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: datacatalog - name: datacatalog - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: datacatalog - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: datacatalog - app.kubernetes.io/name: datacatalog - app.kubernetes.io/version: 0.3.0 - spec: - containers: - - command: - - datacatalog - - --config - - /etc/datacatalog/config/*.yaml - - serve - image: cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: datacatalog - ports: - - containerPort: 8088 - - containerPort: 8089 - resources: - limits: - cpu: "2" - ephemeral-storage: 1000Mi - memory: 1Gi - volumeMounts: - - mountPath: /etc/datacatalog/config - name: config-volume - - mountPath: /etc/db - name: db-pass - initContainers: - - command: - - datacatalog - - --config - - /etc/datacatalog/config/*.yaml - - migrate - - run - image: cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: run-migrations - volumeMounts: - - mountPath: /etc/datacatalog/config - name: config-volume - - mountPath: /etc/db - name: db-pass - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: datacatalog - volumes: - - emptyDir: {} - name: shared-data - - configMap: - name: datacatalog-config-fktmhdgfk8 - name: config-volume - - name: db-pass - secret: - secretName: db-pass-bthd2588cc ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flyte-pod-webhook - name: flyte-pod-webhook - namespace: flyte -spec: - selector: - matchLabels: - app: flyte-pod-webhook - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flyte-pod-webhook - app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: 0.5.13 - spec: - containers: - - args: - - webhook - - --config - - /etc/flyte/config/*.yaml - command: - - flytepropeller - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: webhook - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - readOnly: true - - mountPath: /etc/webhook/certs - name: webhook-certs - readOnly: true - initContainers: - - args: - - webhook - - init-certs - - --config - - /etc/flyte/config/*.yaml - command: - - flytepropeller - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: generate-secrets - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: flyte-pod-webhook - volumes: - - configMap: - name: flyte-propeller-config-dtkccdkch8 - name: config-volume - - name: webhook-certs - secret: - secretName: flyte-pod-webhook ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flyteadmin - name: flyteadmin - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: flyteadmin - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flyteadmin - app.kubernetes.io/name: flyteadmin - app.kubernetes.io/version: 0.4.13 - spec: - containers: - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - serve - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: flyteadmin - ports: - - containerPort: 8088 - - containerPort: 8089 - resources: - limits: - cpu: "2" - ephemeral-storage: 1Gi - memory: 1Gi - volumeMounts: - - mountPath: /srv/flyte - name: shared-data - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - mountPath: /etc/secrets/ - name: auth - - command: - - sh - - -c - - ln -s /usr/share/nginx/html /usr/share/nginx/html/openapi && sh /usr/local/bin/docker-run.sh - env: - - name: PAGE_TITLE - value: Flyte Admin OpenAPI - - name: SPEC_URL - value: /api/v1/openapi - - name: PORT - value: "8087" - image: docker.io/redocly/redoc - imagePullPolicy: IfNotPresent - name: redoc - ports: - - containerPort: 8087 - resources: - limits: - cpu: "0.1" - memory: 200Mi - initContainers: - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - migrate - - run - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: run-migrations - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - migrate - - seed-projects - - flytesnacks - - flytetester - - flyteexamples - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: seed-projects - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - clusterresource - - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: sync-cluster-resources - volumeMounts: - - mountPath: /etc/flyte/clusterresource/templates - name: resource-templates - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - args: - - flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --fromPath /etc/scratch/secrets - command: - - /bin/sh - - -c - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: generate-secrets - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/scratch - name: scratch - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: flyteadmin - volumes: - - emptyDir: {} - name: shared-data - - emptyDir: {} - name: scratch - - configMap: - name: flyte-admin-config-29g4dtt8tc - name: config-volume - - configMap: - name: clusterresource-template-4fbh4bk26k - name: resource-templates - - name: db-pass - secret: - secretName: db-pass-bthd2588cc - - name: auth - secret: - secretName: flyte-admin-auth ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flyteconsole - name: flyteconsole - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: flyteconsole - template: - metadata: - labels: - app: flyteconsole - app.kubernetes.io/name: flyteconsole - app.kubernetes.io/version: 0.19.0 - spec: - containers: - - envFrom: - - configMapRef: - name: flyte-console-config - image: cr.flyte.org/flyteorg/flyteconsole:v1.11.0 - name: flyteconsole - ports: - - containerPort: 8080 - volumeMounts: - - mountPath: /srv/flyte - name: shared-data - securityContext: - fsGroupChangePolicy: Always - runAsUser: 1000 - volumes: - - emptyDir: {} - name: shared-data ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flytepropeller - name: flytepropeller - namespace: flyte -spec: - selector: - matchLabels: - app: flytepropeller - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flytepropeller - app.kubernetes.io/name: flytepropeller - app.kubernetes.io/version: 0.7.1 - spec: - containers: - - args: - - --config - - /etc/flyte/config/*.yaml - command: - - flytepropeller - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: flytepropeller - ports: - - containerPort: 10254 - resources: - limits: - cpu: "2" - ephemeral-storage: 1Gi - memory: 4Gi - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/secrets/ - name: auth - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: flytepropeller - volumes: - - configMap: - name: flyte-propeller-config-dtkccdkch8 - name: config-volume - - name: auth - secret: - secretName: flyte-secret-auth ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flytescheduler - name: flytescheduler - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: flytescheduler - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flytescheduler - app.kubernetes.io/name: flytescheduler - app.kubernetes.io/version: 0.3.4 - spec: - containers: - - command: - - flytescheduler - - run - - --config - - /etc/flyte/config/*.yaml - image: cr.flyte.org/flyteorg/flytescheduler:v0.6.49 - imagePullPolicy: IfNotPresent - name: flytescheduler - resources: - limits: - cpu: 250m - ephemeral-storage: 100Mi - memory: 500Mi - requests: - cpu: 10m - ephemeral-storage: 50Mi - memory: 50Mi - volumeMounts: - - mountPath: /etc/secrets/ - name: auth - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - initContainers: - - command: - - flytescheduler - - precheck - - --config - - /etc/flyte/config/*.yaml - image: cr.flyte.org/flyteorg/flytescheduler:v0.6.49 - imagePullPolicy: IfNotPresent - name: flytescheduler-check - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - serviceAccountName: flyteadmin - volumes: - - configMap: - name: flyte-scheduler-config - name: config-volume - - name: db-pass - secret: - secretName: db-pass-bthd2588cc - - name: auth - secret: - secretName: flyte-secret-auth ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - kustomize.component: pytorch-operator - name: pytorch-operator - namespace: kubeflow -spec: - replicas: 1 - selector: - matchLabels: - kustomize.component: pytorch-operator - name: pytorch-operator - template: - metadata: - labels: - kustomize.component: pytorch-operator - name: pytorch-operator - spec: - containers: - - command: - - /pytorch-operator.v1 - - --alsologtostderr - - -v=1 - - --monitoring-port=8443 - env: - - name: MY_POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: MY_POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: gcr.io/kubeflow-images-public/pytorch-operator:v1.0.0-g047cf0f - name: pytorch-operator - serviceAccountName: pytorch-operator ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - name: sparkoperator - namespace: sparkoperator -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: sparkoperator - strategy: - type: Recreate - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - spec: - containers: - - args: - - -logtostderr - - -v=2 - - -controller-threads=20 - - -enable-metrics=true - - '-metrics-prefix=service:' - - -metrics-labels=task_name - - -metrics-labels=workflow_name - - -enable-webhook=true - - -webhook-svc-namespace=sparkoperator - command: - - /usr/bin/spark-operator - image: gcr.io/spark-operator/spark-operator:v1beta2-1.1.2-2.4.5 - imagePullPolicy: Always - name: sparkoperator-unknown - ports: - - containerPort: 10254 - - containerPort: 8080 - volumeMounts: - - mountPath: /etc/webhook-certs - name: webhook-certs - serviceAccountName: sparkoperator - volumes: - - name: webhook-certs - secret: - secretName: spark-webhook-certs ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: redis - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: redis-resource-manager - serviceName: redis-resource-manager - template: - metadata: - labels: - app: redis-resource-manager - spec: - containers: - - env: - - name: REDIS_PASSWORD - value: mypassword - image: ecr.flyte.org/bitnami/redis:6.2.5-debian-10-r59 - imagePullPolicy: IfNotPresent - livenessProbe: - exec: - command: - - redis-cli - - ping - failureThreshold: 3 - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - name: redis-resource-manager - ports: - - containerPort: 6379 - name: redis - protocol: TCP - readinessProbe: - exec: - command: - - redis-cli - - ping - failureThreshold: 3 - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - resources: - requests: - cpu: 200m - memory: 128Mi - volumeMounts: - - mountPath: /bitnami - name: redis-data - dnsPolicy: ClusterFirst - restartPolicy: Always - volumes: - - emptyDir: {} - name: redis-data ---- -apiVersion: batch/v1beta1 -kind: CronJob -metadata: - name: syncresources - namespace: flyte -spec: - jobTemplate: - spec: - template: - spec: - containers: - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - clusterresource - - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1 - imagePullPolicy: IfNotPresent - name: sync-cluster-resources - volumeMounts: - - mountPath: /etc/flyte/clusterresource/templates - name: resource-templates - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - restartPolicy: OnFailure - serviceAccountName: flyteadmin - volumes: - - configMap: - name: clusterresource-template-4fbh4bk26k - name: resource-templates - - configMap: - name: flyte-admin-config-29g4dtt8tc - name: config-volume - - name: db-pass - secret: - secretName: db-pass-bthd2588cc - schedule: '*/1 * * * *' ---- -apiVersion: batch/v1 -kind: Job -metadata: - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - name: sparkoperator-init - namespace: sparkoperator -spec: - backoffLimit: 3 - template: - metadata: - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - spec: - containers: - - command: - - /usr/bin/gencerts.sh - - --namespace - - sparkoperator - - -p - image: gcr.io/spark-operator/spark-operator:v1beta2-1.1.2-2.4.5 - imagePullPolicy: IfNotPresent - name: main - restartPolicy: Never - serviceAccountName: sparkoperator ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - annotations: - alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' - alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:111111111111:certificate/e92fefd8-6197-4249-a524-431d611c9af6 - alb.ingress.kubernetes.io/group.name: flytesystem - alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' - alb.ingress.kubernetes.io/scheme: internet-facing - alb.ingress.kubernetes.io/tags: service_instance=production - kubernetes.io/ingress.class: alb - labels: - app: flyteadmin - name: flytesystem - namespace: flyte -spec: - rules: - - http: - paths: - - backend: - service: - name: ssl-redirect - port: - name: use-annotation - path: /* - pathType: ImplementationSpecific - - backend: - service: - name: flyteconsole - port: - number: 80 - path: /console - pathType: ImplementationSpecific - - backend: - service: - name: flyteconsole - port: - number: 80 - path: /console/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /api/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /healthcheck - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /v1/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 87 - path: /openapi/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /.well-known/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /login - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /login/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /logout - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /logout/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /callback - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /callback/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /me - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /config - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /config/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /oauth2 - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /oauth2/* - pathType: ImplementationSpecific ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - annotations: - alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' - alb.ingress.kubernetes.io/backend-protocol-version: GRPC - alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:111111111111:certificate/e92fefd8-6197-4249-a524-431d611c9af6 - alb.ingress.kubernetes.io/group.name: flytesystem - alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]' - alb.ingress.kubernetes.io/scheme: internet-facing - alb.ingress.kubernetes.io/tags: service_instance=production - kubernetes.io/ingress.class: alb - nginx.ingress.kubernetes.io/ssl-redirect: "false" - labels: - app: flyteadmin - name: flytesystem-grpc - namespace: flyte -spec: - rules: - - http: - paths: - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.SignalService/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.AdminService/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.AuthMetadataService/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.IdentityService/* - pathType: ImplementationSpecific diff --git a/deployment/gcp/flyte_generated.yaml b/deployment/gcp/flyte_generated.yaml deleted file mode 100644 index 01d708d860b..00000000000 --- a/deployment/gcp/flyte_generated.yaml +++ /dev/null @@ -1,9553 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: flyte ---- -apiVersion: v1 -kind: Namespace -metadata: - name: kubeflow ---- -apiVersion: v1 -kind: Namespace -metadata: - name: sparkoperator ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: flyteworkflows.flyte.lyft.com -spec: - group: flyte.lyft.com - names: - kind: FlyteWorkflow - plural: flyteworkflows - shortNames: - - fly - singular: flyteworkflow - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - type: object - x-kubernetes-preserve-unknown-fields: true - served: true - storage: true ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: (unknown) - creationTimestamp: null - name: scheduledsparkapplications.sparkoperator.k8s.io -spec: - group: sparkoperator.k8s.io - names: - kind: ScheduledSparkApplication - listKind: ScheduledSparkApplicationList - plural: scheduledsparkapplications - shortNames: - - scheduledsparkapp - singular: scheduledsparkapplication - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - concurrencyPolicy: - type: string - failedRunHistoryLimit: - format: int32 - type: integer - schedule: - type: string - successfulRunHistoryLimit: - format: int32 - type: integer - suspend: - type: boolean - template: - properties: - arguments: - items: - type: string - type: array - batchScheduler: - type: string - batchSchedulerOptions: - properties: - priorityClassName: - type: string - queue: - type: string - type: object - deps: - properties: - files: - items: - type: string - type: array - jars: - items: - type: string - type: array - pyFiles: - items: - type: string - type: array - type: object - driver: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - podName: - pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' - type: string - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - executor: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - deleteOnTermination: - type: boolean - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - instances: - format: int32 - minimum: 1 - type: integer - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - failureRetries: - format: int32 - type: integer - hadoopConf: - additionalProperties: - type: string - type: object - hadoopConfigMap: - type: string - image: - type: string - imagePullPolicy: - type: string - imagePullSecrets: - items: - type: string - type: array - mainApplicationFile: - type: string - mainClass: - type: string - memoryOverheadFactor: - type: string - mode: - enum: - - cluster - - client - type: string - monitoring: - properties: - exposeDriverMetrics: - type: boolean - exposeExecutorMetrics: - type: boolean - metricsProperties: - type: string - metricsPropertiesFile: - type: string - prometheus: - properties: - configFile: - type: string - configuration: - type: string - jmxExporterJar: - type: string - port: - format: int32 - maximum: 49151 - minimum: 1024 - type: integer - required: - - jmxExporterJar - type: object - required: - - exposeDriverMetrics - - exposeExecutorMetrics - type: object - nodeSelector: - additionalProperties: - type: string - type: object - pythonVersion: - enum: - - "2" - - "3" - type: string - restartPolicy: - properties: - onFailureRetries: - format: int32 - minimum: 0 - type: integer - onFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - onSubmissionFailureRetries: - format: int32 - minimum: 0 - type: integer - onSubmissionFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - type: - enum: - - Never - - Always - - OnFailure - type: string - type: object - retryInterval: - format: int64 - type: integer - serviceAccount: - type: string - sparkConf: - additionalProperties: - type: string - type: object - sparkConfigMap: - type: string - sparkVersion: - type: string - timeToLiveSeconds: - format: int64 - type: integer - type: - enum: - - Java - - Python - - Scala - - R - type: string - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - driver - - executor - - sparkVersion - - type - type: object - required: - - schedule - - template - type: object - status: - properties: - lastRun: - format: date-time - nullable: true - type: string - lastRunName: - type: string - nextRun: - format: date-time - nullable: true - type: string - pastFailedRunNames: - items: - type: string - type: array - pastSuccessfulRunNames: - items: - type: string - type: array - reason: - type: string - scheduleState: - type: string - type: object - required: - - metadata - - spec - type: object - version: v1beta2 - versions: - - name: v1beta2 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: (unknown) - creationTimestamp: null - name: sparkapplications.sparkoperator.k8s.io -spec: - group: sparkoperator.k8s.io - names: - kind: SparkApplication - listKind: SparkApplicationList - plural: sparkapplications - shortNames: - - sparkapp - singular: sparkapplication - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - arguments: - items: - type: string - type: array - batchScheduler: - type: string - batchSchedulerOptions: - properties: - priorityClassName: - type: string - queue: - type: string - type: object - deps: - properties: - files: - items: - type: string - type: array - jars: - items: - type: string - type: array - pyFiles: - items: - type: string - type: array - type: object - driver: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - podName: - pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' - type: string - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - executor: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - deleteOnTermination: - type: boolean - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - instances: - format: int32 - minimum: 1 - type: integer - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - failureRetries: - format: int32 - type: integer - hadoopConf: - additionalProperties: - type: string - type: object - hadoopConfigMap: - type: string - image: - type: string - imagePullPolicy: - type: string - imagePullSecrets: - items: - type: string - type: array - mainApplicationFile: - type: string - mainClass: - type: string - memoryOverheadFactor: - type: string - mode: - enum: - - cluster - - client - type: string - monitoring: - properties: - exposeDriverMetrics: - type: boolean - exposeExecutorMetrics: - type: boolean - metricsProperties: - type: string - metricsPropertiesFile: - type: string - prometheus: - properties: - configFile: - type: string - configuration: - type: string - jmxExporterJar: - type: string - port: - format: int32 - maximum: 49151 - minimum: 1024 - type: integer - required: - - jmxExporterJar - type: object - required: - - exposeDriverMetrics - - exposeExecutorMetrics - type: object - nodeSelector: - additionalProperties: - type: string - type: object - pythonVersion: - enum: - - "2" - - "3" - type: string - restartPolicy: - properties: - onFailureRetries: - format: int32 - minimum: 0 - type: integer - onFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - onSubmissionFailureRetries: - format: int32 - minimum: 0 - type: integer - onSubmissionFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - type: - enum: - - Never - - Always - - OnFailure - type: string - type: object - retryInterval: - format: int64 - type: integer - serviceAccount: - type: string - sparkConf: - additionalProperties: - type: string - type: object - sparkConfigMap: - type: string - sparkVersion: - type: string - timeToLiveSeconds: - format: int64 - type: integer - type: - enum: - - Java - - Python - - Scala - - R - type: string - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - driver - - executor - - sparkVersion - - type - type: object - status: - properties: - applicationState: - properties: - errorMessage: - type: string - state: - type: string - required: - - state - type: object - driverInfo: - properties: - podName: - type: string - webUIAddress: - type: string - webUIIngressAddress: - type: string - webUIIngressName: - type: string - webUIPort: - format: int32 - type: integer - webUIServiceName: - type: string - type: object - executionAttempts: - format: int32 - type: integer - executorState: - additionalProperties: - type: string - type: object - sparkApplicationId: - type: string - submissionAttempts: - format: int32 - type: integer - submissionID: - type: string - submissionTime: - format: date-time - nullable: true - type: string - terminationTime: - format: date-time - nullable: true - type: string - required: - - driverInfo - type: object - required: - - metadata - - spec - type: object - version: v1beta2 - versions: - - name: v1beta2 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: pytorchjobs.kubeflow.org -spec: - additionalPrinterColumns: - - JSONPath: .status.conditions[-1:].type - name: State - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: kubeflow.org - names: - kind: PyTorchJob - plural: pytorchjobs - singular: pytorchjob - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - pytorchReplicaSpecs: - properties: - Master: - properties: - replicas: - maximum: 1 - minimum: 1 - type: integer - Worker: - properties: - replicas: - minimum: 1 - type: integer - versions: - - name: v1 - served: true - storage: true ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: datacatalog - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flyte-pod-webhook - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flyteadmin - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flytepropeller - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: pytorch-operator - kustomize.component: pytorch-operator - name: pytorch-operator - namespace: kubeflow ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: sparkoperator - namespace: sparkoperator ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: flyte-pod-webhook - namespace: flyte -rules: -- apiGroups: - - '*' - resources: - - mutatingwebhookconfigurations - - secrets - - pods - - replicasets/finalizers - verbs: - - get - - create - - update - - patch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: flyteadmin - namespace: flyte -rules: -- apiGroups: - - "" - - flyte.lyft.com - - rbac.authorization.k8s.io - resources: - - configmaps - - flyteworkflows - - namespaces - - pods - - resourcequotas - - roles - - rolebindings - - secrets - - services - - serviceaccounts - - spark-role - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: flytepropeller -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - update - - delete - - patch -- apiGroups: - - '*' - resources: - - '*' - verbs: - - get - - list - - watch - - create - - update - - delete - - patch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - get - - list - - watch - - create - - delete - - update -- apiGroups: - - flyte.lyft.com - resources: - - flyteworkflows - - flyteworkflows/finalizers - verbs: - - get - - list - - watch - - create - - update - - delete - - patch - - post - - deletecollection ---- -aggregationRule: - clusterRoleSelectors: - - matchLabels: - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true" -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - kustomize.component: pytorch-operator - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" - name: kubeflow-pytorchjobs-admin -rules: [] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - kustomize.component: pytorch-operator - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true" - name: kubeflow-pytorchjobs-edit -rules: -- apiGroups: - - kubeflow.org - resources: - - pytorchjobs - - pytorchjobs/status - verbs: - - get - - list - - watch - - create - - delete - - deletecollection - - patch - - update ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - kustomize.component: pytorch-operator - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" - name: kubeflow-pytorchjobs-view -rules: -- apiGroups: - - kubeflow.org - resources: - - pytorchjobs - - pytorchjobs/status - verbs: - - get - - list - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: sparkoperator -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - '*' -- apiGroups: - - "" - resources: - - services - - configmaps - - secrets - verbs: - - create - - get - - delete -- apiGroups: - - extensions - resources: - - ingresses - verbs: - - create - - get - - delete -- apiGroups: - - "" - resources: - - nodes - verbs: - - get -- apiGroups: - - batch - resources: - - jobs - verbs: - - create - - get - - update - - delete - - list - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - update - - patch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - get - - update - - delete -- apiGroups: - - admissionregistration.k8s.io - resources: - - mutatingwebhookconfigurations - verbs: - - create - - get - - update - - delete -- apiGroups: - - sparkoperator.k8s.io - resources: - - sparkapplications - - scheduledsparkapplications - - sparkapplications/status - - scheduledsparkapplications/status - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - labels: - app: pytorch-operator - kustomize.component: pytorch-operator - name: pytorch-operator -rules: -- apiGroups: - - kubeflow.org - resources: - - pytorchjobs - - pytorchjobs/status - verbs: - - '*' -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - '*' -- apiGroups: - - "" - resources: - - pods - - services - - endpoints - - events - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flyte-pod-webhook - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flyte-pod-webhook -subjects: -- kind: ServiceAccount - name: flyte-pod-webhook - namespace: flyte ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flyteadmin-binding - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flyteadmin -subjects: -- kind: ServiceAccount - name: flyteadmin - namespace: flyte ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flytepropeller - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flytepropeller -subjects: -- kind: ServiceAccount - name: flytepropeller - namespace: flyte ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: sparkoperator -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: sparkoperator -subjects: -- kind: ServiceAccount - name: sparkoperator - namespace: sparkoperator ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - labels: - app: pytorch-operator - kustomize.component: pytorch-operator - name: pytorch-operator -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: pytorch-operator -subjects: -- kind: ServiceAccount - name: pytorch-operator - namespace: kubeflow ---- -apiVersion: v1 -data: - aa_namespace.yaml: | - apiVersion: v1 - kind: Namespace - metadata: - name: {{ namespace }} - spec: - finalizers: - - kubernetes - ab_project-resource-quota.yaml: "apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }} \nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }} \n limits.memory: {{ projectQuotaMemory }}\n\n" - ad_spark-role.yaml: | - apiVersion: rbac.authorization.k8s.io/v1 - kind: Role - metadata: - name: spark-role - namespace: {{ namespace }} - rules: - - apiGroups: - - "" - resources: - - pods - verbs: - - '*' - - apiGroups: - - "" - resources: - - services - verbs: - - '*' - - apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' - ae_spark-service-account.yaml: | - apiVersion: v1 - kind: ServiceAccount - metadata: - name: spark - namespace: {{ namespace }} - af_spark-role-binding.yaml: "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n name: spark-role-binding\n namespace: {{ namespace }} \nroleRef:\n apiGroup: rbac.authorization.k8s.io\n kind: Role\n name: spark-role\nsubjects:\n- kind: ServiceAccount\n name: spark\n namespace: {{ namespace }}\n\n" -kind: ConfigMap -metadata: - name: clusterresource-template-4fbh4bk26k - namespace: flyte ---- -apiVersion: v1 -data: - db.yaml: | - database: - port: 5432 - username: flyte - host: cloudsqlproxy - dbname: datacatalog - options: "sslmode=disable" - passwordPath: /etc/db/pass.txt - logger.yaml: | - # TODO this is used to control the log level - logger: - show-source: true - level: 2 - server.yaml: | - datacatalog: - storage-prefix: metadata/datacatalog - metrics-scope: "datacatalog" - profiler-port: 10254 - application: - grpcPort: 8089 - storage.yaml: | - storage: - type: stow - stow: - kind: google - config: - json: "" - # TODO: replace with the GCP project ID - project_id: - scopes: https://www.googleapis.com/auth/cloud-platform - # TODO replace with the container (bucket) in GCS used by Flyte as intermediate store - container: "flyte" - # NOTE this cache configuration is purely for propeller. But since we are having a common storage - # config, we are configuring this value. In production create a separate storage config for - # propeller and increase the cache size - cache: - max_size_mbs: 512 - target_gc_percent: 70 - limits: - maxDownloadMBs: 10 -kind: ConfigMap -metadata: - name: datacatalog-config-mk4gcdf6db - namespace: flyte ---- -apiVersion: v1 -data: - cluster_resources.yaml: | - cluster_resources: - templatePath: "/etc/flyte/clusterresource/templates" - customData: - - production: - - projectQuotaCpu: - value: "5" - - projectQuotaMemory: - value: "4000Mi" - - staging: - - projectQuotaCpu: - value: "2" - - projectQuotaMemory: - value: "3000Mi" - - development: - - projectQuotaCpu: - value: "4" - - projectQuotaMemory: - value: "3000Mi" - refreshInterval: 1m - db.yaml: | - database: - port: 5432 - username: flyte - host: cloudsqlproxy - dbname: flyte - passwordPath: /etc/db/pass.txt - domain.yaml: | - domains: - - id: development - name: development - - id: staging - name: staging - - id: production - name: production - logger.yaml: | - # TODO this is used to control the log level - logger: - show-source: true - level: 2 - server.yaml: | - server: - httpPort: 8088 - grpcPort: 8089 - security: - # Controls whether to serve requests over SSL/TLS. - secure: false - # Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. - useAuth: false - allowCors: true - allowedOrigins: - # Accepting all domains for Sandbox installation - - "*" - allowedHeaders: - - "Content-Type" - - "flyte-authorization" - auth: - authorizedUris: - # This should point at your public http Uri. - - https://localhost:30081 - # This will be used by internal services in the same namespace as flyteadmin - - http://flyteadmin:80 - # This will be used by internal services in the same cluster but different namespaces - - http://flyteadmin.flyte.svc.cluster.local:80 - - # Controls app authentication config - appAuth: - thirdPartyConfig: - flyteClient: - clientId: flytectl - redirectUri: https://localhost:53593/callback - scopes: - - offline - - all - # Controls user authentication - userAuth: - openId: - baseUrl: https://accounts.google.com - scopes: - - profile - - openid - clientId: 657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com - flyteadmin: - roleNameKey: "iam.amazonaws.com/role" - storage.yaml: | - storage: - type: stow - stow: - kind: google - config: - json: "" - # TODO: replace with the GCP project ID - project_id: - scopes: https://www.googleapis.com/auth/cloud-platform - # TODO replace with the container (bucket) in GCS used by Flyte as intermediate store - container: "flyte" - # NOTE this cache configuration is purely for propeller. But since we are having a common storage - # config, we are configuring this value. In production create a separate storage config for - # propeller and increase the cache size - cache: - max_size_mbs: 512 - target_gc_percent: 70 - limits: - maxDownloadMBs: 10 - task_resource_defaults.yaml: | - task_resources: - defaults: - cpu: 1000m - memory: 1000Mi - storage: 1000Mi - limits: - cpu: 2 - memory: 8Gi - storage: 2000Mi - gpu: 1 -kind: ConfigMap -metadata: - name: flyte-admin-config-gf99k75c82 - namespace: flyte ---- -apiVersion: v1 -data: - BASE_URL: /console - CONFIG_DIR: /etc/flyte/config -kind: ConfigMap -metadata: - name: flyte-console-config - namespace: flyte ---- -apiVersion: v1 -data: - admin.yaml: | - event: - type: admin - rate: 500 - capacity: 1000 - admin: - endpoint: flyteadmin:81 - insecure: true - catalog.yaml: | - catalog-cache: - endpoint: datacatalog:89 - type: datacatalog - insecure: true - catalog_cache.yaml: "plugins:\n catalogCache: \n reader:\n maxItems: 10000\n writer:\n maxItems: 10000\n" - copilot.yaml: | - plugins: - k8s: - co-pilot: - name: "flyte-copilot-" - image: "cr.flyte.org/flyteorg/flytecopilot:v0.0.15" - start-timeout: "30s" - core.yaml: | - propeller: - rawoutput-prefix: gs://my-s3-bucket/ - metadata-prefix: metadata/propeller - workers: 40 - gc-interval: 12h - max-workflow-retries: 50 - workflow-reeval-duration: 30s - downstream-eval-duration: 30s - limit-namespace: "all" - prof-port: 10254 - metrics-prefix: flyte - enable-admin-launcher: true - leader-election: - lock-config-map: - name: propeller-leader - namespace: flyte - enabled: true - lease-duration: 15s - renew-deadline: 10s - retry-period: 2s - kube-client-config: - qps: 100 - burst: 25 - timeout: 30s - queue: - type: batch - batching-interval: 2s - batch-size: -1 - queue: - type: maxof - rate: 100 - capacity: 1000 - base-delay: 5s - max-delay: 120s - sub-queue: - type: bucket - rate: 100 - capacity: 1000 - workflowStore: - policy: "ResourceVersionCache" - enabled_plugins.yaml: | - tasks: - max-plugin-phase-versions: 1000000 - task-plugins: - enabled-plugins: - - container - - sidecar - - spark - - k8s-array - - pytorch - default-for-task-types: - container: container - sidecar: sidecar - spark: spark - container_array: k8s-array - pytorch: pytorch - k8s.yaml: | - plugins: - k8s: - default-env-vars: - - FLYTE_AWS_ENDPOINT: "http://minio.flyte:9000" - - FLYTE_AWS_ACCESS_KEY_ID: minio - - FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage - default-cpus: 100m - default-memory: 100Mi - logger.yaml: | - # TODO this is used to control the log level - logger: - show-source: true - level: 2 - qubole.yaml: | - plugins: - qubole: - quboleTokenKey: "FLYTE_QUBOLE_CLIENT_TOKEN" - resource_manager.yaml: | - propeller: - resourcemanager: - type: redis - resourceMaxQuota: 10000 - redis: - hostPath: redis-resource-manager:6379 - hostKey: mypassword - spark.yaml: | - plugins: - spark: - spark-config-default: - - spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version: "2" - - spark.kubernetes.allocation.batch.size: "50" - - spark.hadoop.fs.s3a.acl.default: "BucketOwnerFullControl" - - spark.hadoop.fs.s3n.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3n.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3a.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3a.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3a.multipart.threshold: "536870912" - - spark.blacklist.enabled: "true" - - spark.blacklist.timeout: "5m" - - spark.task.maxfailures: "8" - storage.yaml: | - storage: - type: stow - stow: - kind: google - config: - json: "" - # TODO: replace with the GCP project ID - project_id: - scopes: https://www.googleapis.com/auth/cloud-platform - # TODO replace with the container (bucket) in GCS used by Flyte as intermediate store - container: "flyte" - # NOTE this cache configuration is purely for propeller. But since we are having a common storage - # config, we are configuring this value. In production create a separate storage config for - # propeller and increase the cache size - cache: - max_size_mbs: 512 - target_gc_percent: 70 - limits: - maxDownloadMBs: 10 - task_logs.yaml: | - plugins: - logs: - # Log links can link to multiple options - # #1 Kubernetes dashboard is disabled in GCP - kubernetes-enabled: false - # #2 GCP stackdriver - stackdriver-enabled: true - # TODO: replace with the GCP project ID - gcp-project: - stackdriver-logresourcename: k8s_container -kind: ConfigMap -metadata: - name: flyte-propeller-config-kgbdtkgf56 - namespace: flyte ---- -apiVersion: v1 -data: - admin.yaml: | - admin: - clientId: flytepropeller - clientSecretLocation: /etc/secrets/client_secret - endpoint: flyteadmin:81 - insecure: true - event: - capacity: 1000 - rate: 500 - type: admin - db.yaml: | - database: - dbname: postgres - host: postgres - port: 5432 - username: postgres - logger.yaml: | - logger: - level: 4 - show-source: true -kind: ConfigMap -metadata: - labels: - app.kubernetes.io/instance: flyte - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: flytescheduler - helm.sh/chart: flyte-v0.1.10 - name: flyte-scheduler-config - namespace: flyte ---- -apiVersion: v1 -data: - pass.txt: eW91cnBhc3N3b3Jk -kind: Secret -metadata: - name: db-pass-bthd2588cc - namespace: flyte -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - name: flyte-admin-auth - namespace: flyte -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - name: flyte-pod-webhook - namespace: flyte -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - name: flyte-secret-auth - namespace: flyte -stringData: - client_secret: foobar -type: Opaque ---- -apiVersion: v1 -kind: Service -metadata: - name: cloudsqlproxy - namespace: flyte -spec: - ports: - - name: http - port: 5432 - protocol: TCP - selector: - app: cloudsqlproxy ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - contour.heptio.com/upstream-protocol.h2c: grpc - name: datacatalog - namespace: flyte -spec: - ports: - - name: http - port: 88 - protocol: TCP - targetPort: 8088 - - name: grpc - port: 89 - protocol: TCP - targetPort: 8089 - selector: - app: datacatalog ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - cloud.google.com/load-balancer-type: Internal - name: datacatalog-metrics - namespace: flyte -spec: - ports: - - name: http-metrics - port: 10254 - protocol: TCP - selector: - app: datacatalog - type: LoadBalancer ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - projectcontour.io/upstream-protocol.h2c: grpc - name: flyte-pod-webhook - namespace: flyte -spec: - ports: - - name: https - port: 443 - protocol: TCP - targetPort: 9443 - selector: - app: flyte-pod-webhook ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - cloud.google.com/load-balancer-type: Internal - projectcontour.io/upstream-protocol.h2c: grpc - name: flyteadmin - namespace: flyte -spec: - ports: - - name: redoc - port: 87 - protocol: TCP - targetPort: 8087 - - name: http-metrics - port: 10254 - protocol: TCP - - name: http - port: 80 - protocol: TCP - targetPort: 8088 - - name: grpc - port: 81 - protocol: TCP - targetPort: 8089 - selector: - app: flyteadmin - type: LoadBalancer ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - cloud.google.com/load-balancer-type: Internal - name: flyteconsole - namespace: flyte -spec: - ports: - - name: redoc - port: 87 - protocol: TCP - targetPort: 8087 - - name: http-metrics - port: 10254 - protocol: TCP - - port: 80 - protocol: TCP - targetPort: 8080 - selector: - app: flyteconsole - type: LoadBalancer ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - cloud.google.com/load-balancer-type: Internal - name: flytepropeller - namespace: flyte -spec: - ports: - - name: http-metrics - port: 10254 - protocol: TCP - selector: - app: flytepropeller - type: LoadBalancer ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: redis-resource-manager - name: redis-resource-manager - namespace: flyte -spec: - ports: - - name: redis - port: 6379 - protocol: TCP - targetPort: redis - selector: - app: redis-resource-manager - type: ClusterIP ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "8443" - prometheus.io/scrape: "true" - labels: - app: pytorch-operator - kustomize.component: pytorch-operator - name: pytorch-operator - namespace: kubeflow -spec: - ports: - - name: monitoring-port - port: 8443 - targetPort: 8443 - selector: - kustomize.component: pytorch-operator - name: pytorch-operator - type: ClusterIP ---- -apiVersion: v1 -kind: Service -metadata: - name: spark-webhook - namespace: sparkoperator -spec: - ports: - - name: webhook - port: 443 - targetPort: 8080 - selector: - app.kubernetes.io/name: sparkoperator ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: cloudsqlproxy - name: cloudsqlproxy - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: cloudsqlproxy - template: - metadata: - labels: - app: cloudsqlproxy - spec: - containers: - - command: - - /cloud_sql_proxy - - -instances=::flyte=tcp:0.0.0.0:5432 - image: gcr.io/cloudsql-docker/gce-proxy:1.16 - imagePullPolicy: IfNotPresent - name: cloudsql-proxy - ports: - - containerPort: 5432 ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: datacatalog - name: datacatalog - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: datacatalog - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: datacatalog - app.kubernetes.io/name: datacatalog - app.kubernetes.io/version: 0.3.0 - spec: - containers: - - command: - - datacatalog - - --config - - /etc/datacatalog/config/*.yaml - - serve - image: cr.flyte.org/flyteorg/datacatalog:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: datacatalog - ports: - - containerPort: 8088 - - containerPort: 8089 - resources: - limits: - cpu: "2" - ephemeral-storage: 1000Mi - memory: 1Gi - volumeMounts: - - mountPath: /etc/datacatalog/config - name: config-volume - - mountPath: /etc/db - name: db-pass - initContainers: - - command: - - datacatalog - - --config - - /etc/datacatalog/config/*.yaml - - migrate - - run - image: cr.flyte.org/flyteorg/datacatalog:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: run-migrations - volumeMounts: - - mountPath: /etc/datacatalog/config - name: config-volume - - mountPath: /etc/db - name: db-pass - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: datacatalog - volumes: - - emptyDir: {} - name: shared-data - - configMap: - name: datacatalog-config-mk4gcdf6db - name: config-volume - - name: db-pass - secret: - secretName: db-pass-bthd2588cc ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flyte-pod-webhook - name: flyte-pod-webhook - namespace: flyte -spec: - selector: - matchLabels: - app: flyte-pod-webhook - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flyte-pod-webhook - app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: 0.5.13 - spec: - containers: - - args: - - webhook - - --config - - /etc/flyte/config/*.yaml - command: - - flytepropeller - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: webhook - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - readOnly: true - - mountPath: /etc/webhook/certs - name: webhook-certs - readOnly: true - initContainers: - - args: - - webhook - - init-certs - - --config - - /etc/flyte/config/*.yaml - command: - - flytepropeller - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: generate-secrets - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: flyte-pod-webhook - volumes: - - configMap: - name: flyte-propeller-config-kgbdtkgf56 - name: config-volume - - name: webhook-certs - secret: - secretName: flyte-pod-webhook ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flyteadmin - name: flyteadmin - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: flyteadmin - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flyteadmin - app.kubernetes.io/name: flyteadmin - app.kubernetes.io/version: 0.4.13 - spec: - containers: - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - serve - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: flyteadmin - ports: - - containerPort: 8088 - - containerPort: 8089 - resources: - limits: - cpu: "2" - ephemeral-storage: 1Gi - memory: 1Gi - volumeMounts: - - mountPath: /srv/flyte - name: shared-data - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - mountPath: /etc/secrets/ - name: auth - - command: - - sh - - -c - - ln -s /usr/share/nginx/html /usr/share/nginx/html/openapi && sh /usr/local/bin/docker-run.sh - env: - - name: PAGE_TITLE - value: Flyte Admin OpenAPI - - name: SPEC_URL - value: /api/v1/openapi - - name: PORT - value: "8087" - image: docker.io/redocly/redoc - imagePullPolicy: IfNotPresent - name: redoc - ports: - - containerPort: 8087 - resources: - limits: - cpu: "0.1" - memory: 200Mi - initContainers: - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - migrate - - run - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: run-migrations - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - migrate - - seed-projects - - flytesnacks - - flytetester - - flyteexamples - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: seed-projects - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - clusterresource - - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: sync-cluster-resources - volumeMounts: - - mountPath: /etc/flyte/clusterresource/templates - name: resource-templates - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - args: - - flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --fromPath /etc/scratch/secrets - command: - - /bin/sh - - -c - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: generate-secrets - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/scratch - name: scratch - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: flyteadmin - volumes: - - emptyDir: {} - name: shared-data - - emptyDir: {} - name: scratch - - configMap: - name: flyte-admin-config-gf99k75c82 - name: config-volume - - configMap: - name: clusterresource-template-4fbh4bk26k - name: resource-templates - - name: db-pass - secret: - secretName: db-pass-bthd2588cc - - name: auth - secret: - secretName: flyte-admin-auth ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flyteconsole - name: flyteconsole - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: flyteconsole - template: - metadata: - labels: - app: flyteconsole - app.kubernetes.io/name: flyteconsole - app.kubernetes.io/version: 0.19.0 - spec: - containers: - - envFrom: - - configMapRef: - name: flyte-console-config - image: cr.flyte.org/flyteorg/flyteconsole:v1.10.2 - name: flyteconsole - ports: - - containerPort: 8080 - volumeMounts: - - mountPath: /srv/flyte - name: shared-data - securityContext: - fsGroupChangePolicy: Always - runAsUser: 1000 - volumes: - - emptyDir: {} - name: shared-data ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flytepropeller - name: flytepropeller - namespace: flyte -spec: - selector: - matchLabels: - app: flytepropeller - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flytepropeller - app.kubernetes.io/name: flytepropeller - app.kubernetes.io/version: 0.7.1 - spec: - containers: - - args: - - --config - - /etc/flyte/config/*.yaml - command: - - flytepropeller - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: flytepropeller - ports: - - containerPort: 10254 - resources: - limits: - cpu: "2" - ephemeral-storage: 1Gi - memory: 4Gi - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/secrets/ - name: auth - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: flytepropeller - volumes: - - configMap: - name: flyte-propeller-config-kgbdtkgf56 - name: config-volume - - name: auth - secret: - secretName: flyte-secret-auth ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flytescheduler - name: flytescheduler - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: flytescheduler - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flytescheduler - app.kubernetes.io/name: flytescheduler - app.kubernetes.io/version: 0.3.4 - spec: - containers: - - command: - - flytescheduler - - run - - --config - - /etc/flyte/config/*.yaml - image: cr.flyte.org/flyteorg/flytescheduler:v0.6.49 - imagePullPolicy: IfNotPresent - name: flytescheduler - resources: - limits: - cpu: 250m - ephemeral-storage: 100Mi - memory: 500Mi - requests: - cpu: 10m - ephemeral-storage: 50Mi - memory: 50Mi - volumeMounts: - - mountPath: /etc/secrets/ - name: auth - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - initContainers: - - command: - - flytescheduler - - precheck - - --config - - /etc/flyte/config/*.yaml - image: cr.flyte.org/flyteorg/flytescheduler:v0.6.49 - imagePullPolicy: IfNotPresent - name: flytescheduler-check - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - serviceAccountName: flyteadmin - volumes: - - configMap: - name: flyte-scheduler-config - name: config-volume - - name: db-pass - secret: - secretName: db-pass-bthd2588cc - - name: auth - secret: - secretName: flyte-secret-auth ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - kustomize.component: pytorch-operator - name: pytorch-operator - namespace: kubeflow -spec: - replicas: 1 - selector: - matchLabels: - kustomize.component: pytorch-operator - name: pytorch-operator - template: - metadata: - labels: - kustomize.component: pytorch-operator - name: pytorch-operator - spec: - containers: - - command: - - /pytorch-operator.v1 - - --alsologtostderr - - -v=1 - - --monitoring-port=8443 - env: - - name: MY_POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: MY_POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: gcr.io/kubeflow-images-public/pytorch-operator:v1.0.0-g047cf0f - name: pytorch-operator - serviceAccountName: pytorch-operator ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - name: sparkoperator - namespace: sparkoperator -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: sparkoperator - strategy: - type: Recreate - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - spec: - containers: - - args: - - -logtostderr - - -v=2 - - -controller-threads=20 - - -enable-metrics=true - - '-metrics-prefix=service:' - - -metrics-labels=task_name - - -metrics-labels=workflow_name - - -enable-webhook=true - - -webhook-svc-namespace=sparkoperator - command: - - /usr/bin/spark-operator - image: gcr.io/spark-operator/spark-operator:v1beta2-1.1.2-2.4.5 - imagePullPolicy: Always - name: sparkoperator-unknown - ports: - - containerPort: 10254 - - containerPort: 8080 - volumeMounts: - - mountPath: /etc/webhook-certs - name: webhook-certs - serviceAccountName: sparkoperator - volumes: - - name: webhook-certs - secret: - secretName: spark-webhook-certs ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: redis - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: redis-resource-manager - serviceName: redis-resource-manager - template: - metadata: - labels: - app: redis-resource-manager - spec: - containers: - - env: - - name: REDIS_PASSWORD - value: mypassword - image: ecr.flyte.org/bitnami/redis:6.2.5-debian-10-r59 - imagePullPolicy: IfNotPresent - livenessProbe: - exec: - command: - - redis-cli - - ping - failureThreshold: 3 - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - name: redis-resource-manager - ports: - - containerPort: 6379 - name: redis - protocol: TCP - readinessProbe: - exec: - command: - - redis-cli - - ping - failureThreshold: 3 - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - resources: - requests: - cpu: 200m - memory: 128Mi - volumeMounts: - - mountPath: /bitnami - name: redis-data - dnsPolicy: ClusterFirst - restartPolicy: Always - volumes: - - emptyDir: {} - name: redis-data ---- -apiVersion: batch/v1beta1 -kind: CronJob -metadata: - name: syncresources - namespace: flyte -spec: - jobTemplate: - spec: - template: - spec: - containers: - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - clusterresource - - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.10.7-b2 - imagePullPolicy: IfNotPresent - name: sync-cluster-resources - volumeMounts: - - mountPath: /etc/flyte/clusterresource/templates - name: resource-templates - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - restartPolicy: OnFailure - serviceAccountName: flyteadmin - volumes: - - configMap: - name: clusterresource-template-4fbh4bk26k - name: resource-templates - - configMap: - name: flyte-admin-config-gf99k75c82 - name: config-volume - - name: db-pass - secret: - secretName: db-pass-bthd2588cc - schedule: '*/1 * * * *' ---- -apiVersion: batch/v1 -kind: Job -metadata: - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - name: sparkoperator-init - namespace: sparkoperator -spec: - backoffLimit: 3 - template: - metadata: - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - spec: - containers: - - command: - - /usr/bin/gencerts.sh - - --namespace - - sparkoperator - - -p - image: gcr.io/spark-operator/spark-operator:v1beta2-1.1.2-2.4.5 - imagePullPolicy: IfNotPresent - name: main - restartPolicy: Never - serviceAccountName: sparkoperator ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - annotations: - nginx.ingress.kubernetes.io/app-root: /console - nginx.ingress.kubernetes.io/ssl-redirect: "false" - name: flytesystem - namespace: flyte -spec: - rules: - - http: - paths: - - backend: - service: - name: flyteconsole - port: - number: 80 - path: /__webpack_hmr - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.AdminService - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.AuthMetadataService - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.IdentityService - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.SignalService - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 87 - path: /openapi - pathType: ImplementationSpecific - - backend: - service: - name: flyteconsole - port: - number: 80 - path: /console - pathType: ImplementationSpecific - - backend: - service: - name: flyteconsole - port: - number: 80 - path: /console/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /api - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /api/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /healthcheck - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /v1/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 87 - path: /openapi/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /.well-known/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /login - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /login/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /logout - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /logout/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /callback - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /callback/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /me - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /config - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /config/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /oauth2 - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /oauth2/* - pathType: ImplementationSpecific diff --git a/deployment/sandbox/flyte_generated.yaml b/deployment/sandbox/flyte_generated.yaml deleted file mode 100644 index cac33303fd3..00000000000 --- a/deployment/sandbox/flyte_generated.yaml +++ /dev/null @@ -1,3965 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: flyte ---- -apiVersion: v1 -kind: Namespace -metadata: - name: kubernetes-dashboard ---- -apiVersion: v1 -kind: Namespace -metadata: - name: projectcontour ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: extensionservices.projectcontour.io -spec: - group: projectcontour.io - names: - kind: ExtensionService - listKind: ExtensionServiceList - plural: extensionservices - shortNames: - - extensionservice - - extensionservices - singular: extensionservice - preserveUnknownFields: false - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: ExtensionService is the schema for the Contour extension services API. An ExtensionService resource binds a network service to the Contour API so that Contour API features can be implemented by collaborating components. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ExtensionServiceSpec defines the desired state of an ExtensionService resource. - properties: - loadBalancerPolicy: - description: The policy for load balancing GRPC service requests. Note that the `Cookie` and `RequestHash` load balancing strategies cannot be used here. - properties: - requestHashPolicies: - description: RequestHashPolicies contains a list of hash policies to apply when the `RequestHash` load balancing strategy is chosen. If an element of the supplied list of hash policies is invalid, it will be ignored. If the list of hash policies is empty after validation, the load balancing strategy will fall back the the default `RoundRobin`. - items: - description: RequestHashPolicy contains configuration for an individual hash policy on a request attribute. - properties: - headerHashOptions: - description: HeaderHashOptions should be set when request header hash based load balancing is desired. It must be the only hash option field set, otherwise this request hash policy object will be ignored. - properties: - headerName: - description: HeaderName is the name of the HTTP request header that will be used to calculate the hash key. If the header specified is not present on a request, no hash will be produced. - minLength: 1 - type: string - type: object - terminal: - description: Terminal is a flag that allows for short-circuiting computing of a hash for a given request. If set to true, and the request attribute specified in the attribute hash options is present, no further hash policies will be used to calculate a hash for the request. - type: boolean - type: object - type: array - strategy: - description: Strategy specifies the policy used to balance requests across the pool of backend pods. Valid policy names are `Random`, `RoundRobin`, `WeightedLeastRequest`, `Cookie`, and `RequestHash`. If an unknown strategy name is specified or no policy is supplied, the default `RoundRobin` policy is used. - type: string - type: object - protocol: - description: Protocol may be used to specify (or override) the protocol used to reach this Service. Values may be tls, h2, h2c. If omitted, protocol-selection falls back on Service annotations. - enum: - - h2 - - h2c - type: string - protocolVersion: - description: This field sets the version of the GRPC protocol that Envoy uses to send requests to the extension service. Since Contour always uses the v3 Envoy API, this is currently fixed at "v3". However, other protocol options will be available in future. - enum: - - v3 - type: string - services: - description: Services specifies the set of Kubernetes Service resources that receive GRPC extension API requests. If no weights are specified for any of the entries in this array, traffic will be spread evenly across all the services. Otherwise, traffic is balanced proportionally to the Weight field in each entry. - items: - description: ExtensionServiceTarget defines an Kubernetes Service to target with extension service traffic. - properties: - name: - description: Name is the name of Kubernetes service that will accept service traffic. - type: string - port: - description: Port (defined as Integer) to proxy traffic to since a service can have multiple defined. - exclusiveMaximum: true - maximum: 65536 - minimum: 1 - type: integer - weight: - description: Weight defines proportion of traffic to balance to the Kubernetes Service. - format: int32 - type: integer - required: - - name - - port - type: object - minItems: 1 - type: array - timeoutPolicy: - description: The timeout policy for requests to the services. - properties: - idle: - description: Timeout after which, if there are no active requests for this route, the connection between Envoy and the backend or Envoy and the external client will be closed. If not specified, there is no per-route idle timeout, though a connection manager-wide stream_idle_timeout default of 5m still applies. - pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$ - type: string - response: - description: Timeout for receiving a response from the server after processing a request from client. If not supplied, Envoy's default value of 15s applies. - pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$ - type: string - type: object - validation: - description: UpstreamValidation defines how to verify the backend service's certificate - properties: - caSecret: - description: Name of the Kubernetes secret be used to validate the certificate presented by the backend - type: string - subjectName: - description: Key which is expected to be present in the 'subjectAltName' of the presented certificate - type: string - required: - - caSecret - - subjectName - type: object - required: - - services - type: object - status: - description: ExtensionServiceStatus defines the observed state of an ExtensionService resource. - properties: - conditions: - description: "Conditions contains the current status of the ExtensionService resource. \n Contour will update a single condition, `Valid`, that is in normal-true polarity. \n Contour will not modify any other Conditions set in this block, in case some other controller wants to add a Condition." - items: - description: "DetailedCondition is an extension of the normal Kubernetes conditions, with two extra fields to hold sub-conditions, which provide more detailed reasons for the state (True or False) of the condition. \n `errors` holds information about sub-conditions which are fatal to that condition and render its state False. \n `warnings` holds information about sub-conditions which are not fatal to that condition and do not force the state to be False. \n Remember that Conditions have a type, a status, and a reason. \n The type is the type of the condition, the most important one in this CRD set is `Valid`. `Valid` is a positive-polarity condition: when it is `status: true` there are no problems. \n In more detail, `status: true` means that the object is has been ingested into Contour with no errors. `warnings` may still be present, and will be indicated in the Reason field. There must be zero entries in the `errors` slice in this case. \n `Valid`, `status: false` means that the object has had one or more fatal errors during processing into Contour. The details of the errors will be present under the `errors` field. There must be at least one error in the `errors` slice if `status` is `false`. \n For DetailedConditions of types other than `Valid`, the Condition must be in the negative polarity. When they have `status` `true`, there is an error. There must be at least one entry in the `errors` Subcondition slice. When they have `status` `false`, there are no serious errors, and there must be zero entries in the `errors` slice. In either case, there may be entries in the `warnings` slice. \n Regardless of the polarity, the `reason` and `message` fields must be updated with either the detail of the reason (if there is one and only one entry in total across both the `errors` and `warnings` slices), or `MultipleReasons` if there is more than one entry." - properties: - errors: - description: "Errors contains a slice of relevant error subconditions for this object. \n Subconditions are expected to appear when relevant (when there is a error), and disappear when not relevant. An empty slice here indicates no errors." - items: - description: "SubCondition is a Condition-like type intended for use as a subcondition inside a DetailedCondition. \n It contains a subset of the Condition fields. \n It is intended for warnings and errors, so `type` names should use abnormal-true polarity, that is, they should be of the form \"ErrorPresent: true\". \n The expected lifecycle for these errors is that they should only be present when the error or warning is, and should be removed when they are not relevant." - properties: - message: - description: "Message is a human readable message indicating details about the transition. \n This may be an empty string." - maxLength: 32768 - type: string - reason: - description: "Reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. \n The value should be a CamelCase string. \n This field may not be empty." - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: Status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`. \n This must be in abnormal-true polarity, that is, `ErrorFound` or `controller.io/ErrorFound`. \n The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - message - - reason - - status - - type - type: object - type: array - lastTransitionTime: - description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - warnings: - description: "Warnings contains a slice of relevant warning subconditions for this object. \n Subconditions are expected to appear when relevant (when there is a warning), and disappear when not relevant. An empty slice here indicates no warnings." - items: - description: "SubCondition is a Condition-like type intended for use as a subcondition inside a DetailedCondition. \n It contains a subset of the Condition fields. \n It is intended for warnings and errors, so `type` names should use abnormal-true polarity, that is, they should be of the form \"ErrorPresent: true\". \n The expected lifecycle for these errors is that they should only be present when the error or warning is, and should be removed when they are not relevant." - properties: - message: - description: "Message is a human readable message indicating details about the transition. \n This may be an empty string." - maxLength: 32768 - type: string - reason: - description: "Reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. \n The value should be a CamelCase string. \n This field may not be empty." - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: Status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`. \n This must be in abnormal-true polarity, that is, `ErrorFound` or `controller.io/ErrorFound`. \n The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - message - - reason - - status - - type - type: object - type: array - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: flyteworkflows.flyte.lyft.com -spec: - group: flyte.lyft.com - names: - kind: FlyteWorkflow - plural: flyteworkflows - shortNames: - - fly - singular: flyteworkflow - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - type: object - x-kubernetes-preserve-unknown-fields: true - served: true - storage: true ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: httpproxies.projectcontour.io -spec: - group: projectcontour.io - names: - kind: HTTPProxy - listKind: HTTPProxyList - plural: httpproxies - shortNames: - - proxy - - proxies - singular: httpproxy - preserveUnknownFields: false - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Fully qualified domain name - jsonPath: .spec.virtualhost.fqdn - name: FQDN - type: string - - description: Secret with TLS credentials - jsonPath: .spec.virtualhost.tls.secretName - name: TLS Secret - type: string - - description: The current status of the HTTPProxy - jsonPath: .status.currentStatus - name: Status - type: string - - description: Description of the current status - jsonPath: .status.description - name: Status Description - type: string - name: v1 - schema: - openAPIV3Schema: - description: HTTPProxy is an Ingress CRD specification. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: HTTPProxySpec defines the spec of the CRD. - properties: - includes: - description: Includes allow for specific routing configuration to be included from another HTTPProxy, possibly in another namespace. - items: - description: Include describes a set of policies that can be applied to an HTTPProxy in a namespace. - properties: - conditions: - description: 'Conditions are a set of rules that are applied to included HTTPProxies. In effect, they are added onto the Conditions of included HTTPProxy Route structs. When applied, they are merged using AND, with one exception: There can be only one Prefix MatchCondition per Conditions slice. More than one Prefix, or contradictory Conditions, will make the include invalid.' - items: - description: MatchCondition are a general holder for matching rules for HTTPProxies. One of Prefix or Header must be provided. - properties: - header: - description: Header specifies the header condition to match. - properties: - contains: - description: Contains specifies a substring that must be present in the header value. - type: string - exact: - description: Exact specifies a string that the header value must be equal to. - type: string - name: - description: Name is the name of the header to match against. Name is required. Header names are case insensitive. - type: string - notcontains: - description: NotContains specifies a substring that must not be present in the header value. - type: string - notexact: - description: NoExact specifies a string that the header value must not be equal to. The condition is true if the header has any other value. - type: string - present: - description: Present specifies that condition is true when the named header is present, regardless of its value. Note that setting Present to false does not make the condition true if the named header is absent. - type: boolean - required: - - name - type: object - prefix: - description: Prefix defines a prefix match for a request. - type: string - type: object - type: array - name: - description: Name of the HTTPProxy - type: string - namespace: - description: Namespace of the HTTPProxy to include. Defaults to the current namespace if not supplied. - type: string - required: - - name - type: object - type: array - routes: - description: Routes are the ingress routes. If TCPProxy is present, Routes is ignored. - items: - description: Route contains the set of routes for a virtual host. - properties: - authPolicy: - description: AuthPolicy updates the authorization policy that was set on the root HTTPProxy object for client requests that match this route. - properties: - context: - additionalProperties: - type: string - description: Context is a set of key/value pairs that are sent to the authentication server in the check request. If a context is provided at an enclosing scope, the entries are merged such that the inner scope overrides matching keys from the outer scope. - type: object - disabled: - description: When true, this field disables client request authentication for the scope of the policy. - type: boolean - type: object - conditions: - description: 'Conditions are a set of rules that are applied to a Route. When applied, they are merged using AND, with one exception: There can be only one Prefix MatchCondition per Conditions slice. More than one Prefix, or contradictory Conditions, will make the route invalid.' - items: - description: MatchCondition are a general holder for matching rules for HTTPProxies. One of Prefix or Header must be provided. - properties: - header: - description: Header specifies the header condition to match. - properties: - contains: - description: Contains specifies a substring that must be present in the header value. - type: string - exact: - description: Exact specifies a string that the header value must be equal to. - type: string - name: - description: Name is the name of the header to match against. Name is required. Header names are case insensitive. - type: string - notcontains: - description: NotContains specifies a substring that must not be present in the header value. - type: string - notexact: - description: NoExact specifies a string that the header value must not be equal to. The condition is true if the header has any other value. - type: string - present: - description: Present specifies that condition is true when the named header is present, regardless of its value. Note that setting Present to false does not make the condition true if the named header is absent. - type: boolean - required: - - name - type: object - prefix: - description: Prefix defines a prefix match for a request. - type: string - type: object - type: array - enableWebsockets: - description: Enables websocket support for the route. - type: boolean - healthCheckPolicy: - description: The health check policy for this route. - properties: - healthyThresholdCount: - description: The number of healthy health checks required before a host is marked healthy - format: int64 - minimum: 0 - type: integer - host: - description: The value of the host header in the HTTP health check request. If left empty (default value), the name "contour-envoy-healthcheck" will be used. - type: string - intervalSeconds: - description: The interval (seconds) between health checks - format: int64 - type: integer - path: - description: HTTP endpoint used to perform health checks on upstream service - type: string - timeoutSeconds: - description: The time to wait (seconds) for a health check response - format: int64 - type: integer - unhealthyThresholdCount: - description: The number of unhealthy health checks required before a host is marked unhealthy - format: int64 - minimum: 0 - type: integer - required: - - path - type: object - loadBalancerPolicy: - description: The load balancing policy for this route. - properties: - requestHashPolicies: - description: RequestHashPolicies contains a list of hash policies to apply when the `RequestHash` load balancing strategy is chosen. If an element of the supplied list of hash policies is invalid, it will be ignored. If the list of hash policies is empty after validation, the load balancing strategy will fall back the the default `RoundRobin`. - items: - description: RequestHashPolicy contains configuration for an individual hash policy on a request attribute. - properties: - headerHashOptions: - description: HeaderHashOptions should be set when request header hash based load balancing is desired. It must be the only hash option field set, otherwise this request hash policy object will be ignored. - properties: - headerName: - description: HeaderName is the name of the HTTP request header that will be used to calculate the hash key. If the header specified is not present on a request, no hash will be produced. - minLength: 1 - type: string - type: object - terminal: - description: Terminal is a flag that allows for short-circuiting computing of a hash for a given request. If set to true, and the request attribute specified in the attribute hash options is present, no further hash policies will be used to calculate a hash for the request. - type: boolean - type: object - type: array - strategy: - description: Strategy specifies the policy used to balance requests across the pool of backend pods. Valid policy names are `Random`, `RoundRobin`, `WeightedLeastRequest`, `Cookie`, and `RequestHash`. If an unknown strategy name is specified or no policy is supplied, the default `RoundRobin` policy is used. - type: string - type: object - pathRewritePolicy: - description: The policy for rewriting the path of the request URL after the request has been routed to a Service. - properties: - replacePrefix: - description: ReplacePrefix describes how the path prefix should be replaced. - items: - description: ReplacePrefix describes a path prefix replacement. - properties: - prefix: - description: "Prefix specifies the URL path prefix to be replaced. \n If Prefix is specified, it must exactly match the MatchCondition prefix that is rendered by the chain of including HTTPProxies and only that path prefix will be replaced by Replacement. This allows HTTPProxies that are included through multiple roots to only replace specific path prefixes, leaving others unmodified. \n If Prefix is not specified, all routing prefixes rendered by the include chain will be replaced." - minLength: 1 - type: string - replacement: - description: Replacement is the string that the routing path prefix will be replaced with. This must not be empty. - minLength: 1 - type: string - required: - - replacement - type: object - type: array - type: object - permitInsecure: - description: Allow this path to respond to insecure requests over HTTP which are normally not permitted when a `virtualhost.tls` block is present. - type: boolean - rateLimitPolicy: - description: The policy for rate limiting on the route. - properties: - global: - description: Global defines global rate limiting parameters, i.e. parameters defining descriptors that are sent to an external rate limit service (RLS) for a rate limit decision on each request. - properties: - descriptors: - description: Descriptors defines the list of descriptors that will be generated and sent to the rate limit service. Each descriptor contains 1+ key-value pair entries. - items: - description: RateLimitDescriptor defines a list of key-value pair generators. - properties: - entries: - description: Entries is the list of key-value pair generators. - items: - description: RateLimitDescriptorEntry is a key-value pair generator. Exactly one field on this struct must be non-nil. - properties: - genericKey: - description: GenericKey defines a descriptor entry with a static key and value. - properties: - key: - description: Key defines the key of the descriptor entry. If not set, the key is set to "generic_key". - type: string - value: - description: Value defines the value of the descriptor entry. - minLength: 1 - type: string - type: object - remoteAddress: - description: RemoteAddress defines a descriptor entry with a key of "remote_address" and a value equal to the client's IP address (from x-forwarded-for). - type: object - requestHeader: - description: RequestHeader defines a descriptor entry that's populated only if a given header is present on the request. The descriptor key is static, and the descriptor value is equal to the value of the header. - properties: - descriptorKey: - description: DescriptorKey defines the key to use on the descriptor entry. - minLength: 1 - type: string - headerName: - description: HeaderName defines the name of the header to look for on the request. - minLength: 1 - type: string - type: object - type: object - minItems: 1 - type: array - type: object - minItems: 1 - type: array - type: object - local: - description: Local defines local rate limiting parameters, i.e. parameters for rate limiting that occurs within each Envoy pod as requests are handled. - properties: - burst: - description: Burst defines the number of requests above the requests per unit that should be allowed within a short period of time. - format: int32 - type: integer - requests: - description: Requests defines how many requests per unit of time should be allowed before rate limiting occurs. - format: int32 - minimum: 1 - type: integer - responseHeadersToAdd: - description: ResponseHeadersToAdd is an optional list of response headers to set when a request is rate-limited. - items: - description: HeaderValue represents a header name/value pair - properties: - name: - description: Name represents a key of a header - minLength: 1 - type: string - value: - description: Value represents the value of a header specified by a key - minLength: 1 - type: string - required: - - name - - value - type: object - type: array - responseStatusCode: - description: ResponseStatusCode is the HTTP status code to use for responses to rate-limited requests. Codes must be in the 400-599 range (inclusive). If not specified, the Envoy default of 429 (Too Many Requests) is used. - format: int32 - maximum: 599 - minimum: 400 - type: integer - unit: - description: Unit defines the period of time within which requests over the limit will be rate limited. Valid values are "second", "minute" and "hour". - enum: - - second - - minute - - hour - type: string - required: - - requests - - unit - type: object - type: object - requestHeadersPolicy: - description: The policy for managing request headers during proxying. - properties: - remove: - description: Remove specifies a list of HTTP header names to remove. - items: - type: string - type: array - set: - description: Set specifies a list of HTTP header values that will be set in the HTTP header. If the header does not exist it will be added, otherwise it will be overwritten with the new value. - items: - description: HeaderValue represents a header name/value pair - properties: - name: - description: Name represents a key of a header - minLength: 1 - type: string - value: - description: Value represents the value of a header specified by a key - minLength: 1 - type: string - required: - - name - - value - type: object - type: array - type: object - responseHeadersPolicy: - description: The policy for managing response headers during proxying. Rewriting the 'Host' header is not supported. - properties: - remove: - description: Remove specifies a list of HTTP header names to remove. - items: - type: string - type: array - set: - description: Set specifies a list of HTTP header values that will be set in the HTTP header. If the header does not exist it will be added, otherwise it will be overwritten with the new value. - items: - description: HeaderValue represents a header name/value pair - properties: - name: - description: Name represents a key of a header - minLength: 1 - type: string - value: - description: Value represents the value of a header specified by a key - minLength: 1 - type: string - required: - - name - - value - type: object - type: array - type: object - retryPolicy: - description: The retry policy for this route. - properties: - count: - description: NumRetries is maximum allowed number of retries. If not supplied, the number of retries is one. - format: int64 - minimum: 0 - type: integer - perTryTimeout: - description: PerTryTimeout specifies the timeout per retry attempt. Ignored if NumRetries is not supplied. - pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$ - type: string - retriableStatusCodes: - description: "RetriableStatusCodes specifies the HTTP status codes that should be retried. \n This field is only respected when you include `retriable-status-codes` in the `RetryOn` field." - items: - format: int32 - type: integer - type: array - retryOn: - description: "RetryOn specifies the conditions on which to retry a request. \n Supported [HTTP conditions](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on): \n - `5xx` - `gateway-error` - `reset` - `connect-failure` - `retriable-4xx` - `refused-stream` - `retriable-status-codes` - `retriable-headers` \n Supported [gRPC conditions](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-grpc-on): \n - `cancelled` - `deadline-exceeded` - `internal` - `resource-exhausted` - `unavailable`" - items: - description: RetryOn is a string type alias with validation to ensure that the value is valid. - enum: - - 5xx - - gateway-error - - reset - - connect-failure - - retriable-4xx - - refused-stream - - retriable-status-codes - - retriable-headers - - cancelled - - deadline-exceeded - - internal - - resource-exhausted - - unavailable - type: string - type: array - type: object - services: - description: Services are the services to proxy traffic. - items: - description: Service defines an Kubernetes Service to proxy traffic. - properties: - mirror: - description: If Mirror is true the Service will receive a read only mirror of the traffic for this route. - type: boolean - name: - description: Name is the name of Kubernetes service to proxy traffic. Names defined here will be used to look up corresponding endpoints which contain the ips to route. - type: string - port: - description: Port (defined as Integer) to proxy traffic to since a service can have multiple defined. - exclusiveMaximum: true - maximum: 65536 - minimum: 1 - type: integer - protocol: - description: Protocol may be used to specify (or override) the protocol used to reach this Service. Values may be tls, h2, h2c. If omitted, protocol-selection falls back on Service annotations. - enum: - - h2 - - h2c - - tls - type: string - requestHeadersPolicy: - description: The policy for managing request headers during proxying. Rewriting the 'Host' header is not supported. - properties: - remove: - description: Remove specifies a list of HTTP header names to remove. - items: - type: string - type: array - set: - description: Set specifies a list of HTTP header values that will be set in the HTTP header. If the header does not exist it will be added, otherwise it will be overwritten with the new value. - items: - description: HeaderValue represents a header name/value pair - properties: - name: - description: Name represents a key of a header - minLength: 1 - type: string - value: - description: Value represents the value of a header specified by a key - minLength: 1 - type: string - required: - - name - - value - type: object - type: array - type: object - responseHeadersPolicy: - description: The policy for managing response headers during proxying. Rewriting the 'Host' header is not supported. - properties: - remove: - description: Remove specifies a list of HTTP header names to remove. - items: - type: string - type: array - set: - description: Set specifies a list of HTTP header values that will be set in the HTTP header. If the header does not exist it will be added, otherwise it will be overwritten with the new value. - items: - description: HeaderValue represents a header name/value pair - properties: - name: - description: Name represents a key of a header - minLength: 1 - type: string - value: - description: Value represents the value of a header specified by a key - minLength: 1 - type: string - required: - - name - - value - type: object - type: array - type: object - validation: - description: UpstreamValidation defines how to verify the backend service's certificate - properties: - caSecret: - description: Name of the Kubernetes secret be used to validate the certificate presented by the backend - type: string - subjectName: - description: Key which is expected to be present in the 'subjectAltName' of the presented certificate - type: string - required: - - caSecret - - subjectName - type: object - weight: - description: Weight defines percentage of traffic to balance traffic - format: int64 - minimum: 0 - type: integer - required: - - name - - port - type: object - minItems: 1 - type: array - timeoutPolicy: - description: The timeout policy for this route. - properties: - idle: - description: Timeout after which, if there are no active requests for this route, the connection between Envoy and the backend or Envoy and the external client will be closed. If not specified, there is no per-route idle timeout, though a connection manager-wide stream_idle_timeout default of 5m still applies. - pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$ - type: string - response: - description: Timeout for receiving a response from the server after processing a request from client. If not supplied, Envoy's default value of 15s applies. - pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$ - type: string - type: object - required: - - services - type: object - type: array - tcpproxy: - description: TCPProxy holds TCP proxy information. - properties: - healthCheckPolicy: - description: The health check policy for this tcp proxy - properties: - healthyThresholdCount: - description: The number of healthy health checks required before a host is marked healthy - format: int32 - type: integer - intervalSeconds: - description: The interval (seconds) between health checks - format: int64 - type: integer - timeoutSeconds: - description: The time to wait (seconds) for a health check response - format: int64 - type: integer - unhealthyThresholdCount: - description: The number of unhealthy health checks required before a host is marked unhealthy - format: int32 - type: integer - type: object - include: - description: Include specifies that this tcpproxy should be delegated to another HTTPProxy. - properties: - name: - description: Name of the child HTTPProxy - type: string - namespace: - description: Namespace of the HTTPProxy to include. Defaults to the current namespace if not supplied. - type: string - required: - - name - type: object - includes: - description: "IncludesDeprecated allow for specific routing configuration to be appended to another HTTPProxy in another namespace. \n Exists due to a mistake when developing HTTPProxy and the field was marked plural when it should have been singular. This field should stay to not break backwards compatibility to v1 users." - properties: - name: - description: Name of the child HTTPProxy - type: string - namespace: - description: Namespace of the HTTPProxy to include. Defaults to the current namespace if not supplied. - type: string - required: - - name - type: object - loadBalancerPolicy: - description: The load balancing policy for the backend services. Note that the `Cookie` and `RequestHash` load balancing strategies cannot be used here. - properties: - requestHashPolicies: - description: RequestHashPolicies contains a list of hash policies to apply when the `RequestHash` load balancing strategy is chosen. If an element of the supplied list of hash policies is invalid, it will be ignored. If the list of hash policies is empty after validation, the load balancing strategy will fall back the the default `RoundRobin`. - items: - description: RequestHashPolicy contains configuration for an individual hash policy on a request attribute. - properties: - headerHashOptions: - description: HeaderHashOptions should be set when request header hash based load balancing is desired. It must be the only hash option field set, otherwise this request hash policy object will be ignored. - properties: - headerName: - description: HeaderName is the name of the HTTP request header that will be used to calculate the hash key. If the header specified is not present on a request, no hash will be produced. - minLength: 1 - type: string - type: object - terminal: - description: Terminal is a flag that allows for short-circuiting computing of a hash for a given request. If set to true, and the request attribute specified in the attribute hash options is present, no further hash policies will be used to calculate a hash for the request. - type: boolean - type: object - type: array - strategy: - description: Strategy specifies the policy used to balance requests across the pool of backend pods. Valid policy names are `Random`, `RoundRobin`, `WeightedLeastRequest`, `Cookie`, and `RequestHash`. If an unknown strategy name is specified or no policy is supplied, the default `RoundRobin` policy is used. - type: string - type: object - services: - description: Services are the services to proxy traffic - items: - description: Service defines an Kubernetes Service to proxy traffic. - properties: - mirror: - description: If Mirror is true the Service will receive a read only mirror of the traffic for this route. - type: boolean - name: - description: Name is the name of Kubernetes service to proxy traffic. Names defined here will be used to look up corresponding endpoints which contain the ips to route. - type: string - port: - description: Port (defined as Integer) to proxy traffic to since a service can have multiple defined. - exclusiveMaximum: true - maximum: 65536 - minimum: 1 - type: integer - protocol: - description: Protocol may be used to specify (or override) the protocol used to reach this Service. Values may be tls, h2, h2c. If omitted, protocol-selection falls back on Service annotations. - enum: - - h2 - - h2c - - tls - type: string - requestHeadersPolicy: - description: The policy for managing request headers during proxying. Rewriting the 'Host' header is not supported. - properties: - remove: - description: Remove specifies a list of HTTP header names to remove. - items: - type: string - type: array - set: - description: Set specifies a list of HTTP header values that will be set in the HTTP header. If the header does not exist it will be added, otherwise it will be overwritten with the new value. - items: - description: HeaderValue represents a header name/value pair - properties: - name: - description: Name represents a key of a header - minLength: 1 - type: string - value: - description: Value represents the value of a header specified by a key - minLength: 1 - type: string - required: - - name - - value - type: object - type: array - type: object - responseHeadersPolicy: - description: The policy for managing response headers during proxying. Rewriting the 'Host' header is not supported. - properties: - remove: - description: Remove specifies a list of HTTP header names to remove. - items: - type: string - type: array - set: - description: Set specifies a list of HTTP header values that will be set in the HTTP header. If the header does not exist it will be added, otherwise it will be overwritten with the new value. - items: - description: HeaderValue represents a header name/value pair - properties: - name: - description: Name represents a key of a header - minLength: 1 - type: string - value: - description: Value represents the value of a header specified by a key - minLength: 1 - type: string - required: - - name - - value - type: object - type: array - type: object - validation: - description: UpstreamValidation defines how to verify the backend service's certificate - properties: - caSecret: - description: Name of the Kubernetes secret be used to validate the certificate presented by the backend - type: string - subjectName: - description: Key which is expected to be present in the 'subjectAltName' of the presented certificate - type: string - required: - - caSecret - - subjectName - type: object - weight: - description: Weight defines percentage of traffic to balance traffic - format: int64 - minimum: 0 - type: integer - required: - - name - - port - type: object - type: array - type: object - virtualhost: - description: Virtualhost appears at most once. If it is present, the object is considered to be a "root" HTTPProxy. - properties: - authorization: - description: This field configures an extension service to perform authorization for this virtual host. Authorization can only be configured on virtual hosts that have TLS enabled. If the TLS configuration requires client certificate /validation, the client certificate is always included in the authentication check request. - properties: - authPolicy: - description: AuthPolicy sets a default authorization policy for client requests. This policy will be used unless overridden by individual routes. - properties: - context: - additionalProperties: - type: string - description: Context is a set of key/value pairs that are sent to the authentication server in the check request. If a context is provided at an enclosing scope, the entries are merged such that the inner scope overrides matching keys from the outer scope. - type: object - disabled: - description: When true, this field disables client request authentication for the scope of the policy. - type: boolean - type: object - extensionRef: - description: ExtensionServiceRef specifies the extension resource that will authorize client requests. - properties: - apiVersion: - description: API version of the referent. If this field is not specified, the default "projectcontour.io/v1alpha1" will be used - minLength: 1 - type: string - name: - description: "Name of the referent. \n More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" - minLength: 1 - type: string - namespace: - description: "Namespace of the referent. If this field is not specifies, the namespace of the resource that targets the referent will be used. \n More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/" - minLength: 1 - type: string - type: object - failOpen: - description: If FailOpen is true, the client request is forwarded to the upstream service even if the authorization server fails to respond. This field should not be set in most cases. It is intended for use only while migrating applications from internal authorization to Contour external authorization. - type: boolean - responseTimeout: - description: ResponseTimeout configures maximum time to wait for a check response from the authorization server. Timeout durations are expressed in the Go [Duration format](https://godoc.org/time#ParseDuration). Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". The string "infinity" is also a valid input and specifies no timeout. - pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$ - type: string - required: - - extensionRef - type: object - corsPolicy: - description: Specifies the cross-origin policy to apply to the VirtualHost. - properties: - allowCredentials: - description: Specifies whether the resource allows credentials. - type: boolean - allowHeaders: - description: AllowHeaders specifies the content for the *access-control-allow-headers* header. - items: - description: CORSHeaderValue specifies the value of the string headers returned by a cross-domain request. - pattern: ^[a-zA-Z0-9!#$%&'*+.^_`|~-]+$ - type: string - type: array - allowMethods: - description: AllowMethods specifies the content for the *access-control-allow-methods* header. - items: - description: CORSHeaderValue specifies the value of the string headers returned by a cross-domain request. - pattern: ^[a-zA-Z0-9!#$%&'*+.^_`|~-]+$ - type: string - type: array - allowOrigin: - description: AllowOrigin specifies the origins that will be allowed to do CORS requests. "*" means allow any origin. - items: - type: string - type: array - exposeHeaders: - description: ExposeHeaders Specifies the content for the *access-control-expose-headers* header. - items: - description: CORSHeaderValue specifies the value of the string headers returned by a cross-domain request. - pattern: ^[a-zA-Z0-9!#$%&'*+.^_`|~-]+$ - type: string - type: array - maxAge: - description: MaxAge indicates for how long the results of a preflight request can be cached. MaxAge durations are expressed in the Go [Duration format](https://godoc.org/time#ParseDuration). Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". Only positive values are allowed while 0 disables the cache requiring a preflight OPTIONS check for all cross-origin requests. - type: string - required: - - allowMethods - - allowOrigin - type: object - fqdn: - description: The fully qualified domain name of the root of the ingress tree all leaves of the DAG rooted at this object relate to the fqdn. - type: string - rateLimitPolicy: - description: The policy for rate limiting on the virtual host. - properties: - global: - description: Global defines global rate limiting parameters, i.e. parameters defining descriptors that are sent to an external rate limit service (RLS) for a rate limit decision on each request. - properties: - descriptors: - description: Descriptors defines the list of descriptors that will be generated and sent to the rate limit service. Each descriptor contains 1+ key-value pair entries. - items: - description: RateLimitDescriptor defines a list of key-value pair generators. - properties: - entries: - description: Entries is the list of key-value pair generators. - items: - description: RateLimitDescriptorEntry is a key-value pair generator. Exactly one field on this struct must be non-nil. - properties: - genericKey: - description: GenericKey defines a descriptor entry with a static key and value. - properties: - key: - description: Key defines the key of the descriptor entry. If not set, the key is set to "generic_key". - type: string - value: - description: Value defines the value of the descriptor entry. - minLength: 1 - type: string - type: object - remoteAddress: - description: RemoteAddress defines a descriptor entry with a key of "remote_address" and a value equal to the client's IP address (from x-forwarded-for). - type: object - requestHeader: - description: RequestHeader defines a descriptor entry that's populated only if a given header is present on the request. The descriptor key is static, and the descriptor value is equal to the value of the header. - properties: - descriptorKey: - description: DescriptorKey defines the key to use on the descriptor entry. - minLength: 1 - type: string - headerName: - description: HeaderName defines the name of the header to look for on the request. - minLength: 1 - type: string - type: object - type: object - minItems: 1 - type: array - type: object - minItems: 1 - type: array - type: object - local: - description: Local defines local rate limiting parameters, i.e. parameters for rate limiting that occurs within each Envoy pod as requests are handled. - properties: - burst: - description: Burst defines the number of requests above the requests per unit that should be allowed within a short period of time. - format: int32 - type: integer - requests: - description: Requests defines how many requests per unit of time should be allowed before rate limiting occurs. - format: int32 - minimum: 1 - type: integer - responseHeadersToAdd: - description: ResponseHeadersToAdd is an optional list of response headers to set when a request is rate-limited. - items: - description: HeaderValue represents a header name/value pair - properties: - name: - description: Name represents a key of a header - minLength: 1 - type: string - value: - description: Value represents the value of a header specified by a key - minLength: 1 - type: string - required: - - name - - value - type: object - type: array - responseStatusCode: - description: ResponseStatusCode is the HTTP status code to use for responses to rate-limited requests. Codes must be in the 400-599 range (inclusive). If not specified, the Envoy default of 429 (Too Many Requests) is used. - format: int32 - maximum: 599 - minimum: 400 - type: integer - unit: - description: Unit defines the period of time within which requests over the limit will be rate limited. Valid values are "second", "minute" and "hour". - enum: - - second - - minute - - hour - type: string - required: - - requests - - unit - type: object - type: object - tls: - description: If present the fields describes TLS properties of the virtual host. The SNI names that will be matched on are described in fqdn, the tls.secretName secret must contain a certificate that itself contains a name that matches the FQDN. - properties: - clientValidation: - description: "ClientValidation defines how to verify the client certificate when an external client establishes a TLS connection to Envoy. \n This setting: \n 1. Enables TLS client certificate validation. 2. Requires clients to present a TLS certificate (i.e. not optional validation). 3. Specifies how the client certificate will be validated." - properties: - caSecret: - description: Name of a Kubernetes secret that contains a CA certificate bundle. The client certificate must validate against the certificates in the bundle. - minLength: 1 - type: string - required: - - caSecret - type: object - enableFallbackCertificate: - description: EnableFallbackCertificate defines if the vhost should allow a default certificate to be applied which handles all requests which don't match the SNI defined in this vhost. - type: boolean - minimumProtocolVersion: - description: MinimumProtocolVersion is the minimum TLS version this vhost should negotiate. Valid options are `1.2` (default) and `1.3`. Any other value defaults to TLS 1.2. - type: string - passthrough: - description: Passthrough defines whether the encrypted TLS handshake will be passed through to the backing cluster. Either Passthrough or SecretName must be specified, but not both. - type: boolean - secretName: - description: SecretName is the name of a TLS secret in the current namespace. Either SecretName or Passthrough must be specified, but not both. If specified, the named secret must contain a matching certificate for the virtual host's FQDN. - type: string - type: object - required: - - fqdn - type: object - type: object - status: - description: Status is a container for computed information about the HTTPProxy. - properties: - conditions: - description: "Conditions contains information about the current status of the HTTPProxy, in an upstream-friendly container. \n Contour will update a single condition, `Valid`, that is in normal-true polarity. That is, when `currentStatus` is `valid`, the `Valid` condition will be `status: true`, and vice versa. \n Contour will leave untouched any other Conditions set in this block, in case some other controller wants to add a Condition. \n If you are another controller owner and wish to add a condition, you *should* namespace your condition with a label, like `controller.domain.com/ConditionName`." - items: - description: "DetailedCondition is an extension of the normal Kubernetes conditions, with two extra fields to hold sub-conditions, which provide more detailed reasons for the state (True or False) of the condition. \n `errors` holds information about sub-conditions which are fatal to that condition and render its state False. \n `warnings` holds information about sub-conditions which are not fatal to that condition and do not force the state to be False. \n Remember that Conditions have a type, a status, and a reason. \n The type is the type of the condition, the most important one in this CRD set is `Valid`. `Valid` is a positive-polarity condition: when it is `status: true` there are no problems. \n In more detail, `status: true` means that the object is has been ingested into Contour with no errors. `warnings` may still be present, and will be indicated in the Reason field. There must be zero entries in the `errors` slice in this case. \n `Valid`, `status: false` means that the object has had one or more fatal errors during processing into Contour. The details of the errors will be present under the `errors` field. There must be at least one error in the `errors` slice if `status` is `false`. \n For DetailedConditions of types other than `Valid`, the Condition must be in the negative polarity. When they have `status` `true`, there is an error. There must be at least one entry in the `errors` Subcondition slice. When they have `status` `false`, there are no serious errors, and there must be zero entries in the `errors` slice. In either case, there may be entries in the `warnings` slice. \n Regardless of the polarity, the `reason` and `message` fields must be updated with either the detail of the reason (if there is one and only one entry in total across both the `errors` and `warnings` slices), or `MultipleReasons` if there is more than one entry." - properties: - errors: - description: "Errors contains a slice of relevant error subconditions for this object. \n Subconditions are expected to appear when relevant (when there is a error), and disappear when not relevant. An empty slice here indicates no errors." - items: - description: "SubCondition is a Condition-like type intended for use as a subcondition inside a DetailedCondition. \n It contains a subset of the Condition fields. \n It is intended for warnings and errors, so `type` names should use abnormal-true polarity, that is, they should be of the form \"ErrorPresent: true\". \n The expected lifecycle for these errors is that they should only be present when the error or warning is, and should be removed when they are not relevant." - properties: - message: - description: "Message is a human readable message indicating details about the transition. \n This may be an empty string." - maxLength: 32768 - type: string - reason: - description: "Reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. \n The value should be a CamelCase string. \n This field may not be empty." - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: Status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`. \n This must be in abnormal-true polarity, that is, `ErrorFound` or `controller.io/ErrorFound`. \n The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - message - - reason - - status - - type - type: object - type: array - lastTransitionTime: - description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - warnings: - description: "Warnings contains a slice of relevant warning subconditions for this object. \n Subconditions are expected to appear when relevant (when there is a warning), and disappear when not relevant. An empty slice here indicates no warnings." - items: - description: "SubCondition is a Condition-like type intended for use as a subcondition inside a DetailedCondition. \n It contains a subset of the Condition fields. \n It is intended for warnings and errors, so `type` names should use abnormal-true polarity, that is, they should be of the form \"ErrorPresent: true\". \n The expected lifecycle for these errors is that they should only be present when the error or warning is, and should be removed when they are not relevant." - properties: - message: - description: "Message is a human readable message indicating details about the transition. \n This may be an empty string." - maxLength: 32768 - type: string - reason: - description: "Reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. \n The value should be a CamelCase string. \n This field may not be empty." - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: Status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`. \n This must be in abnormal-true polarity, that is, `ErrorFound` or `controller.io/ErrorFound`. \n The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - message - - reason - - status - - type - type: object - type: array - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - currentStatus: - type: string - description: - type: string - loadBalancer: - description: LoadBalancer contains the current status of the load balancer. - properties: - ingress: - description: Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points. - items: - description: 'LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.' - properties: - hostname: - description: Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers) - type: string - ip: - description: IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers) - type: string - ports: - description: Ports is a list of records of service ports If used, every port defined in the service should have an entry in it - items: - properties: - error: - description: 'Error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use CamelCase names - cloud provider specific error values must have names that comply with the format foo.example.com/CamelCase. --- The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)' - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - port: - description: Port is the port number of the service port of which status is recorded here - format: int32 - type: integer - protocol: - default: TCP - description: 'Protocol is the protocol of the service port of which status is recorded here The supported values are: "TCP", "UDP", "SCTP"' - type: string - required: - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: tlscertificatedelegations.projectcontour.io -spec: - group: projectcontour.io - names: - kind: TLSCertificateDelegation - listKind: TLSCertificateDelegationList - plural: tlscertificatedelegations - shortNames: - - tlscerts - singular: tlscertificatedelegation - preserveUnknownFields: false - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: TLSCertificateDelegation is an TLS Certificate Delegation CRD specification. See design/tls-certificate-delegation.md for details. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: TLSCertificateDelegationSpec defines the spec of the CRD - properties: - delegations: - items: - description: CertificateDelegation maps the authority to reference a secret in the current namespace to a set of namespaces. - properties: - secretName: - description: required, the name of a secret in the current namespace. - type: string - targetNamespaces: - description: required, the namespaces the authority to reference the the secret will be delegated to. If TargetNamespaces is nil or empty, the CertificateDelegation' is ignored. If the TargetNamespace list contains the character, "*" the secret will be delegated to all namespaces. - items: - type: string - type: array - required: - - secretName - - targetNamespaces - type: object - type: array - required: - - delegations - type: object - status: - description: TLSCertificateDelegationStatus allows for the status of the delegation to be presented to the user. - properties: - conditions: - description: "Conditions contains information about the current status of the HTTPProxy, in an upstream-friendly container. \n Contour will update a single condition, `Valid`, that is in normal-true polarity. That is, when `currentStatus` is `valid`, the `Valid` condition will be `status: true`, and vice versa. \n Contour will leave untouched any other Conditions set in this block, in case some other controller wants to add a Condition. \n If you are another controller owner and wish to add a condition, you *should* namespace your condition with a label, like `controller.domain.com\\ConditionName`." - items: - description: "DetailedCondition is an extension of the normal Kubernetes conditions, with two extra fields to hold sub-conditions, which provide more detailed reasons for the state (True or False) of the condition. \n `errors` holds information about sub-conditions which are fatal to that condition and render its state False. \n `warnings` holds information about sub-conditions which are not fatal to that condition and do not force the state to be False. \n Remember that Conditions have a type, a status, and a reason. \n The type is the type of the condition, the most important one in this CRD set is `Valid`. `Valid` is a positive-polarity condition: when it is `status: true` there are no problems. \n In more detail, `status: true` means that the object is has been ingested into Contour with no errors. `warnings` may still be present, and will be indicated in the Reason field. There must be zero entries in the `errors` slice in this case. \n `Valid`, `status: false` means that the object has had one or more fatal errors during processing into Contour. The details of the errors will be present under the `errors` field. There must be at least one error in the `errors` slice if `status` is `false`. \n For DetailedConditions of types other than `Valid`, the Condition must be in the negative polarity. When they have `status` `true`, there is an error. There must be at least one entry in the `errors` Subcondition slice. When they have `status` `false`, there are no serious errors, and there must be zero entries in the `errors` slice. In either case, there may be entries in the `warnings` slice. \n Regardless of the polarity, the `reason` and `message` fields must be updated with either the detail of the reason (if there is one and only one entry in total across both the `errors` and `warnings` slices), or `MultipleReasons` if there is more than one entry." - properties: - errors: - description: "Errors contains a slice of relevant error subconditions for this object. \n Subconditions are expected to appear when relevant (when there is a error), and disappear when not relevant. An empty slice here indicates no errors." - items: - description: "SubCondition is a Condition-like type intended for use as a subcondition inside a DetailedCondition. \n It contains a subset of the Condition fields. \n It is intended for warnings and errors, so `type` names should use abnormal-true polarity, that is, they should be of the form \"ErrorPresent: true\". \n The expected lifecycle for these errors is that they should only be present when the error or warning is, and should be removed when they are not relevant." - properties: - message: - description: "Message is a human readable message indicating details about the transition. \n This may be an empty string." - maxLength: 32768 - type: string - reason: - description: "Reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. \n The value should be a CamelCase string. \n This field may not be empty." - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: Status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`. \n This must be in abnormal-true polarity, that is, `ErrorFound` or `controller.io/ErrorFound`. \n The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - message - - reason - - status - - type - type: object - type: array - lastTransitionTime: - description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - warnings: - description: "Warnings contains a slice of relevant warning subconditions for this object. \n Subconditions are expected to appear when relevant (when there is a warning), and disappear when not relevant. An empty slice here indicates no warnings." - items: - description: "SubCondition is a Condition-like type intended for use as a subcondition inside a DetailedCondition. \n It contains a subset of the Condition fields. \n It is intended for warnings and errors, so `type` names should use abnormal-true polarity, that is, they should be of the form \"ErrorPresent: true\". \n The expected lifecycle for these errors is that they should only be present when the error or warning is, and should be removed when they are not relevant." - properties: - message: - description: "Message is a human readable message indicating details about the transition. \n This may be an empty string." - maxLength: 32768 - type: string - reason: - description: "Reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. \n The value should be a CamelCase string. \n This field may not be empty." - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: Status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`. \n This must be in abnormal-true polarity, that is, `ErrorFound` or `controller.io/ErrorFound`. \n The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - message - - reason - - status - - type - type: object - type: array - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - type: object - required: - - metadata - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: datacatalog - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flyte-pod-webhook - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flyteadmin - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flytepropeller - namespace: flyte ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard - namespace: kubernetes-dashboard ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: contour - namespace: projectcontour ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: contour-certgen - namespace: projectcontour ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: envoy - namespace: projectcontour ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard - namespace: kubernetes-dashboard -rules: -- apiGroups: - - "" - resourceNames: - - kubernetes-dashboard-key-holder - - kubernetes-dashboard-certs - - kubernetes-dashboard-csrf - resources: - - secrets - verbs: - - get - - update - - delete -- apiGroups: - - "" - resourceNames: - - kubernetes-dashboard-settings - resources: - - configmaps - verbs: - - get - - update -- apiGroups: - - "" - resourceNames: - - heapster - - dashboard-metrics-scraper - resources: - - services - verbs: - - proxy -- apiGroups: - - "" - resourceNames: - - heapster - - 'http:heapster:' - - 'https:heapster:' - - dashboard-metrics-scraper - - http:dashboard-metrics-scraper - resources: - - services/proxy - verbs: - - get ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: contour-certgen - namespace: projectcontour -rules: -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - update ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: flyte-pod-webhook - namespace: flyte -rules: -- apiGroups: - - '*' - resources: - - mutatingwebhookconfigurations - - secrets - - pods - - replicasets/finalizers - verbs: - - get - - create - - update - - patch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: flyteadmin - namespace: flyte -rules: -- apiGroups: - - "" - - flyte.lyft.com - - rbac.authorization.k8s.io - resources: - - configmaps - - flyteworkflows - - namespaces - - pods - - resourcequotas - - roles - - rolebindings - - secrets - - services - - serviceaccounts - - spark-role - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: contour -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - create - - get - - update -- apiGroups: - - "" - resources: - - endpoints - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - list -- apiGroups: - - networking.k8s.io - resources: - - ingressclasses - verbs: - - get - - list - - watch -- apiGroups: - - networking.k8s.io - resources: - - ingresses - verbs: - - get - - list - - watch -- apiGroups: - - networking.k8s.io - resources: - - ingresses/status - verbs: - - create - - get - - update -- apiGroups: - - networking.x-k8s.io - resources: - - backendpolicies - - gateways - - httproutes - - tlsroutes - verbs: - - get - - list - - watch -- apiGroups: - - projectcontour.io - resources: - - extensionservices - verbs: - - get - - list - - watch -- apiGroups: - - projectcontour.io - resources: - - extensionservices/status - verbs: - - create - - get - - update -- apiGroups: - - projectcontour.io - resources: - - httpproxies - - tlscertificatedelegations - verbs: - - get - - list - - watch -- apiGroups: - - projectcontour.io - resources: - - httpproxies/status - verbs: - - create - - get - - update ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: flytepropeller -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - update - - delete - - patch -- apiGroups: - - '*' - resources: - - '*' - verbs: - - get - - list - - watch - - create - - update - - delete - - patch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - get - - list - - watch - - create - - delete - - update -- apiGroups: - - flyte.lyft.com - resources: - - flyteworkflows - - flyteworkflows/finalizers - verbs: - - get - - list - - watch - - create - - update - - delete - - patch - - post - - deletecollection ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard -rules: -- apiGroups: - - metrics.k8s.io - resources: - - pods - - nodes - verbs: - - get - - list - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard - namespace: kubernetes-dashboard -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: kubernetes-dashboard -subjects: -- kind: ServiceAccount - name: kubernetes-dashboard - namespace: kubernetes-dashboard ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: contour - namespace: projectcontour -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: contour-certgen -subjects: -- kind: ServiceAccount - name: contour-certgen - namespace: projectcontour ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flyte-pod-webhook - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flyte-pod-webhook -subjects: -- kind: ServiceAccount - name: flyte-pod-webhook - namespace: flyte ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flyteadmin-binding - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flyteadmin -subjects: -- kind: ServiceAccount - name: flyteadmin - namespace: flyte ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flytepropeller - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flytepropeller -subjects: -- kind: ServiceAccount - name: flytepropeller - namespace: flyte ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: contour -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: contour -subjects: -- kind: ServiceAccount - name: contour - namespace: projectcontour ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: kubernetes-dashboard -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: kubernetes-dashboard -subjects: -- kind: ServiceAccount - name: kubernetes-dashboard - namespace: kubernetes-dashboard ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: kubernetes-dashboard-admin -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin -subjects: -- kind: ServiceAccount - name: kubernetes-dashboard - namespace: kubernetes-dashboard ---- -apiVersion: v1 -data: - aa_namespace.yaml: | - apiVersion: v1 - kind: Namespace - metadata: - name: {{ namespace }} - spec: - finalizers: - - kubernetes - ab_project-resource-quota.yaml: "apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }} \nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }} \n limits.memory: {{ projectQuotaMemory }}\n\n" -kind: ConfigMap -metadata: - name: clusterresource-template-dk5mbchdmt - namespace: flyte ---- -apiVersion: v1 -data: - db.yaml: | - database: - port: 5432 - username: postgres - host: postgres - dbname: datacatalog - options: sslmode=disable - logger.yaml: | - logger: - show-source: true - level: 2 - server.yaml: | - datacatalog: - storage-prefix: metadata/datacatalog - metrics-scope: "datacatalog" - profiler-port: 10254 - application: - grpcPort: 8089 - storage.yaml: |+ - storage: - type: minio - connection: - access-key: minio - auth-type: accesskey - secret-key: miniostorage - disable-ssl: true - endpoint: http://minio.flyte.svc.cluster.local:9000 - region: us-east-1 - container: "my-s3-bucket" - -kind: ConfigMap -metadata: - name: datacatalog-config-64k8dg9gck - namespace: flyte ---- -apiVersion: v1 -data: - cluster_resources.yaml: | - cluster_resources: - templatePath: "/etc/flyte/clusterresource/templates" - customData: - - production: - - projectQuotaCpu: - value: "5" - - projectQuotaMemory: - value: "4000Mi" - - staging: - - projectQuotaCpu: - value: "2" - - projectQuotaMemory: - value: "3000Mi" - - development: - - projectQuotaCpu: - value: "4" - - projectQuotaMemory: - value: "3000Mi" - refreshInterval: 1m - db.yaml: | - database: - port: 5432 - username: postgres - host: postgres - dbname: postgres - options: sslmode=disable - domain.yaml: | - domains: - - id: development - name: development - - id: staging - name: staging - - id: production - name: production - logger.yaml: | - logger: - show-source: true - level: 2 - server.yaml: | - server: - httpPort: 8088 - grpcPort: 8089 - security: - # Controls whether to serve requests over SSL/TLS. - secure: false - # Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. - useAuth: false - allowCors: true - allowedOrigins: - # Accepting all domains for Sandbox installation - - "*" - allowedHeaders: - - "Content-Type" - - "flyte-authorization" - auth: - authorizedUris: - # This should point at your public http Uri. - - https://localhost:30081 - # This will be used by internal services in the same namespace as flyteadmin - - http://flyteadmin:80 - # This will be used by internal services in the same cluster but different namespaces - - http://flyteadmin.flyte.svc.cluster.local:80 - - # Controls app authentication config - appAuth: - thirdPartyConfig: - flyteClient: - clientId: flytectl - redirectUri: https://localhost:53593/callback - scopes: - - offline - - all - # Controls user authentication - userAuth: - openId: - baseUrl: https://accounts.google.com - scopes: - - profile - - openid - clientId: 657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com - flyteadmin: - roleNameKey: "iam.amazonaws.com/role" - storage.yaml: |+ - storage: - type: minio - connection: - access-key: minio - auth-type: accesskey - secret-key: miniostorage - disable-ssl: true - endpoint: http://minio.flyte.svc.cluster.local:9000 - region: us-east-1 - container: "my-s3-bucket" - - task_resource_defaults.yaml: | - task_resources: - defaults: - cpu: 100m - memory: 200Mi - storage: 5Mi - limits: - cpu: 2 - memory: 1Gi - storage: 20Mi - gpu: 1 -kind: ConfigMap -metadata: - name: flyte-admin-config-dbg8dt2dgb - namespace: flyte ---- -apiVersion: v1 -data: - BASE_URL: /console - CONFIG_DIR: /etc/flyte/config -kind: ConfigMap -metadata: - name: flyte-console-config - namespace: flyte ---- -apiVersion: v1 -data: - admin.yaml: | - event: - type: admin - rate: 500 - capacity: 1000 - admin: - endpoint: flyteadmin:81 - insecure: true - catalog.yaml: | - catalog-cache: - endpoint: datacatalog:89 - type: datacatalog - insecure: true - copilot.yaml: | - plugins: - k8s: - co-pilot: - name: "flyte-copilot-" - image: "cr.flyte.org/flyteorg/flytecopilot:v0.0.15" - start-timeout: "30s" - core.yaml: | - propeller: - rawoutput-prefix: s3://my-s3-bucket/ - metadata-prefix: metadata/propeller - workers: 4 - max-workflow-retries: 30 - workflow-reeval-duration: 30s - downstream-eval-duration: 30s - limit-namespace: "all" - prof-port: 10254 - metrics-prefix: flyte - enable-admin-launcher: true - leader-election: - lock-config-map: - name: propeller-leader - namespace: flyte - enabled: true - lease-duration: 15s - renew-deadline: 10s - retry-period: 2s - queue: - type: batch - batching-interval: 2s - batch-size: -1 - queue: - type: maxof - rate: 100 - capacity: 1000 - base-delay: 5s - max-delay: 120s - sub-queue: - type: bucket - rate: 10 - capacity: 100 - webhook: - certDir: /etc/webhook/certs - serviceName: flyte-pod-webhook - enabled_plugins.yaml: | - tasks: - task-plugins: - enabled-plugins: - - container - - sidecar - - k8s-array - default-for-task-types: - container: container - sidecar: sidecar - container_array: k8s-array - k8s.yaml: | - plugins: - k8s: - default-env-vars: - - FLYTE_AWS_ENDPOINT: "http://minio.flyte:9000" - - FLYTE_AWS_ACCESS_KEY_ID: minio - - FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage - default-cpus: 100m - default-memory: 200Mi - logger.yaml: | - logger: - show-source: true - level: 2 - resource_manager.yaml: | - propeller: - resourcemanager: - type: noop - storage.yaml: |+ - storage: - type: minio - connection: - access-key: minio - auth-type: accesskey - secret-key: miniostorage - disable-ssl: true - endpoint: http://minio.flyte.svc.cluster.local:9000 - region: us-east-1 - container: "my-s3-bucket" - - task_logs.yaml: | - plugins: - logs: - kubernetes-enabled: true - kubernetes-template-uri: "http://localhost:30082/#/log/{{ .namespace }}/{{ .podName }}/pod?namespace={{ .namespace }}" -kind: ConfigMap -metadata: - name: flyte-propeller-config-g52db28fmc - namespace: flyte ---- -apiVersion: v1 -data: - admin.yaml: | - admin: - clientId: flytepropeller - clientSecretLocation: /etc/secrets/client_secret - endpoint: flyteadmin:81 - insecure: true - event: - capacity: 1000 - rate: 500 - type: admin - db.yaml: | - database: - dbname: postgres - host: postgres - port: 5432 - username: postgres - logger.yaml: | - logger: - level: 4 - show-source: true -kind: ConfigMap -metadata: - labels: - app.kubernetes.io/instance: flyte - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: flytescheduler - helm.sh/chart: flyte-v0.1.10 - name: flyte-scheduler-config - namespace: flyte ---- -apiVersion: v1 -kind: ConfigMap -metadata: - labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard-settings - namespace: kubernetes-dashboard ---- -apiVersion: v1 -data: - contour.yaml: | - # - # server: - # determine which XDS Server implementation to utilize in Contour. - # xds-server-type: contour - # - # Specify the gateway-api Gateway Contour should watch. - # gateway: - # name: contour - # namespace: projectcontour - # - # should contour expect to be running inside a k8s cluster - # incluster: true - # - # path to kubeconfig (if not running inside a k8s cluster) - # kubeconfig: /path/to/.kube/config - # - # Disable RFC-compliant behavior to strip "Content-Length" header if - # "Tranfer-Encoding: chunked" is also set. - # disableAllowChunkedLength: false - # Disable HTTPProxy permitInsecure field - disablePermitInsecure: false - tls: - # minimum TLS version that Contour will negotiate - # minimum-protocol-version: "1.2" - # TLS ciphers to be supported by Envoy TLS listeners when negotiating - # TLS 1.2. - # cipher-suites: - # - '[ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]' - # - '[ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]' - # - 'ECDHE-ECDSA-AES256-GCM-SHA384' - # - 'ECDHE-RSA-AES256-GCM-SHA384' - # Defines the Kubernetes name/namespace matching a secret to use - # as the fallback certificate when requests which don't match the - # SNI defined for a vhost. - fallback-certificate: - # name: fallback-secret-name - # namespace: projectcontour - envoy-client-certificate: - # name: envoy-client-cert-secret-name - # namespace: projectcontour - # The following config shows the defaults for the leader election. - # leaderelection: - # configmap-name: leader-elect - # configmap-namespace: projectcontour - ### Logging options - # Default setting - accesslog-format: envoy - # To enable JSON logging in Envoy - # accesslog-format: json - # The default fields that will be logged are specified below. - # To customise this list, just add or remove entries. - # The canonical list is available at - # https://godoc.org/github.com/projectcontour/contour/internal/envoy#JSONFields - # json-fields: - # - "@timestamp" - # - "authority" - # - "bytes_received" - # - "bytes_sent" - # - "downstream_local_address" - # - "downstream_remote_address" - # - "duration" - # - "method" - # - "path" - # - "protocol" - # - "request_id" - # - "requested_server_name" - # - "response_code" - # - "response_flags" - # - "uber_trace_id" - # - "upstream_cluster" - # - "upstream_host" - # - "upstream_local_address" - # - "upstream_service_time" - # - "user_agent" - # - "x_forwarded_for" - # - # default-http-versions: - # - "HTTP/2" - # - "HTTP/1.1" - # - # The following shows the default proxy timeout settings. - # timeouts: - # request-timeout: infinity - # connection-idle-timeout: 60s - # stream-idle-timeout: 5m - # max-connection-duration: infinity - # delayed-close-timeout: 1s - # connection-shutdown-grace-period: 5s - # - # Envoy cluster settings. - # cluster: - # configure the cluster dns lookup family - # valid options are: auto (default), v4, v6 - # dns-lookup-family: auto - # - # Envoy network settings. - # network: - # Configure the number of additional ingress proxy hops from the - # right side of the x-forwarded-for HTTP header to trust. - # num-trusted-hops: 0 - # - # Configure an optional global rate limit service. - # rateLimitService: - # Identifies the extension service defining the rate limit service, - # formatted as /. - # extensionService: projectcontour/ratelimit - # Defines the rate limit domain to pass to the rate limit service. - # Acts as a container for a set of rate limit definitions within - # the RLS. - # domain: contour - # Defines whether to allow requests to proceed when the rate limit - # service fails to respond with a valid rate limit decision within - # the timeout defined on the extension service. - # failOpen: false -kind: ConfigMap -metadata: - name: contour - namespace: projectcontour ---- -apiVersion: v1 -data: - pass.txt: YXdlc29tZXNhdWNl -kind: Secret -metadata: - name: db-pass-9dgchhk2bm - namespace: flyte -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - name: flyte-admin-auth - namespace: flyte -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - name: flyte-pod-webhook - namespace: flyte -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - name: flyte-secret-auth - namespace: flyte -stringData: - client_secret: foobar -type: Opaque ---- -apiVersion: v1 -data: - password: bXl1c2Vy - user_secret: bXlzZWNyZXQ= - username: bXl1c2Vy -kind: Secret -metadata: - name: user-info - namespace: flyte -type: Opaque ---- -apiVersion: v1 -data: - csrf: "" -kind: Secret -metadata: - labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard-csrf - namespace: kubernetes-dashboard -type: Opaque ---- -apiVersion: v1 -kind: Secret -metadata: - labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard-key-holder - namespace: kubernetes-dashboard -type: Opaque ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - contour.heptio.com/upstream-protocol.h2c: grpc - name: datacatalog - namespace: flyte -spec: - ports: - - name: http - port: 88 - protocol: TCP - targetPort: 8088 - - name: grpc - port: 89 - protocol: TCP - targetPort: 8089 - selector: - app: datacatalog ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - projectcontour.io/upstream-protocol.h2c: grpc - name: flyte-pod-webhook - namespace: flyte -spec: - ports: - - name: https - port: 443 - protocol: TCP - targetPort: 9443 - selector: - app: flyte-pod-webhook ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - projectcontour.io/upstream-protocol.h2c: grpc - name: flyteadmin - namespace: flyte -spec: - ports: - - name: redoc - port: 87 - protocol: TCP - targetPort: 8087 - - name: http - port: 80 - protocol: TCP - targetPort: 8088 - - name: grpc - port: 81 - protocol: TCP - targetPort: 8089 - selector: - app: flyteadmin ---- -apiVersion: v1 -kind: Service -metadata: - name: flyteconsole - namespace: flyte -spec: - ports: - - port: 80 - protocol: TCP - targetPort: 8080 - selector: - app: flyteconsole ---- -apiVersion: v1 -kind: Service -metadata: - name: minio - namespace: flyte -spec: - externalName: minio - ports: - - name: minio-api - port: 9000 - - name: minio-console - port: 9001 - selector: - app: minio ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: minio - name: minio-direct - namespace: flyte -spec: - ports: - - nodePort: 30084 - port: 9000 - protocol: TCP - selector: - app: minio - type: NodePort ---- -apiVersion: v1 -kind: Service -metadata: - name: postgres - namespace: flyte -spec: - ports: - - port: 5432 - selector: - app: postgres ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: postgres - name: postgres-direct - namespace: flyte -spec: - ports: - - nodePort: 30083 - port: 5432 - protocol: TCP - selector: - app: postgres - type: NodePort ---- -apiVersion: v1 -kind: Service -metadata: - labels: - k8s-app: dashboard-metrics-scraper - name: dashboard-metrics-scraper - namespace: kubernetes-dashboard -spec: - ports: - - port: 8000 - targetPort: 8000 - selector: - k8s-app: dashboard-metrics-scraper ---- -apiVersion: v1 -kind: Service -metadata: - labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard - namespace: kubernetes-dashboard -spec: - ports: - - name: http - nodePort: 30082 - port: 80 - protocol: TCP - targetPort: 9090 - selector: - k8s-app: kubernetes-dashboard - type: NodePort ---- -apiVersion: v1 -kind: Service -metadata: - name: contour - namespace: projectcontour -spec: - ports: - - name: xds - port: 8001 - protocol: TCP - targetPort: 8001 - selector: - app: contour - type: ClusterIP ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp - name: envoy - namespace: projectcontour -spec: - externalTrafficPolicy: Local - ports: - - name: http - nodePort: 30081 - port: 80 - protocol: TCP - - name: https - port: 443 - protocol: TCP - selector: - app: envoy - type: NodePort ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: datacatalog - name: datacatalog - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: datacatalog - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: datacatalog - app.kubernetes.io/name: datacatalog - app.kubernetes.io/version: 0.3.0 - spec: - containers: - - command: - - datacatalog - - --config - - /etc/datacatalog/config/*.yaml - - serve - image: cr.flyte.org/flyteorg/datacatalog:v1.0.51 - imagePullPolicy: IfNotPresent - name: datacatalog - ports: - - containerPort: 8088 - - containerPort: 8089 - volumeMounts: - - mountPath: /etc/datacatalog/config - name: config-volume - - mountPath: /etc/db - name: db-pass - initContainers: - - command: - - datacatalog - - --config - - /etc/datacatalog/config/*.yaml - - migrate - - run - image: cr.flyte.org/flyteorg/datacatalog:v1.0.51 - imagePullPolicy: IfNotPresent - name: run-migrations - volumeMounts: - - mountPath: /etc/datacatalog/config - name: config-volume - - mountPath: /etc/db - name: db-pass - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: datacatalog - volumes: - - emptyDir: {} - name: shared-data - - configMap: - name: datacatalog-config-64k8dg9gck - name: config-volume - - name: db-pass - secret: - secretName: db-pass-9dgchhk2bm ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flyte-pod-webhook - name: flyte-pod-webhook - namespace: flyte -spec: - selector: - matchLabels: - app: flyte-pod-webhook - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flyte-pod-webhook - app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: 0.5.13 - spec: - containers: - - args: - - webhook - - --config - - /etc/flyte/config/*.yaml - command: - - flytepropeller - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.1.116 - imagePullPolicy: IfNotPresent - name: webhook - volumeMounts: - - mountPath: /etc/secrets/user-info - name: sample-secrets - readOnly: true - - mountPath: /etc/flyte/config - name: config-volume - readOnly: true - - mountPath: /etc/webhook/certs - name: webhook-certs - readOnly: true - initContainers: - - args: - - webhook - - init-certs - - --config - - /etc/flyte/config/*.yaml - command: - - flytepropeller - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.1.116 - imagePullPolicy: IfNotPresent - name: generate-secrets - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: flyte-pod-webhook - volumes: - - name: sample-secrets - secret: - secretName: user-info - - configMap: - name: flyte-propeller-config-g52db28fmc - name: config-volume - - name: webhook-certs - secret: - secretName: flyte-pod-webhook ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flyteadmin - name: flyteadmin - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: flyteadmin - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flyteadmin - app.kubernetes.io/name: flyteadmin - app.kubernetes.io/version: 0.4.13 - spec: - containers: - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - serve - image: cr.flyte.org/flyteorg/flyteadmin:v1.1.118 - imagePullPolicy: IfNotPresent - name: flyteadmin - ports: - - containerPort: 8088 - - containerPort: 8089 - resources: - limits: - cpu: "0.1" - ephemeral-storage: 100Mi - memory: 200Mi - volumeMounts: - - mountPath: /srv/flyte - name: shared-data - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - mountPath: /etc/secrets/ - name: auth - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - clusterresource - - run - image: cr.flyte.org/flyteorg/flyteadmin:v1.1.118 - imagePullPolicy: IfNotPresent - name: sync-cluster-resources-goroutine - volumeMounts: - - mountPath: /etc/flyte/clusterresource/templates - name: resource-templates - - mountPath: /etc/flyte/config - name: config-volume - - command: - - sh - - -c - - ln -s /usr/share/nginx/html /usr/share/nginx/html/openapi && sh /usr/local/bin/docker-run.sh - env: - - name: PAGE_TITLE - value: Flyte Admin OpenAPI - - name: SPEC_URL - value: /api/v1/openapi - - name: PORT - value: "8087" - image: docker.io/redocly/redoc - imagePullPolicy: IfNotPresent - name: redoc - ports: - - containerPort: 8087 - resources: - limits: - cpu: "0.1" - memory: 200Mi - initContainers: - - command: - - sh - - -c - - until pg_isready -h postgres -p 5432; do echo waiting for database; sleep 2; done; - image: ecr.flyte.org/ubuntu/postgres:13-21.04_beta - name: check-db-ready - securityContext: - runAsUser: 999 - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - migrate - - run - image: cr.flyte.org/flyteorg/flyteadmin:v1.1.118 - imagePullPolicy: IfNotPresent - name: run-migrations - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - migrate - - seed-projects - - flytesnacks - - flyteexamples - image: cr.flyte.org/flyteorg/flyteadmin:v1.1.118 - imagePullPolicy: IfNotPresent - name: seed-projects - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - clusterresource - - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.1.118 - imagePullPolicy: IfNotPresent - name: sync-cluster-resources - volumeMounts: - - mountPath: /etc/flyte/clusterresource/templates - name: resource-templates - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - - args: - - flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --fromPath /etc/scratch/secrets - command: - - /bin/sh - - -c - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flyteadmin:v1.1.118 - imagePullPolicy: IfNotPresent - name: generate-secrets - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/scratch - name: scratch - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: flyteadmin - volumes: - - configMap: - name: clusterresource-template-dk5mbchdmt - name: resource-templates - - emptyDir: {} - name: shared-data - - emptyDir: {} - name: scratch - - configMap: - name: flyte-admin-config-dbg8dt2dgb - name: config-volume - - name: db-pass - secret: - secretName: db-pass-9dgchhk2bm - - name: auth - secret: - secretName: flyte-admin-auth ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flyteconsole - name: flyteconsole - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: flyteconsole - template: - metadata: - labels: - app: flyteconsole - app.kubernetes.io/name: flyteconsole - app.kubernetes.io/version: 0.19.0 - spec: - containers: - - envFrom: - - configMapRef: - name: flyte-console-config - image: cr.flyte.org/flyteorg/flyteconsole:v1.9.2 - name: flyteconsole - ports: - - containerPort: 8080 - volumeMounts: - - mountPath: /srv/flyte - name: shared-data - securityContext: - fsGroupChangePolicy: Always - runAsUser: 1000 - volumes: - - emptyDir: {} - name: shared-data ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flytepropeller - name: flytepropeller - namespace: flyte -spec: - selector: - matchLabels: - app: flytepropeller - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flytepropeller - app.kubernetes.io/name: flytepropeller - app.kubernetes.io/version: 0.7.1 - spec: - containers: - - args: - - --config - - /etc/flyte/config/*.yaml - command: - - flytepropeller - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: cr.flyte.org/flyteorg/flytepropeller:v1.1.116 - imagePullPolicy: IfNotPresent - name: flytepropeller - ports: - - containerPort: 10254 - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/secrets/ - name: auth - securityContext: - fsGroup: 65534 - fsGroupChangePolicy: Always - runAsUser: 1001 - serviceAccountName: flytepropeller - volumes: - - configMap: - name: flyte-propeller-config-g52db28fmc - name: config-volume - - name: auth - secret: - secretName: flyte-secret-auth ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: flytescheduler - name: flytescheduler - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: flytescheduler - template: - metadata: - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - labels: - app: flytescheduler - app.kubernetes.io/name: flytescheduler - app.kubernetes.io/version: 0.3.4 - spec: - containers: - - command: - - flytescheduler - - run - - --config - - /etc/flyte/config/*.yaml - image: cr.flyte.org/flyteorg/flytescheduler:v0.6.49 - imagePullPolicy: IfNotPresent - name: flytescheduler - resources: - limits: - cpu: 250m - ephemeral-storage: 100Mi - memory: 500Mi - requests: - cpu: 10m - ephemeral-storage: 50Mi - memory: 50Mi - volumeMounts: - - mountPath: /etc/secrets/ - name: auth - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - initContainers: - - command: - - flytescheduler - - precheck - - --config - - /etc/flyte/config/*.yaml - image: cr.flyte.org/flyteorg/flytescheduler:v0.6.49 - imagePullPolicy: IfNotPresent - name: flytescheduler-check - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - serviceAccountName: flyteadmin - volumes: - - configMap: - name: flyte-scheduler-config - name: config-volume - - name: db-pass - secret: - secretName: db-pass-9dgchhk2bm - - name: auth - secret: - secretName: flyte-secret-auth ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: minio - namespace: flyte -spec: - selector: - matchLabels: - app: minio - template: - metadata: - labels: - app: minio - spec: - containers: - - env: - - name: MINIO_ACCESS_KEY - value: minio - - name: MINIO_SECRET_KEY - value: miniostorage - - name: MINIO_DEFAULT_BUCKETS - value: my-s3-bucket - image: ecr.flyte.org/bitnami/minio:2021.10.13-debian-10-r0 - name: minio - ports: - - containerPort: 9000 - name: minio - - containerPort: 9001 - name: minio-console - volumeMounts: - - mountPath: /data - name: minio-storage - securityContext: - fsGroup: 1001 - fsGroupChangePolicy: OnRootMismatch - runAsUser: 1001 - volumes: - - emptyDir: {} - name: minio-storage ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: postgres - namespace: flyte -spec: - selector: - matchLabels: - app: postgres - template: - metadata: - labels: - app: postgres - spec: - containers: - - env: - - name: POSTGRES_HOST_AUTH_METHOD - value: trust - image: ecr.flyte.org/ubuntu/postgres:13-21.04_beta - name: postgres - ports: - - containerPort: 5432 - name: postgres - volumeMounts: - - mountPath: /var/lib/postgresql/data - name: postgres-storage - volumes: - - emptyDir: {} - name: postgres-storage ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - k8s-app: dashboard-metrics-scraper - name: dashboard-metrics-scraper - namespace: kubernetes-dashboard -spec: - replicas: 1 - revisionHistoryLimit: 10 - selector: - matchLabels: - k8s-app: dashboard-metrics-scraper - template: - metadata: - annotations: - seccomp.security.alpha.kubernetes.io/pod: runtime/default - labels: - k8s-app: dashboard-metrics-scraper - spec: - containers: - - image: kubernetesui/metrics-scraper:v1.0.6 - livenessProbe: - httpGet: - path: / - port: 8000 - scheme: HTTP - initialDelaySeconds: 30 - timeoutSeconds: 30 - name: dashboard-metrics-scraper - ports: - - containerPort: 8000 - protocol: TCP - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - runAsGroup: 2001 - runAsUser: 1001 - volumeMounts: - - mountPath: /tmp - name: tmp-volume - nodeSelector: - kubernetes.io/os: linux - serviceAccountName: kubernetes-dashboard - tolerations: - - effect: NoSchedule - key: node-role.kubernetes.io/master - volumes: - - emptyDir: {} - name: tmp-volume ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard - namespace: kubernetes-dashboard -spec: - replicas: 1 - revisionHistoryLimit: 10 - selector: - matchLabels: - k8s-app: kubernetes-dashboard - template: - metadata: - labels: - k8s-app: kubernetes-dashboard - spec: - containers: - - args: - - --namespace=kubernetes-dashboard - - --enable-insecure-login - - --enable-skip-login - - --disable-settings-authorizer - image: kubernetesui/dashboard:v2.2.0 - livenessProbe: - httpGet: - path: / - port: 9090 - initialDelaySeconds: 30 - timeoutSeconds: 30 - name: kubernetes-dashboard - ports: - - containerPort: 9090 - protocol: TCP - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - runAsGroup: 2001 - runAsUser: 1001 - volumeMounts: - - mountPath: /tmp - name: tmp-volume - nodeSelector: - kubernetes.io/os: linux - serviceAccountName: kubernetes-dashboard - tolerations: - - effect: NoSchedule - key: node-role.kubernetes.io/master - volumes: - - emptyDir: {} - name: tmp-volume ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: contour - name: contour - namespace: projectcontour -spec: - replicas: 2 - selector: - matchLabels: - app: contour - strategy: - rollingUpdate: - maxSurge: 50% - type: RollingUpdate - template: - metadata: - annotations: - prometheus.io/port: "8000" - prometheus.io/scrape: "true" - labels: - app: contour - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchLabels: - app: contour - topologyKey: kubernetes.io/hostname - weight: 100 - containers: - - args: - - serve - - --incluster - - --xds-address=0.0.0.0 - - --xds-port=8001 - - --envoy-service-http-port=80 - - --envoy-service-https-port=443 - - --contour-cafile=/certs/ca.crt - - --contour-cert-file=/certs/tls.crt - - --contour-key-file=/certs/tls.key - - --config-path=/config/contour.yaml - command: - - contour - env: - - name: CONTOUR_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.name - image: docker.io/projectcontour/contour:v1.13.1 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: 8000 - name: contour - ports: - - containerPort: 8001 - name: xds - protocol: TCP - - containerPort: 8000 - name: metrics - protocol: TCP - - containerPort: 6060 - name: debug - protocol: TCP - readinessProbe: - initialDelaySeconds: 15 - periodSeconds: 10 - tcpSocket: - port: 8001 - volumeMounts: - - mountPath: /certs - name: contourcert - readOnly: true - - mountPath: /config - name: contour-config - readOnly: true - dnsPolicy: ClusterFirst - securityContext: - runAsGroup: 65534 - runAsNonRoot: true - runAsUser: 65534 - serviceAccountName: contour - volumes: - - name: contourcert - secret: - secretName: contourcert - - configMap: - defaultMode: 420 - items: - - key: contour.yaml - path: contour.yaml - name: contour - name: contour-config ---- -apiVersion: batch/v1beta1 -kind: CronJob -metadata: - name: syncresources - namespace: flyte -spec: - jobTemplate: - spec: - template: - spec: - containers: - - command: - - flyteadmin - - --config - - /etc/flyte/config/*.yaml - - clusterresource - - sync - image: cr.flyte.org/flyteorg/flyteadmin:v1.1.118 - imagePullPolicy: IfNotPresent - name: sync-cluster-resources - volumeMounts: - - mountPath: /etc/flyte/clusterresource/templates - name: resource-templates - - mountPath: /etc/flyte/config - name: config-volume - - mountPath: /etc/db - name: db-pass - restartPolicy: OnFailure - serviceAccountName: flyteadmin - volumes: - - configMap: - name: clusterresource-template-dk5mbchdmt - name: resource-templates - - configMap: - name: flyte-admin-config-dbg8dt2dgb - name: config-volume - - name: db-pass - secret: - secretName: db-pass-9dgchhk2bm - schedule: '*/1 * * * *' ---- -apiVersion: apps/v1 -kind: DaemonSet -metadata: - labels: - app: envoy - name: envoy - namespace: projectcontour -spec: - selector: - matchLabels: - app: envoy - template: - metadata: - annotations: - prometheus.io/path: /stats/prometheus - prometheus.io/port: "8002" - prometheus.io/scrape: "true" - labels: - app: envoy - spec: - automountServiceAccountToken: false - containers: - - args: - - envoy - - shutdown-manager - command: - - /bin/contour - image: docker.io/projectcontour/contour:v1.13.1 - imagePullPolicy: IfNotPresent - lifecycle: - preStop: - exec: - command: - - /bin/contour - - envoy - - shutdown - livenessProbe: - httpGet: - path: /healthz - port: 8090 - initialDelaySeconds: 3 - periodSeconds: 10 - name: shutdown-manager - - args: - - -c - - /config/envoy.json - - --service-cluster $(CONTOUR_NAMESPACE) - - --service-node $(ENVOY_POD_NAME) - - --log-level info - command: - - envoy - env: - - name: CONTOUR_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: ENVOY_POD_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.name - image: docker.io/envoyproxy/envoy:v1.17.1 - imagePullPolicy: IfNotPresent - lifecycle: - preStop: - httpGet: - path: /shutdown - port: 8090 - scheme: HTTP - name: envoy - ports: - - containerPort: 80 - hostPort: 80 - name: http - protocol: TCP - - containerPort: 443 - hostPort: 443 - name: https - protocol: TCP - readinessProbe: - httpGet: - path: /ready - port: 8002 - initialDelaySeconds: 3 - periodSeconds: 4 - volumeMounts: - - mountPath: /config - name: envoy-config - readOnly: true - - mountPath: /certs - name: envoycert - readOnly: true - initContainers: - - args: - - bootstrap - - /config/envoy.json - - --xds-address=contour - - --xds-port=8001 - - --xds-resource-version=v3 - - --resources-dir=/config/resources - - --envoy-cafile=/certs/ca.crt - - --envoy-cert-file=/certs/tls.crt - - --envoy-key-file=/certs/tls.key - command: - - contour - env: - - name: CONTOUR_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: docker.io/projectcontour/contour:v1.13.1 - imagePullPolicy: IfNotPresent - name: envoy-initconfig - volumeMounts: - - mountPath: /config - name: envoy-config - - mountPath: /certs - name: envoycert - readOnly: true - restartPolicy: Always - serviceAccountName: envoy - terminationGracePeriodSeconds: 300 - volumes: - - emptyDir: {} - name: envoy-config - - name: envoycert - secret: - secretName: envoycert - updateStrategy: - rollingUpdate: - maxUnavailable: 10% - type: RollingUpdate ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: contour-certgen-v1.13.1 - namespace: projectcontour -spec: - backoffLimit: 1 - completions: 1 - parallelism: 1 - template: - metadata: - labels: - app: contour-certgen - spec: - containers: - - command: - - contour - - certgen - - --kube - - --incluster - - --overwrite - - --secrets-format=compact - - --namespace=$(CONTOUR_NAMESPACE) - env: - - name: CONTOUR_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: docker.io/projectcontour/contour:v1.13.1 - imagePullPolicy: Always - name: contour - restartPolicy: Never - securityContext: - runAsGroup: 65534 - runAsNonRoot: true - runAsUser: 65534 - serviceAccountName: contour-certgen - ttlSecondsAfterFinished: 0 ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - annotations: - nginx.ingress.kubernetes.io/app-root: /console - nginx.ingress.kubernetes.io/ssl-redirect: "false" - name: flytesystem - namespace: flyte -spec: - rules: - - http: - paths: - - backend: - service: - name: flyteconsole - port: - number: 80 - path: /__webpack_hmr - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.AdminService - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.AuthMetadataService - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.IdentityService - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.SignalService - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 87 - path: /openapi - pathType: ImplementationSpecific - - backend: - service: - name: flyteconsole - port: - number: 80 - path: /console - pathType: ImplementationSpecific - - backend: - service: - name: flyteconsole - port: - number: 80 - path: /console/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /api - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /api/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /healthcheck - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /v1/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 87 - path: /openapi/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /.well-known/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /login - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /login/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /logout - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /logout/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /callback - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /callback/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /me - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /config - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /config/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /oauth2 - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 80 - path: /oauth2/* - pathType: ImplementationSpecific ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - annotations: - nginx.ingress.kubernetes.io/ssl-redirect: "false" - name: minio - namespace: flyte -spec: - rules: - - http: - paths: - - backend: - service: - name: minio - port: - number: 9001 - path: /minio - pathType: ImplementationSpecific diff --git a/docs/community/contribute.rst b/docs/community/contribute.rst index e866be5a2c9..993cb6bca52 100644 --- a/docs/community/contribute.rst +++ b/docs/community/contribute.rst @@ -151,7 +151,7 @@ To understand how the below components interact with each other, refer to :ref:` * - `Repo `__ * - **Purpose**: Deployment, Documentation, and Issues - * - **Languages**: Kustomize & RST + * - **Languages**: RST To build the Flyte docs locally you will need the following prerequisites: diff --git a/docs/deployment/configuration/customizable_resources.rst b/docs/deployment/configuration/customizable_resources.rst index 6fb1318ac65..29bb7c8ca98 100644 --- a/docs/deployment/configuration/customizable_resources.rst +++ b/docs/deployment/configuration/customizable_resources.rst @@ -170,7 +170,7 @@ apply. .. note:: The template values, for example, ``projectQuotaCpu`` or ``projectQuotaMemory`` are free-form strings. - Ensure that they match the template placeholders in your `template file `__ + Ensure that they match the template placeholders in your values file (e.g. `values-eks.yaml `__) for your changes to take effect and custom values to be substituted. You can view all custom cluster-resource-attributes by visiting ``protocol://`` diff --git a/docs/deployment/deployment/index.rst b/docs/deployment/deployment/index.rst index eb06d0a6c0c..0a44f437ef4 100644 --- a/docs/deployment/deployment/index.rst +++ b/docs/deployment/deployment/index.rst @@ -93,8 +93,7 @@ There are three different paths for deploying a Flyte cluster: Helm ==== -Flyte uses `Helm `__ as the K8s release packaging solution, though you may still see some old -`Kustomize `__ artifacts in the `flyte `__ repo. The core Flyte +Flyte uses `Helm `__ as the K8s release packaging solution. The core Flyte team maintains Helm charts that correspond with the latter two deployment paths. .. note:: diff --git a/kustomize/README.md b/kustomize/README.md deleted file mode 100644 index 69a9c10d0ce..00000000000 --- a/kustomize/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Install Flyte using Kustomize -Flyte can be deployed to a kubernetes cluster using a generated deployment yaml file. This file is generated using [Kustomize](https://kubectl.docs.kubernetes.io/guides/introduction/kustomize/). -Please refer to Kustomize documentation to see how it works. - -In brief, Kustomize allows composing a deployment yaml using multiple components. In Flyte all the core components are listed under [Base Components](./base). The Base components also consist of -a composed set of components that can be deployed to a [Single Kubernetes cluster](./base/single_cluster). This deployment configures various components using [Flyte Configuration -system](todo). - -The *Single Cluster* configuration on its own is not deployable. But individual [overlays](./overlays) are deployable. - -Refer to -1. [Base Components](./base): If you want to build your own overlay start here -1. [overlays](./overlays): If you want to build on top of an existing overlay start here diff --git a/kustomize/base/README.md b/kustomize/base/README.md deleted file mode 100644 index b0bb224d24a..00000000000 --- a/kustomize/base/README.md +++ /dev/null @@ -1,19 +0,0 @@ -[Back to main menu](../) -# Base Components for Flyte -These deployments provide individual deployment units of the Flyte Backend. - -As a user it might be preferable to use the `single_cluster` deployment base to create an overlay on top of, or directly edit on top of one of the existing overlays. - -## To create a new flyte overlay for one K8s cluster - Start here -- [Single Cluster Flyte Deployment configuration](./single_cluster) - -## To create a completely custom overlay refer to components -1. FlyteAdmin [Deployment](./admindeployment) | [ServiceAccount](./adminserviceaccount) -1. [Core Flyte namespace creation](./namespace) -1. [FlytePropeller](./propeller) & its [CRD](./wf_crd) -1. [DataCatalog](./datacatalog) -1. [FlyteConsole](./console) -1. [Overall Ingress for Flyte (optional)](./ingress) -1. [Additional plugin components for Flyte using K8s operators](./operators) - diff --git a/kustomize/base/addons/cloudsqlproxy/deployment.yaml b/kustomize/base/addons/cloudsqlproxy/deployment.yaml deleted file mode 100644 index dda31d1004a..00000000000 --- a/kustomize/base/addons/cloudsqlproxy/deployment.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cloudsqlproxy - namespace: flyte - labels: - app: cloudsqlproxy -spec: - replicas: 1 - selector: - matchLabels: - app: cloudsqlproxy - template: - metadata: - labels: - app: cloudsqlproxy - spec: - containers: - - name: cloudsql-proxy - image: gcr.io/cloudsql-docker/gce-proxy:1.16 - imagePullPolicy: IfNotPresent - # TODO: replace with the GCP project ID and with the region where - # Cloud SQL runs - command: ["/cloud_sql_proxy", "-instances=::flyte=tcp:0.0.0.0:5432"] - ports: - - containerPort: 5432 diff --git a/kustomize/base/addons/cloudsqlproxy/kustomization.yaml b/kustomize/base/addons/cloudsqlproxy/kustomization.yaml deleted file mode 100644 index 6d1374a18e3..00000000000 --- a/kustomize/base/addons/cloudsqlproxy/kustomization.yaml +++ /dev/null @@ -1,3 +0,0 @@ -resources: - - deployment.yaml - - service.yaml diff --git a/kustomize/base/addons/cloudsqlproxy/service.yaml b/kustomize/base/addons/cloudsqlproxy/service.yaml deleted file mode 100644 index 68ba5d2213d..00000000000 --- a/kustomize/base/addons/cloudsqlproxy/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: cloudsqlproxy - namespace: flyte -spec: - selector: - app: cloudsqlproxy - ports: - - name: http - protocol: TCP - port: 5432 diff --git a/kustomize/base/addons/contour_ingress_controller/kustomization.yaml b/kustomize/base/addons/contour_ingress_controller/kustomization.yaml deleted file mode 100644 index e75e1378049..00000000000 --- a/kustomize/base/addons/contour_ingress_controller/kustomization.yaml +++ /dev/null @@ -1,4 +0,0 @@ -resources: -- https://raw.githubusercontent.com/projectcontour/contour/release-1.13/examples/render/contour.yaml -patchesStrategicMerge: -- service.yaml diff --git a/kustomize/base/addons/contour_ingress_controller/service.yaml b/kustomize/base/addons/contour_ingress_controller/service.yaml deleted file mode 100644 index a848798e11d..00000000000 --- a/kustomize/base/addons/contour_ingress_controller/service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Service -apiVersion: v1 -kind: Service -metadata: - name: envoy - namespace: projectcontour -spec: - # use NodePort to make sure the service is accessible - type: NodePort - ports: - - port: 80 - name: http - protocol: TCP - nodePort: 30081 diff --git a/kustomize/base/addons/database/database.yaml b/kustomize/base/addons/database/database.yaml deleted file mode 100644 index de17063c4cf..00000000000 --- a/kustomize/base/addons/database/database.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: postgres - namespace: flyte -spec: - selector: - matchLabels: - app: postgres - template: - metadata: - labels: - app: postgres - spec: - volumes: - - name: postgres-storage - emptyDir: {} - containers: - - image: postgres - name: postgres - env: - - name: POSTGRES_HOST_AUTH_METHOD - value: trust - ports: - - containerPort: 5432 - name: postgres - volumeMounts: - - name: postgres-storage - mountPath: /var/lib/postgresql/data ---- -apiVersion: v1 -kind: Service -metadata: - name: postgres - namespace: flyte -spec: - ports: - - port: 5432 - selector: - app: postgres diff --git a/kustomize/base/addons/database/kustomization.yaml b/kustomize/base/addons/database/kustomization.yaml deleted file mode 100644 index ca2ede8d46f..00000000000 --- a/kustomize/base/addons/database/kustomization.yaml +++ /dev/null @@ -1,2 +0,0 @@ -resources: -- database.yaml diff --git a/kustomize/base/addons/kubernetes_dashboard/clusterrolebinding.yaml b/kustomize/base/addons/kubernetes_dashboard/clusterrolebinding.yaml deleted file mode 100644 index 76fd3fc503c..00000000000 --- a/kustomize/base/addons/kubernetes_dashboard/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: kubernetes-dashboard-admin -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin -subjects: -- kind: ServiceAccount - name: kubernetes-dashboard - namespace: kubernetes-dashboard diff --git a/kustomize/base/addons/kubernetes_dashboard/deployment.yaml b/kustomize/base/addons/kubernetes_dashboard/deployment.yaml deleted file mode 100644 index 49299fec087..00000000000 --- a/kustomize/base/addons/kubernetes_dashboard/deployment.yaml +++ /dev/null @@ -1,15 +0,0 @@ -kind: Deployment -apiVersion: apps/v1 -metadata: - name: kubernetes-dashboard - namespace: kubernetes-dashboard -spec: - template: - spec: - containers: - - name: kubernetes-dashboard - args: - - --namespace=kubernetes-dashboard - - --enable-insecure-login - - --enable-skip-login - - --disable-settings-authorizer diff --git a/kustomize/base/addons/kubernetes_dashboard/kustomization.yaml b/kustomize/base/addons/kubernetes_dashboard/kustomization.yaml deleted file mode 100644 index 22384dfe0f9..00000000000 --- a/kustomize/base/addons/kubernetes_dashboard/kustomization.yaml +++ /dev/null @@ -1,7 +0,0 @@ -resources: - # TODO (jeev): Figure out how to rev this automatically -- https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/alternative.yaml -- clusterrolebinding.yaml -patchesStrategicMerge: -- deployment.yaml -- service.yaml diff --git a/kustomize/base/addons/kubernetes_dashboard/service.yaml b/kustomize/base/addons/kubernetes_dashboard/service.yaml deleted file mode 100644 index c08a9308c85..00000000000 --- a/kustomize/base/addons/kubernetes_dashboard/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: kubernetes-dashboard - namespace: kubernetes-dashboard -spec: - type: NodePort - ports: - - port: 80 - name: http - protocol: TCP - nodePort: 30082 diff --git a/kustomize/base/addons/redis/deployment.yaml b/kustomize/base/addons/redis/deployment.yaml deleted file mode 100644 index 1f1381dae8e..00000000000 --- a/kustomize/base/addons/redis/deployment.yaml +++ /dev/null @@ -1,59 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: redis - namespace: flyte -spec: - replicas: 1 - selector: - matchLabels: - app: redis-resource-manager - serviceName: redis-resource-manager - template: - metadata: - labels: - app: redis-resource-manager - spec: - containers: - - env: - - name: REDIS_PASSWORD - value: mypassword - image: redis - imagePullPolicy: IfNotPresent - livenessProbe: - exec: - command: - - redis-cli - - ping - failureThreshold: 3 - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - name: redis-resource-manager - ports: - - containerPort: 6379 - name: redis - protocol: TCP - readinessProbe: - exec: - command: - - redis-cli - - ping - failureThreshold: 3 - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - resources: - requests: - cpu: 200m - memory: 128Mi - volumeMounts: - - mountPath: /bitnami - name: redis-data - dnsPolicy: ClusterFirst - restartPolicy: Always - volumes: - - name: redis-data - emptyDir: {} diff --git a/kustomize/base/addons/redis/kustomization.yaml b/kustomize/base/addons/redis/kustomization.yaml deleted file mode 100644 index a944d005ca7..00000000000 --- a/kustomize/base/addons/redis/kustomization.yaml +++ /dev/null @@ -1,3 +0,0 @@ -resources: -- deployment.yaml -- service.yaml diff --git a/kustomize/base/addons/redis/service.yaml b/kustomize/base/addons/redis/service.yaml deleted file mode 100644 index 8c86264ae37..00000000000 --- a/kustomize/base/addons/redis/service.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: redis-resource-manager - name: redis-resource-manager - namespace: flyte -spec: - ports: - - name: redis - port: 6379 - protocol: TCP - targetPort: redis - selector: - app: redis-resource-manager - type: ClusterIP diff --git a/kustomize/base/addons/storage/kustomization.yaml b/kustomize/base/addons/storage/kustomization.yaml deleted file mode 100644 index 9a80610c4e1..00000000000 --- a/kustomize/base/addons/storage/kustomization.yaml +++ /dev/null @@ -1,2 +0,0 @@ -resources: -- storage.yaml diff --git a/kustomize/base/addons/storage/storage.yaml b/kustomize/base/addons/storage/storage.yaml deleted file mode 100644 index 6c895bc8ff3..00000000000 --- a/kustomize/base/addons/storage/storage.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: minio - namespace: flyte -spec: - selector: - matchLabels: - app: minio - template: - metadata: - labels: - app: minio - spec: - securityContext: - fsGroup: 1001 - runAsUser: 1001 - fsGroupChangePolicy: "OnRootMismatch" - volumes: - - name: minio-storage - emptyDir: {} - containers: - - image: minio - name: minio - env: - - name: MINIO_ACCESS_KEY - value: minio - - name: MINIO_SECRET_KEY - value: miniostorage - - name: MINIO_DEFAULT_BUCKETS - value: my-s3-bucket - ports: - - containerPort: 9000 - name: minio - - containerPort: 9001 - name: minio-console - volumeMounts: - - name: minio-storage - mountPath: /data ---- -apiVersion: v1 -kind: Service -metadata: - name: minio - namespace: flyte -spec: - externalName: minio - ports: - - name: minio-api - port: 9000 - - name: minio-console - port: 9001 - selector: - app: minio ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: minio - namespace: flyte - annotations: - nginx.ingress.kubernetes.io/ssl-redirect: "false" -spec: - rules: - - http: - paths: - - path: /minio - pathType: ImplementationSpecific - backend: - service: - name: minio - port: - number: 9001 diff --git a/kustomize/base/admindeployment/auth_secret.yaml b/kustomize/base/admindeployment/auth_secret.yaml deleted file mode 100644 index 9a1281d7767..00000000000 --- a/kustomize/base/admindeployment/auth_secret.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: flyte-admin-auth - namespace: flyte -type: Opaque diff --git a/kustomize/base/admindeployment/clustersync/cron.yaml b/kustomize/base/admindeployment/clustersync/cron.yaml deleted file mode 100644 index e3fbfdfa692..00000000000 --- a/kustomize/base/admindeployment/clustersync/cron.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: batch/v1beta1 -kind: CronJob -metadata: - name: syncresources - namespace: flyte -spec: - schedule: "*/1 * * * *" - jobTemplate: - spec: - template: - spec: - serviceAccountName: flyteadmin - containers: - - name: sync-cluster-resources - image: flyteadmin:v0.4.13 - imagePullPolicy: IfNotPresent - command: ["flyteadmin", "--config", "/etc/flyte/config/*.yaml", "clusterresource", "sync"] - volumeMounts: - - name: resource-templates - mountPath: /etc/flyte/clusterresource/templates - - name: config-volume - mountPath: /etc/flyte/config - - name: db-pass - mountPath: /etc/db - volumes: - - name: resource-templates - configMap: - name: clusterresource-template - - name: config-volume - configMap: - name: flyte-admin-config - - name: db-pass - secret: - secretName: db-pass - restartPolicy: OnFailure diff --git a/kustomize/base/admindeployment/clustersync/kustomization.yaml b/kustomize/base/admindeployment/clustersync/kustomization.yaml deleted file mode 100644 index 1ade31b55b8..00000000000 --- a/kustomize/base/admindeployment/clustersync/kustomization.yaml +++ /dev/null @@ -1,2 +0,0 @@ -resources: -- cron.yaml diff --git a/kustomize/base/admindeployment/deployment.yaml b/kustomize/base/admindeployment/deployment.yaml deleted file mode 100644 index 561e4490347..00000000000 --- a/kustomize/base/admindeployment/deployment.yaml +++ /dev/null @@ -1,157 +0,0 @@ -# Create the actual deployment -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flyteadmin - namespace: flyte - labels: - app: flyteadmin -spec: - replicas: 1 - selector: - matchLabels: - app: flyteadmin - template: - metadata: - labels: - app: flyteadmin - app.kubernetes.io/name: flyteadmin - app.kubernetes.io/version: 0.4.13 - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "10254" - prometheus.io/path: "/metrics" - spec: - securityContext: - fsGroup: 65534 - runAsUser: 1001 - fsGroupChangePolicy: "Always" - serviceAccountName: flyteadmin - volumes: - - name: shared-data - emptyDir: {} - - emptyDir: {} - name: scratch - - name: config-volume - configMap: - name: flyte-admin-config - - name: resource-templates - configMap: - name: clusterresource-template - - name: db-pass - secret: - secretName: db-pass - - name: auth - secret: - secretName: flyte-admin-auth - initContainers: - - name: run-migrations - image: flyteadmin:v0.6.49 - imagePullPolicy: IfNotPresent - command: - [ - "flyteadmin", - "--config", - "/etc/flyte/config/*.yaml", - "migrate", - "run", - ] - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - - name: db-pass - mountPath: /etc/db - # Optional, These just seed the project - TODO move them to only - - name: seed-projects - image: flyteadmin:v0.6.49 - imagePullPolicy: IfNotPresent - command: - [ - "flyteadmin", - "--config", - "/etc/flyte/config/*.yaml", - "migrate", - "seed-projects", - "flytesnacks", - "flytetester", - "flyteexamples", - ] - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - - name: db-pass - mountPath: /etc/db - - name: sync-cluster-resources - image: flyteadmin:v0.6.49 - imagePullPolicy: IfNotPresent - command: - [ - "flyteadmin", - "--config", - "/etc/flyte/config/*.yaml", - "clusterresource", - "sync", - ] - volumeMounts: - - name: resource-templates - mountPath: /etc/flyte/clusterresource/templates - - name: config-volume - mountPath: /etc/flyte/config - - name: db-pass - mountPath: /etc/db - - name: generate-secrets - image: flyteadmin:v0.6.49 - imagePullPolicy: IfNotPresent - command: ["/bin/sh", "-c"] - args: - [ - "flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/scratch/secrets && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --fromPath /etc/scratch/secrets", - ] - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - - name: scratch - mountPath: /etc/scratch - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - containers: - - name: flyteadmin - image: flyteadmin:v0.6.49 - imagePullPolicy: IfNotPresent - command: - ["flyteadmin", "--config", "/etc/flyte/config/*.yaml", "serve"] - ports: - - containerPort: 8088 - - containerPort: 8089 - volumeMounts: - - name: shared-data - mountPath: /srv/flyte - - name: config-volume - mountPath: /etc/flyte/config - - name: db-pass - mountPath: /etc/db - - name: auth - mountPath: /etc/secrets/ - - name: redoc - image: docker.io/redocly/redoc - imagePullPolicy: IfNotPresent - ports: - - containerPort: 8087 - resources: - limits: - memory: "200Mi" - cpu: "0.1" - command: - - sh - - -c - - ln -s /usr/share/nginx/html /usr/share/nginx/html/openapi && sh /usr/local/bin/docker-run.sh - env: - - name: PAGE_TITLE - value: "Flyte Admin OpenAPI" - - name: SPEC_URL - value: "/api/v1/openapi" - - name: PORT - value: "8087" diff --git a/kustomize/base/admindeployment/kustomization.yaml b/kustomize/base/admindeployment/kustomization.yaml deleted file mode 100644 index c47adf129de..00000000000 --- a/kustomize/base/admindeployment/kustomization.yaml +++ /dev/null @@ -1,4 +0,0 @@ -resources: - - auth_secret.yaml - - deployment.yaml - - service.yaml diff --git a/kustomize/base/admindeployment/service.yaml b/kustomize/base/admindeployment/service.yaml deleted file mode 100644 index 275f1d2185f..00000000000 --- a/kustomize/base/admindeployment/service.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Service -apiVersion: v1 -kind: Service -metadata: - name: flyteadmin - namespace: flyte - annotations: - # This tells contour to use a H2 connection for the port associated - # with the name 'grpc' under spec/ports. - # For more information, refer to - # https://github.com/heptio/contour/blob/master/docs/annotations.md#contour-specific-service-annotations - # # Following this issue - the annotation was updated https://github.com/projectcontour/contour/issues/2092 - projectcontour.io/upstream-protocol.h2c: "grpc" -spec: - selector: - app: flyteadmin - ports: - - name: http - protocol: TCP - port: 80 - targetPort: 8088 - - name: grpc - protocol: TCP - port: 81 - targetPort: 8089 diff --git a/kustomize/base/adminserviceaccount/adminserviceaccount.yaml b/kustomize/base/adminserviceaccount/adminserviceaccount.yaml deleted file mode 100644 index bdaae60df42..00000000000 --- a/kustomize/base/adminserviceaccount/adminserviceaccount.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# ClusterRole for flyteadmin -# https://kubernetes.io/docs/admin/authorization/rbac/ -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: flyteadmin - namespace: flyte -rules: -#Allow Access to all resources under flyte.lyft.com and the core API group: "" - - apiGroups: - - "" - - flyte.lyft.com - - rbac.authorization.k8s.io - resources: - - configmaps - - flyteworkflows - - namespaces - - pods - - resourcequotas - - roles - - rolebindings - - secrets - - services - - serviceaccounts - - spark-role - verbs: - - "*" - ---- -# Create a Service Account for FltyeAdmin -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flyteadmin - namespace: flyte - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: flyteadmin-binding - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flyteadmin -subjects: - - kind: ServiceAccount - name: flyteadmin - namespace: flyte diff --git a/kustomize/base/adminserviceaccount/kustomization.yaml b/kustomize/base/adminserviceaccount/kustomization.yaml deleted file mode 100644 index 3d4938e1a1e..00000000000 --- a/kustomize/base/adminserviceaccount/kustomization.yaml +++ /dev/null @@ -1,2 +0,0 @@ -resources: -- adminserviceaccount.yaml diff --git a/kustomize/base/console/configmap.yaml b/kustomize/base/console/configmap.yaml deleted file mode 100644 index 0fb42a0c1fa..00000000000 --- a/kustomize/base/console/configmap.yaml +++ /dev/null @@ -1,10 +0,0 @@ -kind: ConfigMap -apiVersion: v1 -metadata: - name: flyte-console-config - namespace: flyte -data: - # This determines the base url used for all console links. It must match the route specified in ingress.yaml - BASE_URL: /console - CONFIG_DIR: /etc/flyte/config - diff --git a/kustomize/base/console/deployment.yaml b/kustomize/base/console/deployment.yaml deleted file mode 100644 index 0e9e4405349..00000000000 --- a/kustomize/base/console/deployment.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Create the actual deployment -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flyteconsole - namespace: flyte - labels: - app: flyteconsole -spec: - replicas: 1 - selector: - matchLabels: - app: flyteconsole - template: - metadata: - labels: - app: flyteconsole - app.kubernetes.io/name: flyteconsole - app.kubernetes.io/version: 0.19.0 - spec: - securityContext: - runAsUser: 1000 - fsGroupChangePolicy: "Always" - volumes: - - name: shared-data - emptyDir: {} - containers: - - name: flyteconsole - image: flyteconsole:v0.19.0 - # args: [] - ports: - - containerPort: 8080 - volumeMounts: - - name: shared-data - mountPath: /srv/flyte - envFrom: - - configMapRef: - name: flyte-console-config diff --git a/kustomize/base/console/kustomization.yaml b/kustomize/base/console/kustomization.yaml deleted file mode 100644 index 81d586a3cd1..00000000000 --- a/kustomize/base/console/kustomization.yaml +++ /dev/null @@ -1,4 +0,0 @@ -resources: -- deployment.yaml -- service.yaml -- configmap.yaml diff --git a/kustomize/base/console/service.yaml b/kustomize/base/console/service.yaml deleted file mode 100644 index e6d75ffc2fd..00000000000 --- a/kustomize/base/console/service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Service -apiVersion: v1 -kind: Service -metadata: - name: flyteconsole - namespace: flyte -spec: - selector: - app: flyteconsole - ports: - - protocol: TCP - port: 80 - targetPort: 8080 - diff --git a/kustomize/base/datacatalog/deployment.yaml b/kustomize/base/datacatalog/deployment.yaml deleted file mode 100644 index 22b2e372350..00000000000 --- a/kustomize/base/datacatalog/deployment.yaml +++ /dev/null @@ -1,60 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: datacatalog - namespace: flyte - labels: - app: datacatalog -spec: - replicas: 1 - selector: - matchLabels: - app: datacatalog - template: - metadata: - labels: - app: datacatalog - app.kubernetes.io/name: datacatalog - app.kubernetes.io/version: 0.3.0 - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "10254" - prometheus.io/path: "/metrics" - spec: - securityContext: - fsGroup: 65534 - runAsUser: 1001 - fsGroupChangePolicy: "Always" - serviceAccountName: datacatalog - volumes: - - name: shared-data - emptyDir: {} - - name: config-volume - configMap: - name: datacatalog-config - - name: db-pass - secret: - secretName: db-pass - initContainers: - - name: run-migrations - image: datacatalog:v0.3.0 - imagePullPolicy: IfNotPresent - command: ["datacatalog", "--config", "/etc/datacatalog/config/*.yaml", "migrate", "run"] - volumeMounts: - - name: config-volume - mountPath: /etc/datacatalog/config - - name: db-pass - mountPath: /etc/db - containers: - - name: datacatalog - image: datacatalog:v0.3.0 - imagePullPolicy: IfNotPresent - command: ["datacatalog", "--config", "/etc/datacatalog/config/*.yaml", "serve"] - ports: - - containerPort: 8088 - - containerPort: 8089 - volumeMounts: - - name: config-volume - mountPath: /etc/datacatalog/config - - name: db-pass - mountPath: /etc/db diff --git a/kustomize/base/datacatalog/kustomization.yaml b/kustomize/base/datacatalog/kustomization.yaml deleted file mode 100644 index c38e72a98de..00000000000 --- a/kustomize/base/datacatalog/kustomization.yaml +++ /dev/null @@ -1,4 +0,0 @@ -resources: -- rbac.yaml -- deployment.yaml -- service.yaml diff --git a/kustomize/base/datacatalog/rbac.yaml b/kustomize/base/datacatalog/rbac.yaml deleted file mode 100644 index 208fb8d1ef8..00000000000 --- a/kustomize/base/datacatalog/rbac.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: datacatalog - namespace: flyte diff --git a/kustomize/base/datacatalog/service.yaml b/kustomize/base/datacatalog/service.yaml deleted file mode 100644 index 11c9b58ea25..00000000000 --- a/kustomize/base/datacatalog/service.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Service -apiVersion: v1 -kind: Service -metadata: - name: datacatalog - namespace: flyte - annotations: - # This tells contour to use a H2 connection for the port associated - # with the name 'grpc' under spec/ports. - # For more information, refer to - # https://github.com/heptio/contour/blob/master/docs/annotations.md#contour-specific-service-annotations - contour.heptio.com/upstream-protocol.h2c: "grpc" -spec: - selector: - app: datacatalog - ports: - - name: http - protocol: TCP - port: 88 - targetPort: 8088 - - name: grpc - protocol: TCP - port: 89 - targetPort: 8089 diff --git a/kustomize/base/ingress/ingress.yaml b/kustomize/base/ingress/ingress.yaml deleted file mode 100644 index 99aec4b3230..00000000000 --- a/kustomize/base/ingress/ingress.yaml +++ /dev/null @@ -1,193 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: flytesystem - namespace: flyte - annotations: - nginx.ingress.kubernetes.io/ssl-redirect: "false" - nginx.ingress.kubernetes.io/app-root: /console -spec: - rules: - - http: - paths: - # This is useful only for sandbox mode and should be templatized/removed in non-sandbox environments - - path: /__webpack_hmr - pathType: ImplementationSpecific - backend: - service: - name: flyteconsole - port: - number: 80 - # NOTE: Port 81 in flyteadmin is the GRPC server port for - # FlyteAdmin. - - path: /flyteidl.service.AdminService - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 81 - - path: /flyteidl.service.AuthMetadataService - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 81 - - path: /flyteidl.service.IdentityService - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 81 - - path: /flyteidl.service.SignalService - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 81 - # Port 87 in FlyteAdmin maps to the redoc container. - - path: /openapi - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 87 - # NOTE: If you change this, you must update the BASE_URL value in flyteconsole.yaml - - path: /console - pathType: ImplementationSpecific - backend: - service: - name: flyteconsole - port: - number: 80 - - path: /console/* - pathType: ImplementationSpecific - backend: - service: - name: flyteconsole - port: - number: 80 - - path: /api - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /api/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /healthcheck - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /v1/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - # Port 87 in FlyteAdmin maps to the redoc container. - - path: /openapi/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 87 - - path: /.well-known/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /login - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /login/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /logout - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /logout/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /callback - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /callback/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /me - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /config - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /config/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /oauth2 - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /oauth2/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 diff --git a/kustomize/base/ingress/kustomization.yaml b/kustomize/base/ingress/kustomization.yaml deleted file mode 100644 index 14d8f3a54fd..00000000000 --- a/kustomize/base/ingress/kustomization.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: - - ingress.yaml diff --git a/kustomize/base/namespace/kustomization.yaml b/kustomize/base/namespace/kustomization.yaml deleted file mode 100644 index bf20f4df68b..00000000000 --- a/kustomize/base/namespace/kustomization.yaml +++ /dev/null @@ -1,2 +0,0 @@ -resources: -- namespace.yaml diff --git a/kustomize/base/namespace/namespace.yaml b/kustomize/base/namespace/namespace.yaml deleted file mode 100644 index ca27d7f8850..00000000000 --- a/kustomize/base/namespace/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: flyte diff --git a/kustomize/base/operators/README.md b/kustomize/base/operators/README.md deleted file mode 100644 index 4f6516eb9d4..00000000000 --- a/kustomize/base/operators/README.md +++ /dev/null @@ -1 +0,0 @@ -# Install plugins diff --git a/kustomize/base/operators/kfoperators/namespace/kustomization.yaml b/kustomize/base/operators/kfoperators/namespace/kustomization.yaml deleted file mode 100644 index bf20f4df68b..00000000000 --- a/kustomize/base/operators/kfoperators/namespace/kustomization.yaml +++ /dev/null @@ -1,2 +0,0 @@ -resources: -- namespace.yaml diff --git a/kustomize/base/operators/kfoperators/namespace/namespace.yaml b/kustomize/base/operators/kfoperators/namespace/namespace.yaml deleted file mode 100644 index 7a940e4673d..00000000000 --- a/kustomize/base/operators/kfoperators/namespace/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: kubeflow diff --git a/kustomize/base/operators/kfoperators/pytorch/kustomization.yaml b/kustomize/base/operators/kfoperators/pytorch/kustomization.yaml deleted file mode 100644 index 7b00dcfb6e8..00000000000 --- a/kustomize/base/operators/kfoperators/pytorch/kustomization.yaml +++ /dev/null @@ -1,4 +0,0 @@ -bases: - - ../namespace - - github.com/kubeflow/manifests/pytorch-job/pytorch-job-crds/base?ref=v1.0-branch - - github.com/kubeflow/manifests/pytorch-job/pytorch-operator/base?ref=v1.0-branch diff --git a/kustomize/base/operators/kfoperators/tensorflow/kustomization.yaml b/kustomize/base/operators/kfoperators/tensorflow/kustomization.yaml deleted file mode 100644 index 9d7d7b7def0..00000000000 --- a/kustomize/base/operators/kfoperators/tensorflow/kustomization.yaml +++ /dev/null @@ -1,4 +0,0 @@ -bases: - - ../namespace - - github.com/kubeflow/manifests/tf-training/tf-job-crds/base?ref=v1.0.0 - - github.com/kubeflow/manifests/tf-training/tf-job-operator/base?ref=v1.0.0 diff --git a/kustomize/base/operators/sagemaker/kustomization.yaml b/kustomize/base/operators/sagemaker/kustomization.yaml deleted file mode 100644 index c9ea0aaaba9..00000000000 --- a/kustomize/base/operators/sagemaker/kustomization.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - - https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/v1.2.1/release/rolebased/installer.yaml diff --git a/kustomize/base/operators/spark/deployment.yaml b/kustomize/base/operators/spark/deployment.yaml deleted file mode 100644 index e8195ef1a21..00000000000 --- a/kustomize/base/operators/spark/deployment.yaml +++ /dev/null @@ -1,51 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: sparkoperator - namespace: sparkoperator - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: sparkoperator - strategy: - type: Recreate - template: - metadata: - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "10254" - prometheus.io/path: "/metrics" - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - spec: - serviceAccountName: sparkoperator - volumes: - - name: webhook-certs - secret: - secretName: spark-webhook-certs - containers: - - name: sparkoperator-unknown - image: gcr.io/spark-operator/spark-operator:v1beta2-1.1.2-2.4.5 - volumeMounts: - - name: webhook-certs - mountPath: /etc/webhook-certs - imagePullPolicy: Always - command: ["/usr/bin/spark-operator"] - ports: - - containerPort: 10254 - - containerPort: 8080 - args: - - -logtostderr - - -v=2 - - -controller-threads=20 - - -enable-metrics=true - - "-metrics-prefix=service:" - - -metrics-labels=task_name - - -metrics-labels=workflow_name - - -enable-webhook=true - - -webhook-svc-namespace=sparkoperator diff --git a/kustomize/base/operators/spark/kustomization.yaml b/kustomize/base/operators/spark/kustomization.yaml deleted file mode 100644 index cfcdd57ab5b..00000000000 --- a/kustomize/base/operators/spark/kustomization.yaml +++ /dev/null @@ -1,15 +0,0 @@ -resources: -- spark-operator.yaml -- sparkapplications-crd.yaml -- scheduledsparkapplications-crd.yaml -- deployment.yaml -- webhook.yaml - -vars: - - name: NAMESPACE - objref: - kind: Deployment - name: sparkoperator - apiVersion: apps/v1 - fieldref: - fieldpath: metadata.namespace diff --git a/kustomize/base/operators/spark/scheduledsparkapplications-crd.yaml b/kustomize/base/operators/spark/scheduledsparkapplications-crd.yaml deleted file mode 100644 index 3bda6787875..00000000000 --- a/kustomize/base/operators/spark/scheduledsparkapplications-crd.yaml +++ /dev/null @@ -1,3762 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: (unknown) - creationTimestamp: null - name: scheduledsparkapplications.sparkoperator.k8s.io -spec: - group: sparkoperator.k8s.io - names: - kind: ScheduledSparkApplication - listKind: ScheduledSparkApplicationList - plural: scheduledsparkapplications - shortNames: - - scheduledsparkapp - singular: scheduledsparkapplication - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - concurrencyPolicy: - type: string - failedRunHistoryLimit: - format: int32 - type: integer - schedule: - type: string - successfulRunHistoryLimit: - format: int32 - type: integer - suspend: - type: boolean - template: - properties: - arguments: - items: - type: string - type: array - batchScheduler: - type: string - batchSchedulerOptions: - properties: - priorityClassName: - type: string - queue: - type: string - type: object - deps: - properties: - files: - items: - type: string - type: array - jars: - items: - type: string - type: array - pyFiles: - items: - type: string - type: array - type: object - driver: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - podName: - pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' - type: string - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - executor: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - deleteOnTermination: - type: boolean - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - instances: - format: int32 - minimum: 1 - type: integer - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - failureRetries: - format: int32 - type: integer - hadoopConf: - additionalProperties: - type: string - type: object - hadoopConfigMap: - type: string - image: - type: string - imagePullPolicy: - type: string - imagePullSecrets: - items: - type: string - type: array - mainApplicationFile: - type: string - mainClass: - type: string - memoryOverheadFactor: - type: string - mode: - enum: - - cluster - - client - type: string - monitoring: - properties: - exposeDriverMetrics: - type: boolean - exposeExecutorMetrics: - type: boolean - metricsProperties: - type: string - metricsPropertiesFile: - type: string - prometheus: - properties: - configFile: - type: string - configuration: - type: string - jmxExporterJar: - type: string - port: - format: int32 - maximum: 49151 - minimum: 1024 - type: integer - required: - - jmxExporterJar - type: object - required: - - exposeDriverMetrics - - exposeExecutorMetrics - type: object - nodeSelector: - additionalProperties: - type: string - type: object - pythonVersion: - enum: - - "2" - - "3" - type: string - restartPolicy: - properties: - onFailureRetries: - format: int32 - minimum: 0 - type: integer - onFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - onSubmissionFailureRetries: - format: int32 - minimum: 0 - type: integer - onSubmissionFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - type: - enum: - - Never - - Always - - OnFailure - type: string - type: object - retryInterval: - format: int64 - type: integer - serviceAccount: - type: string - sparkConf: - additionalProperties: - type: string - type: object - sparkConfigMap: - type: string - sparkVersion: - type: string - timeToLiveSeconds: - format: int64 - type: integer - type: - enum: - - Java - - Python - - Scala - - R - type: string - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - driver - - executor - - sparkVersion - - type - type: object - required: - - schedule - - template - type: object - status: - properties: - lastRun: - format: date-time - nullable: true - type: string - lastRunName: - type: string - nextRun: - format: date-time - nullable: true - type: string - pastFailedRunNames: - items: - type: string - type: array - pastSuccessfulRunNames: - items: - type: string - type: array - reason: - type: string - scheduleState: - type: string - type: object - required: - - metadata - - spec - type: object - version: v1beta2 - versions: - - name: v1beta2 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/kustomize/base/operators/spark/spark-operator.yaml b/kustomize/base/operators/spark/spark-operator.yaml deleted file mode 100644 index 43b481768f5..00000000000 --- a/kustomize/base/operators/spark/spark-operator.yaml +++ /dev/null @@ -1,56 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: sparkoperator ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: sparkoperator - namespace: sparkoperator ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: sparkoperator -rules: -- apiGroups: [""] - resources: ["pods"] - verbs: ["*"] -- apiGroups: [""] - resources: ["services", "configmaps", "secrets"] - verbs: ["create", "get", "delete"] -- apiGroups: ["extensions"] - resources: ["ingresses"] - verbs: ["create", "get", "delete"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["get"] -- apiGroups: ["batch"] - resources: ["jobs"] - verbs: ["create", "get", "update", "delete", "list", "watch"] -- apiGroups: [""] - resources: ["events"] - verbs: ["create", "update", "patch"] -- apiGroups: ["apiextensions.k8s.io"] - resources: ["customresourcedefinitions"] - verbs: ["create", "get", "update", "delete"] -- apiGroups: ["admissionregistration.k8s.io"] - resources: ["mutatingwebhookconfigurations"] - verbs: ["create", "get", "update", "delete"] -- apiGroups: ["sparkoperator.k8s.io"] - resources: ["sparkapplications", "scheduledsparkapplications", "sparkapplications/status", "scheduledsparkapplications/status"] - verbs: ["*"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: sparkoperator -subjects: - - kind: ServiceAccount - name: sparkoperator - namespace: sparkoperator -roleRef: - kind: ClusterRole - name: sparkoperator - apiGroup: rbac.authorization.k8s.io diff --git a/kustomize/base/operators/spark/sparkapplications-crd.yaml b/kustomize/base/operators/spark/sparkapplications-crd.yaml deleted file mode 100644 index 895d4d00375..00000000000 --- a/kustomize/base/operators/spark/sparkapplications-crd.yaml +++ /dev/null @@ -1,3771 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: (unknown) - creationTimestamp: null - name: sparkapplications.sparkoperator.k8s.io -spec: - group: sparkoperator.k8s.io - names: - kind: SparkApplication - listKind: SparkApplicationList - plural: sparkapplications - shortNames: - - sparkapp - singular: sparkapplication - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - arguments: - items: - type: string - type: array - batchScheduler: - type: string - batchSchedulerOptions: - properties: - priorityClassName: - type: string - queue: - type: string - type: object - deps: - properties: - files: - items: - type: string - type: array - jars: - items: - type: string - type: array - pyFiles: - items: - type: string - type: array - type: object - driver: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - podName: - pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' - type: string - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - executor: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - deleteOnTermination: - type: boolean - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - instances: - format: int32 - minimum: 1 - type: integer - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - - protocol - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - failureRetries: - format: int32 - type: integer - hadoopConf: - additionalProperties: - type: string - type: object - hadoopConfigMap: - type: string - image: - type: string - imagePullPolicy: - type: string - imagePullSecrets: - items: - type: string - type: array - mainApplicationFile: - type: string - mainClass: - type: string - memoryOverheadFactor: - type: string - mode: - enum: - - cluster - - client - type: string - monitoring: - properties: - exposeDriverMetrics: - type: boolean - exposeExecutorMetrics: - type: boolean - metricsProperties: - type: string - metricsPropertiesFile: - type: string - prometheus: - properties: - configFile: - type: string - configuration: - type: string - jmxExporterJar: - type: string - port: - format: int32 - maximum: 49151 - minimum: 1024 - type: integer - required: - - jmxExporterJar - type: object - required: - - exposeDriverMetrics - - exposeExecutorMetrics - type: object - nodeSelector: - additionalProperties: - type: string - type: object - pythonVersion: - enum: - - "2" - - "3" - type: string - restartPolicy: - properties: - onFailureRetries: - format: int32 - minimum: 0 - type: integer - onFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - onSubmissionFailureRetries: - format: int32 - minimum: 0 - type: integer - onSubmissionFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - type: - enum: - - Never - - Always - - OnFailure - type: string - type: object - retryInterval: - format: int64 - type: integer - serviceAccount: - type: string - sparkConf: - additionalProperties: - type: string - type: object - sparkConfigMap: - type: string - sparkVersion: - type: string - timeToLiveSeconds: - format: int64 - type: integer - type: - enum: - - Java - - Python - - Scala - - R - type: string - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - driver - - executor - - sparkVersion - - type - type: object - status: - properties: - applicationState: - properties: - errorMessage: - type: string - state: - type: string - required: - - state - type: object - driverInfo: - properties: - podName: - type: string - webUIAddress: - type: string - webUIIngressAddress: - type: string - webUIIngressName: - type: string - webUIPort: - format: int32 - type: integer - webUIServiceName: - type: string - type: object - executionAttempts: - format: int32 - type: integer - executorState: - additionalProperties: - type: string - type: object - sparkApplicationId: - type: string - submissionAttempts: - format: int32 - type: integer - submissionID: - type: string - submissionTime: - format: date-time - nullable: true - type: string - terminationTime: - format: date-time - nullable: true - type: string - required: - - driverInfo - type: object - required: - - metadata - - spec - type: object - version: v1beta2 - versions: - - name: v1beta2 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/kustomize/base/operators/spark/webhook.yaml b/kustomize/base/operators/spark/webhook.yaml deleted file mode 100644 index d09106c6e7c..00000000000 --- a/kustomize/base/operators/spark/webhook.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: sparkoperator-init - namespace: sparkoperator - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 -spec: - backoffLimit: 3 - template: - metadata: - labels: - app.kubernetes.io/name: sparkoperator - app.kubernetes.io/version: v2.4.5-v1beta2 - spec: - serviceAccountName: sparkoperator - restartPolicy: Never - containers: - - name: main - image: gcr.io/spark-operator/spark-operator:v1beta2-1.1.2-2.4.5 - imagePullPolicy: IfNotPresent - command: ["/usr/bin/gencerts.sh","--namespace", "$(NAMESPACE)", "-p"] ---- -kind: Service -apiVersion: v1 -metadata: - name: spark-webhook - namespace: sparkoperator -spec: - ports: - - port: 443 - targetPort: 8080 - name: webhook - selector: - app.kubernetes.io/name: sparkoperator diff --git a/kustomize/base/pod_webhook/deployment.yaml b/kustomize/base/pod_webhook/deployment.yaml deleted file mode 100644 index 4209031b9bd..00000000000 --- a/kustomize/base/pod_webhook/deployment.yaml +++ /dev/null @@ -1,83 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flyte-pod-webhook - namespace: flyte - labels: - app: flyte-pod-webhook -spec: - selector: - matchLabels: - app: flyte-pod-webhook - template: - metadata: - labels: - app: flyte-pod-webhook - app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: 0.5.13 - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "10254" - prometheus.io/path: "/metrics" - spec: - securityContext: - fsGroup: 65534 - runAsUser: 1001 - fsGroupChangePolicy: "Always" - serviceAccountName: flyte-pod-webhook - initContainers: - - name: generate-secrets - image: flytepropeller:v0.5.13 - imagePullPolicy: IfNotPresent - command: - - flytepropeller - args: - - webhook - - init-certs - - --config - - /etc/flyte/config/*.yaml - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - containers: - - name: webhook - image: flytepropeller:v0.5.13 - imagePullPolicy: IfNotPresent - command: - - flytepropeller - args: - - webhook - - --config - - /etc/flyte/config/*.yaml - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - readOnly: true - - name: webhook-certs - mountPath: /etc/webhook/certs - readOnly: true - volumes: - - name: config-volume - configMap: - name: flyte-propeller-config - - name: webhook-certs - secret: - secretName: flyte-pod-webhook diff --git a/kustomize/base/pod_webhook/kustomization.yaml b/kustomize/base/pod_webhook/kustomization.yaml deleted file mode 100644 index c1b978c89d3..00000000000 --- a/kustomize/base/pod_webhook/kustomization.yaml +++ /dev/null @@ -1,5 +0,0 @@ -resources: - - deployment.yaml - - rbac.yaml - - secret.yaml - - service.yaml diff --git a/kustomize/base/pod_webhook/rbac.yaml b/kustomize/base/pod_webhook/rbac.yaml deleted file mode 100644 index 94b3ded0fa2..00000000000 --- a/kustomize/base/pod_webhook/rbac.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# Create a ClusterRole for the webhook -# https://kubernetes.io/docs/admin/authorization/rbac/ -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: flyte-pod-webhook - namespace: flyte -rules: - - apiGroups: - - "*" - resources: - - mutatingwebhookconfigurations - - secrets - - pods - - replicasets/finalizers - verbs: - - get - - create - - update - - patch ---- -# Create a Service Account for webhook -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flyte-pod-webhook - namespace: flyte ---- -# Create a binding from Role -> ServiceAccount -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: flyte-pod-webhook - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flyte-pod-webhook -subjects: - - kind: ServiceAccount - name: flyte-pod-webhook - namespace: flyte diff --git a/kustomize/base/pod_webhook/secret.yaml b/kustomize/base/pod_webhook/secret.yaml deleted file mode 100644 index b5f37860ceb..00000000000 --- a/kustomize/base/pod_webhook/secret.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: flyte-pod-webhook - namespace: flyte -type: Opaque diff --git a/kustomize/base/pod_webhook/service.yaml b/kustomize/base/pod_webhook/service.yaml deleted file mode 100644 index 41d86826d72..00000000000 --- a/kustomize/base/pod_webhook/service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: flyte-pod-webhook - namespace: flyte - annotations: - # This tells contour to use a H2 connection for the port associated - # with the name 'grpc' under spec/ports. - # For more information, refer to - # https://github.com/heptio/contour/blob/master/docs/annotations.md#contour-specific-service-annotations - # # Following this issue - the annotation was updated https://github.com/projectcontour/contour/issues/2092 - projectcontour.io/upstream-protocol.h2c: "grpc" -spec: - selector: - app: flyte-pod-webhook - ports: - - name: https - protocol: TCP - port: 443 - targetPort: 9443 diff --git a/kustomize/base/propeller/auth_secret.yaml b/kustomize/base/propeller/auth_secret.yaml deleted file mode 100644 index a6b978f605b..00000000000 --- a/kustomize/base/propeller/auth_secret.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: flyte-secret-auth - namespace: flyte -type: Opaque -stringData: - client_secret: foobar diff --git a/kustomize/base/propeller/deployment.yaml b/kustomize/base/propeller/deployment.yaml deleted file mode 100644 index 8df9e9ca075..00000000000 --- a/kustomize/base/propeller/deployment.yaml +++ /dev/null @@ -1,60 +0,0 @@ -# Create the actual deployment -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flytepropeller - namespace: flyte - labels: - app: flytepropeller -spec: - selector: - matchLabels: - app: flytepropeller - template: - metadata: - labels: - app: flytepropeller - app.kubernetes.io/name: flytepropeller - app.kubernetes.io/version: 0.7.1 - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "10254" - prometheus.io/path: "/metrics" - spec: - securityContext: - fsGroup: 65534 - runAsUser: 1001 - fsGroupChangePolicy: "Always" - serviceAccountName: flytepropeller - volumes: - - name: config-volume - configMap: - name: flyte-propeller-config - - name: auth - secret: - secretName: flyte-secret-auth - containers: - - name: flytepropeller - image: flytepropeller:v0.7.1 - command: - - flytepropeller - args: - - --config - - /etc/flyte/config/*.yaml - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - imagePullPolicy: IfNotPresent - ports: - - containerPort: 10254 - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - - name: auth - mountPath: /etc/secrets/ diff --git a/kustomize/base/propeller/kustomization.yaml b/kustomize/base/propeller/kustomization.yaml deleted file mode 100644 index a558adcc2cb..00000000000 --- a/kustomize/base/propeller/kustomization.yaml +++ /dev/null @@ -1,4 +0,0 @@ -resources: - - auth_secret.yaml - - deployment.yaml - - rbac.yaml diff --git a/kustomize/base/propeller/rbac.yaml b/kustomize/base/propeller/rbac.yaml deleted file mode 100644 index 3e0811ac794..00000000000 --- a/kustomize/base/propeller/rbac.yaml +++ /dev/null @@ -1,89 +0,0 @@ -# Create a ClusterRole for flytepropeller -# https://kubernetes.io/docs/admin/authorization/rbac/ -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: flytepropeller -rules: -#Allow RO access to PODS - - apiGroups: - - "" - resources: - - pods - verbs: - - get - - list - - watch -#Allow Event recording access - - apiGroups: - - "" - resources: - - events - verbs: - - create - - update - - delete - - patch -#Allow Access All plugin objects - - apiGroups: - - "*" - resources: - - "*" - verbs: - - get - - list - - watch - - create - - update - - delete - - patch -#Allow Access to CRD - - apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - get - - list - - watch - - create - - delete - - update -#Allow Access to all resources under flyte.lyft.com - - apiGroups: - - flyte.lyft.com - resources: - - flyteworkflows - - flyteworkflows/finalizers - verbs: - - get - - list - - watch - - create - - update - - delete - - patch - - post - - deletecollection ---- -# Create a Service Account for Flytepropeller -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flytepropeller - namespace: flyte ---- -# Create a binding from Role -> ServiceAccount -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: flytepropeller - namespace: flyte -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: flytepropeller -subjects: -- kind: ServiceAccount - name: flytepropeller - namespace: flyte diff --git a/kustomize/base/schedulerdeployment/configmap.yaml b/kustomize/base/schedulerdeployment/configmap.yaml deleted file mode 100644 index 6a5b445af51..00000000000 --- a/kustomize/base/schedulerdeployment/configmap.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: flyte-scheduler-config - namespace: flyte - labels: - app.kubernetes.io/name: flytescheduler - app.kubernetes.io/instance: flyte - helm.sh/chart: flyte-v0.1.10 - app.kubernetes.io/managed-by: Helm -data: - admin.yaml: | - admin: - clientId: flytepropeller - clientSecretLocation: /etc/secrets/client_secret - endpoint: flyteadmin:81 - insecure: true - event: - capacity: 1000 - rate: 500 - type: admin - db.yaml: | - database: - dbname: postgres - host: postgres - port: 5432 - username: postgres - logger.yaml: | - logger: - level: 4 - show-source: true diff --git a/kustomize/base/schedulerdeployment/deployment.yaml b/kustomize/base/schedulerdeployment/deployment.yaml deleted file mode 100644 index e919a768935..00000000000 --- a/kustomize/base/schedulerdeployment/deployment.yaml +++ /dev/null @@ -1,72 +0,0 @@ -# Create the actual deployment -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flytescheduler - namespace: flyte - labels: - app: flytescheduler -spec: - replicas: 1 - selector: - matchLabels: - app: flytescheduler - template: - metadata: - labels: - app: flytescheduler - app.kubernetes.io/name: flytescheduler - app.kubernetes.io/version: 0.3.4 - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "10254" - prometheus.io/path: "/metrics" - spec: - serviceAccountName: flyteadmin - volumes: - - name: config-volume - configMap: - name: flyte-scheduler-config - - name: db-pass - secret: - secretName: db-pass - - name: auth - secret: - secretName: flyte-secret-auth - initContainers: - - command: - - flytescheduler - - precheck - - --config - - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v0.6.49" - imagePullPolicy: "IfNotPresent" - name: flytescheduler-check - volumeMounts: - - mountPath: /etc/flyte/config - name: config-volume - containers: - - command: - - flytescheduler - - run - - --config - - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v0.6.49" - imagePullPolicy: "IfNotPresent" - name: flytescheduler - resources: - limits: - cpu: 250m - ephemeral-storage: 100Mi - memory: 500Mi - requests: - cpu: 10m - ephemeral-storage: 50Mi - memory: 50Mi - volumeMounts: - - name: auth - mountPath: /etc/secrets/ - - mountPath: /etc/flyte/config - name: config-volume - - name: db-pass - mountPath: /etc/db diff --git a/kustomize/base/schedulerdeployment/kustomization.yaml b/kustomize/base/schedulerdeployment/kustomization.yaml deleted file mode 100644 index 898fc1587d9..00000000000 --- a/kustomize/base/schedulerdeployment/kustomization.yaml +++ /dev/null @@ -1,3 +0,0 @@ -resources: - - deployment.yaml - - configmap.yaml diff --git a/kustomize/base/single_cluster/README.md b/kustomize/base/single_cluster/README.md deleted file mode 100644 index 29346429457..00000000000 --- a/kustomize/base/single_cluster/README.md +++ /dev/null @@ -1,15 +0,0 @@ -[Back to Base components menu](../) -# Flyte Single cluster deployment mode -This allows flyte to be deployed in one Kubernetes cluster. -All components are deployed and can be configured to use dependencies based on the environment. - -To understand configuration of dependencies refer to sandbox or any cloud deployments - -Overlays using the single cluster mode -1. [Sandbox Overlay](../../overlays/sandbox) -1. [GCP SingleCluster Overlay](../../overlays/gcp) -1. [EKS SingleCluster Overlay](../../overlays/eks) - -These overlays are based on [Flyte Single Cluster deployment Configuration base](./complete) - -The complete per component configuration for Flyte can be found [here](./headless/config) diff --git a/kustomize/base/single_cluster/complete/README.md b/kustomize/base/single_cluster/complete/README.md deleted file mode 100644 index 052104b66e7..00000000000 --- a/kustomize/base/single_cluster/complete/README.md +++ /dev/null @@ -1,7 +0,0 @@ -[Back to Base components menu](../) -# Flyte Single cluster deployment mode -This provides a complete deployment of Flyte onto a single K8s cluster, it is based on [Headless Cluster](../headless). -The configuration for this deployment is also completely managed in the Headless Cluster configuration. - -This overlay just adds to resource - Sync controller and Flyte Console - diff --git a/kustomize/base/single_cluster/complete/kustomization.yaml b/kustomize/base/single_cluster/complete/kustomization.yaml deleted file mode 100644 index 54a1f14d87d..00000000000 --- a/kustomize/base/single_cluster/complete/kustomization.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -bases: -- ../headless - -# All the resources that make up the deployment -resources: -# global resources -- ../../admindeployment/clustersync -- ../../console - -# configMapGenerator: -# TODO Flyte Console Configuration -#- name: flyte-console-config -# files: -# - ./config/console.yaml diff --git a/kustomize/base/single_cluster/headless/README.md b/kustomize/base/single_cluster/headless/README.md deleted file mode 100644 index ddc5573197f..00000000000 --- a/kustomize/base/single_cluster/headless/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Flyte Headless cluster - -This is a complete single cluster Flyte deployment with 2 missing features -1. FlyteConsole is not installed - No UI -2. Clustersync manager is not installed - No automatic update of projects and tenant specific information - - -## USE Cases -This configuration is useful in running integration / end to end tests diff --git a/kustomize/base/single_cluster/headless/config/admin/cluster_resources.yaml b/kustomize/base/single_cluster/headless/config/admin/cluster_resources.yaml deleted file mode 100644 index bd2f1dc9d6e..00000000000 --- a/kustomize/base/single_cluster/headless/config/admin/cluster_resources.yaml +++ /dev/null @@ -1,19 +0,0 @@ -cluster_resources: - templatePath: "/etc/flyte/clusterresource/templates" - customData: - - production: - - projectQuotaCpu: - value: "5" - - projectQuotaMemory: - value: "4000Mi" - - staging: - - projectQuotaCpu: - value: "2" - - projectQuotaMemory: - value: "3000Mi" - - development: - - projectQuotaCpu: - value: "4" - - projectQuotaMemory: - value: "3000Mi" - refreshInterval: 1m diff --git a/kustomize/base/single_cluster/headless/config/admin/db.yaml b/kustomize/base/single_cluster/headless/config/admin/db.yaml deleted file mode 100644 index 5aefbfb4359..00000000000 --- a/kustomize/base/single_cluster/headless/config/admin/db.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# This should be replaced with the db endpoint -# This can be a postgres data base in the cloud like AWS Aurora / AWS RDS, Google Cloud SQL, etc -# Or can be a self hosted Postgres in the cluster -database: - port: 5432 - username: postgres - host: postgres - dbname: postgres - options: sslmode=disable - passwordPath: /etc/db/pass.txt diff --git a/kustomize/base/single_cluster/headless/config/admin/domain.yaml b/kustomize/base/single_cluster/headless/config/admin/domain.yaml deleted file mode 100644 index 9df6ef80a9b..00000000000 --- a/kustomize/base/single_cluster/headless/config/admin/domain.yaml +++ /dev/null @@ -1,7 +0,0 @@ -domains: - - id: development - name: development - - id: staging - name: staging - - id: production - name: production diff --git a/kustomize/base/single_cluster/headless/config/admin/server.yaml b/kustomize/base/single_cluster/headless/config/admin/server.yaml deleted file mode 100644 index e13f3ad156a..00000000000 --- a/kustomize/base/single_cluster/headless/config/admin/server.yaml +++ /dev/null @@ -1,43 +0,0 @@ -server: - httpPort: 8088 - grpcPort: 8089 - security: - # Controls whether to serve requests over SSL/TLS. - secure: false - # Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. - useAuth: false - allowCors: true - allowedOrigins: - # Accepting all domains for Sandbox installation - - "*" - allowedHeaders: - - "Content-Type" - - "flyte-authorization" -auth: - authorizedUris: - # This should point at your public http Uri. - - https://localhost:30081 - # This will be used by internal services in the same namespace as flyteadmin - - http://flyteadmin:80 - # This will be used by internal services in the same cluster but different namespaces - - http://flyteadmin.flyte.svc.cluster.local:80 - - # Controls app authentication config - appAuth: - thirdPartyConfig: - flyteClient: - clientId: flytectl - redirectUri: https://localhost:53593/callback - scopes: - - offline - - all - # Controls user authentication - userAuth: - openId: - baseUrl: https://accounts.google.com - scopes: - - profile - - openid - clientId: 657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com -flyteadmin: - roleNameKey: "iam.amazonaws.com/role" diff --git a/kustomize/base/single_cluster/headless/config/admin/task_resource_defaults.yaml b/kustomize/base/single_cluster/headless/config/admin/task_resource_defaults.yaml deleted file mode 100644 index f057182fb5a..00000000000 --- a/kustomize/base/single_cluster/headless/config/admin/task_resource_defaults.yaml +++ /dev/null @@ -1,10 +0,0 @@ -task_resources: - defaults: - cpu: 100m - memory: 100Mi - storage: 5Mi - limits: - cpu: 2 - memory: 1Gi - storage: 20Mi - gpu: 1 diff --git a/kustomize/base/single_cluster/headless/config/clusterresource-templates/aa_namespace.yaml b/kustomize/base/single_cluster/headless/config/clusterresource-templates/aa_namespace.yaml deleted file mode 100644 index 3075aa9f9ef..00000000000 --- a/kustomize/base/single_cluster/headless/config/clusterresource-templates/aa_namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: {{ namespace }} -spec: - finalizers: - - kubernetes diff --git a/kustomize/base/single_cluster/headless/config/clusterresource-templates/ab_project-resource-quota.yaml b/kustomize/base/single_cluster/headless/config/clusterresource-templates/ab_project-resource-quota.yaml deleted file mode 100644 index ddfade3c292..00000000000 --- a/kustomize/base/single_cluster/headless/config/clusterresource-templates/ab_project-resource-quota.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: ResourceQuota -metadata: - name: project-quota - namespace: {{ namespace }} -spec: - hard: - limits.cpu: {{ projectQuotaCpu }} - limits.memory: {{ projectQuotaMemory }} - diff --git a/kustomize/base/single_cluster/headless/config/common/logger.yaml b/kustomize/base/single_cluster/headless/config/common/logger.yaml deleted file mode 100644 index 7fc20650ec7..00000000000 --- a/kustomize/base/single_cluster/headless/config/common/logger.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# TODO this is used to control the log level -logger: - show-source: true - level: 2 diff --git a/kustomize/base/single_cluster/headless/config/common/storage.yaml b/kustomize/base/single_cluster/headless/config/common/storage.yaml deleted file mode 100644 index 09e6ec6dec6..00000000000 --- a/kustomize/base/single_cluster/headless/config/common/storage.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# TODO This should be changed for the right storage option - e.g. -# hosted blob stores like S3, GCS, AFS etc -# k8s blob store like minio -# For all supported options look at https://github.com/lyft/flytestdlib/blob/master/storage/config.go -storage: - type: mem diff --git a/kustomize/base/single_cluster/headless/config/console/console.yaml b/kustomize/base/single_cluster/headless/config/console/console.yaml deleted file mode 100644 index d1c0cc51dcf..00000000000 --- a/kustomize/base/single_cluster/headless/config/console/console.yaml +++ /dev/null @@ -1,3 +0,0 @@ -# This determines the base url used for all console links. It must match the route specified in ingress.yaml -BASE_URL: /console -CONFIG_DIR: /etc/flyte/config diff --git a/kustomize/base/single_cluster/headless/config/datacatalog/db.yaml b/kustomize/base/single_cluster/headless/config/datacatalog/db.yaml deleted file mode 100644 index 479475aa94c..00000000000 --- a/kustomize/base/single_cluster/headless/config/datacatalog/db.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# This should be replaced with the db endpoint -# This can be a postgres data base in the cloud like AWS Aurora / AWS RDS, Google Cloud SQL, etc -# Or can be a self hosted Postgres in the cluster -database: - port: 5432 - username: postgres - host: postgres - dbname: datacatalog - options: sslmode=disable - passwordPath: /etc/db/pass.txt diff --git a/kustomize/base/single_cluster/headless/config/datacatalog/server.yaml b/kustomize/base/single_cluster/headless/config/datacatalog/server.yaml deleted file mode 100644 index 1cdd80c27f1..00000000000 --- a/kustomize/base/single_cluster/headless/config/datacatalog/server.yaml +++ /dev/null @@ -1,6 +0,0 @@ -datacatalog: - storage-prefix: metadata/datacatalog - metrics-scope: "datacatalog" - profiler-port: 10254 -application: - grpcPort: 8089 diff --git a/kustomize/base/single_cluster/headless/config/propeller/admin.yaml b/kustomize/base/single_cluster/headless/config/propeller/admin.yaml deleted file mode 100644 index 55cf01b83b0..00000000000 --- a/kustomize/base/single_cluster/headless/config/propeller/admin.yaml +++ /dev/null @@ -1,7 +0,0 @@ -event: - type: admin - rate: 500 - capacity: 1000 -admin: - endpoint: flyteadmin:81 - insecure: true diff --git a/kustomize/base/single_cluster/headless/config/propeller/catalog.yaml b/kustomize/base/single_cluster/headless/config/propeller/catalog.yaml deleted file mode 100644 index e70e7bd7701..00000000000 --- a/kustomize/base/single_cluster/headless/config/propeller/catalog.yaml +++ /dev/null @@ -1,4 +0,0 @@ -catalog-cache: - endpoint: datacatalog:89 - type: datacatalog - insecure: true diff --git a/kustomize/base/single_cluster/headless/config/propeller/core.yaml b/kustomize/base/single_cluster/headless/config/propeller/core.yaml deleted file mode 100644 index 055e7a8840f..00000000000 --- a/kustomize/base/single_cluster/headless/config/propeller/core.yaml +++ /dev/null @@ -1,36 +0,0 @@ -propeller: - rawoutput-prefix: s3://my-s3-bucket/ - metadata-prefix: metadata/propeller - workers: 4 - max-workflow-retries: 30 - workflow-reeval-duration: 30s - downstream-eval-duration: 30s - limit-namespace: "all" - prof-port: 10254 - metrics-prefix: flyte - enable-admin-launcher: true - leader-election: - lock-config-map: - name: propeller-leader - namespace: flyte - enabled: true - lease-duration: 15s - renew-deadline: 10s - retry-period: 2s - queue: - type: batch - batching-interval: 2s - batch-size: -1 - queue: - type: maxof - rate: 100 - capacity: 1000 - base-delay: 5s - max-delay: 120s - sub-queue: - type: bucket - rate: 10 - capacity: 100 -webhook: - certDir: /etc/webhook/certs - serviceName: flyte-pod-webhook diff --git a/kustomize/base/single_cluster/headless/config/propeller/enabled_plugins.yaml b/kustomize/base/single_cluster/headless/config/propeller/enabled_plugins.yaml deleted file mode 100644 index ebf4892451b..00000000000 --- a/kustomize/base/single_cluster/headless/config/propeller/enabled_plugins.yaml +++ /dev/null @@ -1,8 +0,0 @@ -## -# TODO It is important to enable the plugins that you want to deploy here. -tasks: - task-plugins: - enabled-plugins: - - container - - sidecar - - k8s-array diff --git a/kustomize/base/single_cluster/headless/config/propeller/plugins/copilot.yaml b/kustomize/base/single_cluster/headless/config/propeller/plugins/copilot.yaml deleted file mode 100644 index 31f483ab6dc..00000000000 --- a/kustomize/base/single_cluster/headless/config/propeller/plugins/copilot.yaml +++ /dev/null @@ -1,6 +0,0 @@ -plugins: - k8s: - co-pilot: - name: "flyte-copilot-" - image: "cr.flyte.org/flyteorg/flytecopilot:v0.0.15" - start-timeout: "30s" diff --git a/kustomize/base/single_cluster/headless/config/propeller/plugins/k8s.yaml b/kustomize/base/single_cluster/headless/config/propeller/plugins/k8s.yaml deleted file mode 100644 index 5097741639a..00000000000 --- a/kustomize/base/single_cluster/headless/config/propeller/plugins/k8s.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# TODO set any custom env vars -plugins: - k8s: - default-env-vars: - - SOME_ENV_VARS: "These get passed to all containers" - default-cpus: 100m - default-memory: 100Mi diff --git a/kustomize/base/single_cluster/headless/config/propeller/resource_manager.yaml b/kustomize/base/single_cluster/headless/config/propeller/resource_manager.yaml deleted file mode 100644 index a4601e8f2db..00000000000 --- a/kustomize/base/single_cluster/headless/config/propeller/resource_manager.yaml +++ /dev/null @@ -1,7 +0,0 @@ -propeller: - resourcemanager: - type: redis - resourceMaxQuota: 10000 - redis: - hostPath: redis-resource-manager:6379 - hostKey: mypassword diff --git a/kustomize/base/single_cluster/headless/kustomization.yaml b/kustomize/base/single_cluster/headless/kustomization.yaml deleted file mode 100644 index 8e6067e9979..00000000000 --- a/kustomize/base/single_cluster/headless/kustomization.yaml +++ /dev/null @@ -1,63 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -# All the resources that make up the deployment -resources: - # global resources - - ../../namespace - - ../../admindeployment - - ../../schedulerdeployment - - ../../datacatalog - - ../../wf_crd - - ../../pod_webhook - - ../../propeller - - ../../adminserviceaccount - -configMapGenerator: - # the main admin configmap - - name: flyte-admin-config - files: - - ./config/admin/server.yaml - - ./config/admin/domain.yaml - - ./config/admin/db.yaml - - ./config/admin/cluster_resources.yaml - - ./config/admin/task_resource_defaults.yaml - - ./config/common/storage.yaml - - ./config/common/logger.yaml - - # cluster resource templates - - name: clusterresource-template - files: - # Files are read in alphabetical order. To ensure that we create the namespace first, prefix the file name with "aa". - - ./config/clusterresource-templates/aa_namespace.yaml - - ./config/clusterresource-templates/ab_project-resource-quota.yaml - - # Flyte Propeller Configuration - - name: flyte-propeller-config - files: - - ./config/propeller/core.yaml - - ./config/propeller/admin.yaml - - ./config/propeller/catalog.yaml - - ./config/propeller/resource_manager.yaml - - ./config/propeller/enabled_plugins.yaml - - ./config/propeller/plugins/copilot.yaml - - ./config/propeller/plugins/k8s.yaml - - ./config/common/storage.yaml - - ./config/common/logger.yaml - - # TODO Flyte Console Configuration - #- name: flyte-console-config - # files: - # - ./config/console.yaml - - - name: datacatalog-config - files: - - ./config/datacatalog/server.yaml - - ./config/datacatalog/db.yaml - - ./config/common/storage.yaml - - ./config/common/logger.yaml - -secretGenerator: - - name: db-pass - literals: - - pass.txt="awesomesauce" diff --git a/kustomize/base/wf_crd/kustomization.yaml b/kustomize/base/wf_crd/kustomization.yaml deleted file mode 100644 index 6f680eaac23..00000000000 --- a/kustomize/base/wf_crd/kustomization.yaml +++ /dev/null @@ -1,2 +0,0 @@ -resources: -- wf_crd.yaml diff --git a/kustomize/base/wf_crd/wf_crd.yaml b/kustomize/base/wf_crd/wf_crd.yaml deleted file mode 100644 index 3cd3c3eb172..00000000000 --- a/kustomize/base/wf_crd/wf_crd.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - # name must match the spec fields below, and be in the form: . - name: flyteworkflows.flyte.lyft.com -spec: - # group name to use for REST API: /apis// - group: flyte.lyft.com - # either Namespaced or Cluster - names: - # plural name to be used in the URL: /apis/// - plural: flyteworkflows - # singular name to be used as an alias on the CLI and for display - singular: flyteworkflow - # kind is normally the CamelCased singular type. Your resource manifests use this. - kind: FlyteWorkflow - # shortNames allow shorter string to match your resource on the CLI - shortNames: - - fly - scope: Namespaced - versions: - - name: v1alpha1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - x-kubernetes-preserve-unknown-fields: true diff --git a/kustomize/overlays/README.md b/kustomize/overlays/README.md deleted file mode 100644 index 63ed238e9ea..00000000000 --- a/kustomize/overlays/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Deploy Flyte using one of the given overlays - -To start a deployment use one of the following overlays as a starting point. If you are just playing around with Flyte, use Sandbox overlay - and preferably the pre-generated yaml - available [here](../../deployment/sandbox/flyte_generated.yaml) - -1. [Sandbox](./sandbox) : A pre-configured overlay to deploy a complete standalone cluster onto a local k8s cluster -1. [GCP](./gcp): An almost configured overlay to deploy a production ready cluster to GCP. Some modifications needed for your environment -1. [EKS](./eks): An almost configured overlay to deploy a production ready cluster to AWS. Some modifications needed for your environment diff --git a/kustomize/overlays/eks/README.md b/kustomize/overlays/eks/README.md deleted file mode 100644 index 8873542337f..00000000000 --- a/kustomize/overlays/eks/README.md +++ /dev/null @@ -1,73 +0,0 @@ -[All Overlays](./) -# :construction: Amazon EKS deployment - -This overlay serves as an example to bootstrap Flyte setup on AWS. It is not -designed to work out of the box due to the need of AWS resources. Please follow the instruction -below to further configure. - -_Hint_: searching `TODO:` through this directory would help to understand what needs to be done. - -## Amazon RDS / Amazon Aurora - -A few things are required for this overlay to function: - -* Two databases named as `flyte` and `datacatalog` -* A database user named as `flyte` -* Password of the database user can be added to either to [kustomization.yaml](kustomization.yaml) or you can create a new file and change the secretGenerator tag to use files. (Refer to kustomize documentation) -* Service account(s) associated with `flyteadmin` and `datacatalog` pods (either as GKE cluster - service account or through workload identity) should have `Cloud SQL Editor` role - -## Create S3 bucket -1. Create a S3 bucket named as `flyte` (if other name replace it next) -1. Replace in [config/common/storage.yaml](flyte/config/common/storage.yaml) if using a bucket other than Flyte then replace the bucket name too - -## flyteadmin - -flyteadmin configuration is derived from the [single cluster](../../base/single_cluster) overlay, with only modification to [database configuration db.yaml](flyte/config/admin/db.yaml) - -**Advanced / OPTIONAL** -1. The default CORS setting in flyteAdmin allows cross origin requests. A more secure way would be to allow requests only from the expected domain. To do this, you will have to create a new *server.yaml* -similar to [base/single_cluster/headless/config](../../base/single_cluster/headless/config) under config/admin and then set -`server -> security -> allowedOrigins`. - -## flyteconsole - -[flyteconsole configmap](console/config.yaml) needs to be updated with flyteadmin internal load -balancer IP address or the DNS name associated with it if any. - -flyteconsole is exposed as a service using [internal load balancer](https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing). - -## flytepropeller - -flytepropeller configuration is derived from the [single cluster](../../base/single_cluster) overlay, with only modification to the config for performance tuning and logs -For logs configuration Replace `` in [config/propeller/plugins/task_logs.yaml](flyte/config/propeller/plugins/task_logs.yaml) to use CloudWatch - -Some important points - -* Storage configuration is shared with Admin and Catalog. Ideally in production Propeller should have its own configuration with real high cache size. - -* By default, three plugins are enabled: -1. container -2. k8s-array -3. sidecar - -## datacatalog - -datacatalog configuration is derived from the [single cluster](../../base/single_cluster) overlay, with only modification to [database configuration db.yaml](flyte/config/datacatalog/db.yaml) - - -## How to build your overlay -To build your overlay there are 2 options -1. Build it in your own repo Example coming soon :construction: -1. hack it in your clone of Flyte repo in place of EKS overlay. In this case just navigate to the root of the repo and run -```bash -$ make kustomize -``` -If all goes well a new overlay composite should be generated in [/deployment/eks/flyte_generated.yaml](../../../deployment/eks/flyte_generated.yaml) - -## Now ship it - -``` shell -make -kubectl apply -f deployment/gcp/flyte_generated.yaml -``` diff --git a/kustomize/overlays/eks/flyte/admin/deployment.yaml b/kustomize/overlays/eks/flyte/admin/deployment.yaml deleted file mode 100644 index b581a3dba1f..00000000000 --- a/kustomize/overlays/eks/flyte/admin/deployment.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flyteadmin - namespace: flyte -spec: - template: - spec: - containers: - - name: flyteadmin - resources: - limits: - memory: "1Gi" - cpu: "2" - ephemeral-storage: "1Gi" diff --git a/kustomize/overlays/eks/flyte/admin/service.yaml b/kustomize/overlays/eks/flyte/admin/service.yaml deleted file mode 100644 index de61a74fde8..00000000000 --- a/kustomize/overlays/eks/flyte/admin/service.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600" - # TODO add security groups - service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-...,sg-...,sg-..." - # TODO alter domain - external-dns.alpha.kubernetes.io/hostname: "flyteadmin.subdomain.mydomain.com" - name: flyteadmin - namespace: flyte -spec: - loadBalancerSourceRanges: - # TODO change source ip range if desired - - 0.0.0.0 - ports: - # TODO do multiple ports work for ELB - - name: http - port: 80 - protocol: TCP - targetPort: 8088 - - name: grpc - port: 80 - protocol: TCP - targetPort: 8089 - selector: - app: flyteadmin - type: LoadBalancer diff --git a/kustomize/overlays/eks/flyte/admin/serviceaccount.yaml b/kustomize/overlays/eks/flyte/admin/serviceaccount.yaml deleted file mode 100644 index cf30eaa74ad..00000000000 --- a/kustomize/overlays/eks/flyte/admin/serviceaccount.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flyteadmin - namespace: flyte - annotations: - eks.amazonaws.com/role-arn: "arn:aws:iam::111222333456:role/flyte-operator" - diff --git a/kustomize/overlays/eks/flyte/config/admin/db.yaml b/kustomize/overlays/eks/flyte/config/admin/db.yaml deleted file mode 100644 index d44ef2329d8..00000000000 --- a/kustomize/overlays/eks/flyte/config/admin/db.yaml +++ /dev/null @@ -1,7 +0,0 @@ -database: - port: 5432 - username: flyte - # TODO Change this to match aurora or rds postgres endpoint - host: flyteadmin-cluster.cluster-456123e6ivib.us-west-2.rds.amazonaws.com - dbname: flyte - passwordPath: /etc/db/pass.txt diff --git a/kustomize/overlays/eks/flyte/config/admin/task_resource_defaults.yaml b/kustomize/overlays/eks/flyte/config/admin/task_resource_defaults.yaml deleted file mode 100644 index 06870c232bf..00000000000 --- a/kustomize/overlays/eks/flyte/config/admin/task_resource_defaults.yaml +++ /dev/null @@ -1,10 +0,0 @@ -task_resources: - defaults: - cpu: 1000m - memory: 1000Mi - storage: 1000Mi - limits: - cpu: 2 - memory: 8Gi - storage: 2000Mi - gpu: 1 diff --git a/kustomize/overlays/eks/flyte/config/clusterresource-templates/ad_spark-role.yaml b/kustomize/overlays/eks/flyte/config/clusterresource-templates/ad_spark-role.yaml deleted file mode 100644 index 51998e30510..00000000000 --- a/kustomize/overlays/eks/flyte/config/clusterresource-templates/ad_spark-role.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: spark-role - namespace: {{ namespace }} -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - '*' -- apiGroups: - - "" - resources: - - services - verbs: - - '*' -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' diff --git a/kustomize/overlays/eks/flyte/config/clusterresource-templates/ae_spark-service-account.yaml b/kustomize/overlays/eks/flyte/config/clusterresource-templates/ae_spark-service-account.yaml deleted file mode 100644 index dddd8d27428..00000000000 --- a/kustomize/overlays/eks/flyte/config/clusterresource-templates/ae_spark-service-account.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: spark - namespace: {{ namespace }} diff --git a/kustomize/overlays/eks/flyte/config/clusterresource-templates/af_spark-role-binding.yaml b/kustomize/overlays/eks/flyte/config/clusterresource-templates/af_spark-role-binding.yaml deleted file mode 100644 index 2e9c8ae7655..00000000000 --- a/kustomize/overlays/eks/flyte/config/clusterresource-templates/af_spark-role-binding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: spark-role-binding - namespace: {{ namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: spark-role -subjects: -- kind: ServiceAccount - name: spark - namespace: {{ namespace }} - diff --git a/kustomize/overlays/eks/flyte/config/common/storage.yaml b/kustomize/overlays/eks/flyte/config/common/storage.yaml deleted file mode 100644 index 39dd3931122..00000000000 --- a/kustomize/overlays/eks/flyte/config/common/storage.yaml +++ /dev/null @@ -1,17 +0,0 @@ -storage: - type: stow - stow: - kind: s3 - config: - auth_type: iam - region: us-east-2 - # TODO replace with the container (bucket) in s3 used by Flyte as intermediate store - container: "flyte-demo" - # NOTE this cache configuration is purely for propeller. But since we are having a common storage - # config, we are configuring this value. In production create a separate storage config for - # propeller and increase the cache size - cache: - max_size_mbs: 512 - target_gc_percent: 70 - limits: - maxDownloadMBs: 10 diff --git a/kustomize/overlays/eks/flyte/config/datacatalog/db.yaml b/kustomize/overlays/eks/flyte/config/datacatalog/db.yaml deleted file mode 100644 index 6be110650dc..00000000000 --- a/kustomize/overlays/eks/flyte/config/datacatalog/db.yaml +++ /dev/null @@ -1,7 +0,0 @@ -database: - port: 5432 - username: flyte - # TODO Change this to match aurora or rds postgres endpoint - host: flyteadmin-cluster.cluster-456123e6ivib.us-west-2.rds.amazonaws.com - dbname: flytedatacatalog - passwordPath: /etc/db/pass.txt diff --git a/kustomize/overlays/eks/flyte/config/propeller/core.yaml b/kustomize/overlays/eks/flyte/config/propeller/core.yaml deleted file mode 100644 index baa8c6b2612..00000000000 --- a/kustomize/overlays/eks/flyte/config/propeller/core.yaml +++ /dev/null @@ -1,40 +0,0 @@ -propeller: - rawoutput-prefix: s3://my-s3-bucket/ - metadata-prefix: metadata/propeller - workers: 40 - gc-interval: 12h - max-workflow-retries: 50 - workflow-reeval-duration: 30s - downstream-eval-duration: 30s - limit-namespace: "all" - prof-port: 10254 - metrics-prefix: flyte - enable-admin-launcher: true - leader-election: - lock-config-map: - name: propeller-leader - namespace: flyte - enabled: true - lease-duration: 15s - renew-deadline: 10s - retry-period: 2s - kube-client-config: - qps: 100 - burst: 25 - timeout: 30s - queue: - type: batch - batching-interval: 2s - batch-size: -1 - queue: - type: maxof - rate: 100 - capacity: 1000 - base-delay: 5s - max-delay: 120s - sub-queue: - type: bucket - rate: 100 - capacity: 1000 - workflowStore: - policy: "ResourceVersionCache" diff --git a/kustomize/overlays/eks/flyte/config/propeller/enabled_plugins.yaml b/kustomize/overlays/eks/flyte/config/propeller/enabled_plugins.yaml deleted file mode 100644 index 9e4644ac18a..00000000000 --- a/kustomize/overlays/eks/flyte/config/propeller/enabled_plugins.yaml +++ /dev/null @@ -1,15 +0,0 @@ -tasks: - max-plugin-phase-versions: 1000000 - task-plugins: - enabled-plugins: - - container - - sidecar - - spark - - k8s-array - - pytorch - default-for-task-types: - container: container - sidecar: sidecar - spark: spark - container_array: k8s-array - pytorch: pytorch diff --git a/kustomize/overlays/eks/flyte/config/propeller/plugins/catalog_cache.yaml b/kustomize/overlays/eks/flyte/config/propeller/plugins/catalog_cache.yaml deleted file mode 100644 index 3678fbbc895..00000000000 --- a/kustomize/overlays/eks/flyte/config/propeller/plugins/catalog_cache.yaml +++ /dev/null @@ -1,6 +0,0 @@ -plugins: - catalogCache: - reader: - maxItems: 10000 - writer: - maxItems: 10000 diff --git a/kustomize/overlays/eks/flyte/config/propeller/plugins/k8s.yaml b/kustomize/overlays/eks/flyte/config/propeller/plugins/k8s.yaml deleted file mode 100644 index 8fe068397fe..00000000000 --- a/kustomize/overlays/eks/flyte/config/propeller/plugins/k8s.yaml +++ /dev/null @@ -1,8 +0,0 @@ -plugins: - k8s: - default-env-vars: - - FLYTE_AWS_ENDPOINT: "http://minio.flyte:9000" - - FLYTE_AWS_ACCESS_KEY_ID: minio - - FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage - default-cpus: 100m - default-memory: 100Mi diff --git a/kustomize/overlays/eks/flyte/config/propeller/plugins/qubole.yaml b/kustomize/overlays/eks/flyte/config/propeller/plugins/qubole.yaml deleted file mode 100644 index ea34d2752b9..00000000000 --- a/kustomize/overlays/eks/flyte/config/propeller/plugins/qubole.yaml +++ /dev/null @@ -1,3 +0,0 @@ -plugins: - qubole: - quboleTokenKey: "FLYTE_QUBOLE_CLIENT_TOKEN" diff --git a/kustomize/overlays/eks/flyte/config/propeller/plugins/spark.yaml b/kustomize/overlays/eks/flyte/config/propeller/plugins/spark.yaml deleted file mode 100644 index 6b514a8c363..00000000000 --- a/kustomize/overlays/eks/flyte/config/propeller/plugins/spark.yaml +++ /dev/null @@ -1,20 +0,0 @@ -plugins: - spark: - spark-config-default: - # We override the default credentials chain provider for Hadoop so that - # it can use the serviceAccount based IAM role or ec2 metadata based. - # This is more in line with how AWS works - - spark.hadoop.fs.s3a.aws.credentials.provider: "com.amazonaws.auth.DefaultAWSCredentialsProviderChain" - - spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version: "2" - - spark.kubernetes.allocation.batch.size: "50" - - spark.hadoop.fs.s3a.acl.default: "BucketOwnerFullControl" - - spark.hadoop.fs.s3n.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3n.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3a.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3a.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3a.multipart.threshold: "536870912" - - spark.blacklist.enabled: "true" - - spark.blacklist.timeout: "5m" - - spark.task.maxfailures: "8" diff --git a/kustomize/overlays/eks/flyte/config/propeller/plugins/task_logs.yaml b/kustomize/overlays/eks/flyte/config/propeller/plugins/task_logs.yaml deleted file mode 100644 index 6e46cde9c2d..00000000000 --- a/kustomize/overlays/eks/flyte/config/propeller/plugins/task_logs.yaml +++ /dev/null @@ -1,10 +0,0 @@ -plugins: - logs: - # Log links can link to multiple options - # #1 Kubernetes dashboard is disabled in GCP - kubernetes-enabled: false - # #2 AWS Cloudwatch - cloudwatch-enabled: true - # TODO Add region and log group - cloudwatch-region: - cloudwatch-log-group: diff --git a/kustomize/overlays/eks/flyte/console/service.yaml b/kustomize/overlays/eks/flyte/console/service.yaml deleted file mode 100644 index 7dcaed5d8bc..00000000000 --- a/kustomize/overlays/eks/flyte/console/service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600" - # TODO add your security groups here - service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-....,sg-...,sg-..." - # TODO add your external dns here - external-dns.alpha.kubernetes.io/hostname: "flyte.subdomain.mydomain.com" - name: flyteconsole - namespace: flyte -spec: - loadBalancerSourceRanges: - # TODO limit source ranges if you want - - 0.0.0.0 - ports: - - name: http - port: 80 - protocol: TCP - targetPort: 8080 - selector: - app: flyteconsole - type: LoadBalancer diff --git a/kustomize/overlays/eks/flyte/datacatalog/deployment.yaml b/kustomize/overlays/eks/flyte/datacatalog/deployment.yaml deleted file mode 100644 index 1035dac5a0d..00000000000 --- a/kustomize/overlays/eks/flyte/datacatalog/deployment.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: datacatalog - namespace: flyte -spec: - template: - spec: - containers: - - name: datacatalog - resources: - limits: - memory: "1Gi" - cpu: "2" - ephemeral-storage: "1000Mi" diff --git a/kustomize/overlays/eks/flyte/datacatalog/service.yaml b/kustomize/overlays/eks/flyte/datacatalog/service.yaml deleted file mode 100644 index 70e95295ab2..00000000000 --- a/kustomize/overlays/eks/flyte/datacatalog/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: datacatalog-metrics - namespace: flyte - annotations: - cloud.google.com/load-balancer-type: Internal -spec: - selector: - app: datacatalog - type: LoadBalancer - ports: - - name: http-metrics - protocol: TCP - port: 10254 diff --git a/kustomize/overlays/eks/flyte/ingress/README.md b/kustomize/overlays/eks/flyte/ingress/README.md deleted file mode 100644 index 28fa058659a..00000000000 --- a/kustomize/overlays/eks/flyte/ingress/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# :construction: Instructions to deploy ALB Ingress controller - -Follow instructions here to install ALB Ingress Controller: https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html - -Replace `alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:111111111111:certificate/e92fefd8-6197-4249-a524-431d611c9af6` in ingress.yaml and ingress_grpc.yaml with your own SSL cert (that you will create by following ALB Instructions above) diff --git a/kustomize/overlays/eks/flyte/ingress/ingress.yaml b/kustomize/overlays/eks/flyte/ingress/ingress.yaml deleted file mode 100644 index 05b6ba465e0..00000000000 --- a/kustomize/overlays/eks/flyte/ingress/ingress.yaml +++ /dev/null @@ -1,157 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: flytesystem - namespace: flyte - annotations: - kubernetes.io/ingress.class: alb - alb.ingress.kubernetes.io/tags: service_instance=production - alb.ingress.kubernetes.io/scheme: internet-facing - alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' - alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' - - # Instruct ALB Controller to not create multiple load balancers (and hence maintain a single endpoint for both GRPC and Http) - alb.ingress.kubernetes.io/group.name: flytesystem - - # Replace certificate Arn with one deployed to your EKS cluster. Follow instructions in README.md - alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:111111111111:certificate/e92fefd8-6197-4249-a524-431d611c9af6 - labels: - app: flyteadmin -spec: - rules: - - http: - paths: - - path: /* - pathType: ImplementationSpecific - backend: - service: - name: ssl-redirect - port: - name: use-annotation - - path: /console - pathType: ImplementationSpecific - backend: - service: - name: flyteconsole - port: - number: 80 - - path: /console/* - pathType: ImplementationSpecific - backend: - service: - name: flyteconsole - port: - number: 80 - - path: /api/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /healthcheck - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /v1/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - # Port 87 in FlyteAdmin maps to the redoc container. - - path: /openapi/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 87 - - path: /.well-known/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /login - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /login/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /logout - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /logout/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /callback - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /callback/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /me - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /config - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /config/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /oauth2 - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 - - path: /oauth2/* - pathType: ImplementationSpecific - backend: - service: - name: flyteadmin - port: - number: 80 diff --git a/kustomize/overlays/eks/flyte/ingress/ingress_grpc.yaml b/kustomize/overlays/eks/flyte/ingress/ingress_grpc.yaml deleted file mode 100644 index bfc75f6d356..00000000000 --- a/kustomize/overlays/eks/flyte/ingress/ingress_grpc.yaml +++ /dev/null @@ -1,52 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - annotations: - alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' - alb.ingress.kubernetes.io/backend-protocol-version: GRPC - alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]' - alb.ingress.kubernetes.io/scheme: internet-facing - alb.ingress.kubernetes.io/tags: service_instance=production - kubernetes.io/ingress.class: alb - nginx.ingress.kubernetes.io/ssl-redirect: "false" - alb.ingress.kubernetes.io/group.name: flytesystem - - # Replace certificate Arn with one deployed to your EKS cluster. Follow instructions in README.md - alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:111111111111:certificate/e92fefd8-6197-4249-a524-431d611c9af6 - labels: - app: flyteadmin - name: flytesystem-grpc - namespace: flyte -spec: - rules: - - http: - paths: - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.SignalService/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.AdminService/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.AuthMetadataService/* - pathType: ImplementationSpecific - - backend: - service: - name: flyteadmin - port: - number: 81 - path: /flyteidl.service.IdentityService/* - pathType: ImplementationSpecific diff --git a/kustomize/overlays/eks/flyte/ingress/kustomization.yaml b/kustomize/overlays/eks/flyte/ingress/kustomization.yaml deleted file mode 100644 index 2cb8f8d97aa..00000000000 --- a/kustomize/overlays/eks/flyte/ingress/kustomization.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: - - ingress.yaml - - ingress_grpc.yaml diff --git a/kustomize/overlays/eks/flyte/kustomization.yaml b/kustomize/overlays/eks/flyte/kustomization.yaml deleted file mode 100644 index cdc206dca1d..00000000000 --- a/kustomize/overlays/eks/flyte/kustomization.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -# Override the namespace -namespace: flyte - -bases: - - ../../../base/single_cluster/complete - - ingress - -resources: - - datacatalog/service.yaml - - propeller/service.yaml - -patchesStrategicMerge: - - admin/deployment.yaml - - admin/service.yaml - - admin/serviceaccount.yaml - - datacatalog/deployment.yaml - - propeller/deployment.yaml - - propeller/serviceaccount.yaml - - console/service.yaml - -# Files are read in alphabetical order. To ensure that we create the namespace first, prefix the file name with "aa". - -configMapGenerator: - - behavior: merge - files: - - ./config/admin/db.yaml - - ./config/admin/task_resource_defaults.yaml - - ./config/common/storage.yaml - name: flyte-admin-config - - behavior: merge - files: - - ./config/clusterresource-templates/ad_spark-role.yaml - - ./config/clusterresource-templates/ae_spark-service-account.yaml - - ./config/clusterresource-templates/af_spark-role-binding.yaml - name: clusterresource-template - - behavior: merge - files: - - ./config/propeller/core.yaml - - ./config/propeller/enabled_plugins.yaml - - ./config/propeller/plugins/catalog_cache.yaml - - ./config/propeller/plugins/k8s.yaml - - ./config/propeller/plugins/qubole.yaml - - ./config/propeller/plugins/spark.yaml - - ./config/propeller/plugins/task_logs.yaml - - ./config/common/storage.yaml - name: flyte-propeller-config - - behavior: merge - files: - - ./config/common/storage.yaml - - ./config/datacatalog/db.yaml - name: datacatalog-config - -########### -# Use this to record the password for the Google CloudSQL Database -secretGenerator: - - name: db-pass - behavior: merge - literals: - - pass.txt="yourpassword" diff --git a/kustomize/overlays/eks/flyte/propeller/deployment.yaml b/kustomize/overlays/eks/flyte/propeller/deployment.yaml deleted file mode 100644 index 9a46601b53c..00000000000 --- a/kustomize/overlays/eks/flyte/propeller/deployment.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flytepropeller - namespace: flyte -spec: - template: - spec: - containers: - - name: flytepropeller - resources: - limits: - memory: "4Gi" - cpu: "2" - ephemeral-storage: "1Gi" diff --git a/kustomize/overlays/eks/flyte/propeller/service.yaml b/kustomize/overlays/eks/flyte/propeller/service.yaml deleted file mode 100644 index e80a8746e6d..00000000000 --- a/kustomize/overlays/eks/flyte/propeller/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: flytepropeller - namespace: flyte - annotations: - cloud.google.com/load-balancer-type: Internal -spec: - type: LoadBalancer - selector: - app: flytepropeller - ports: - - name: http-metrics - protocol: TCP - port: 10254 diff --git a/kustomize/overlays/eks/flyte/propeller/serviceaccount.yaml b/kustomize/overlays/eks/flyte/propeller/serviceaccount.yaml deleted file mode 100644 index 9272749c4b6..00000000000 --- a/kustomize/overlays/eks/flyte/propeller/serviceaccount.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: flytepropeller - namespace: flyte - annotations: - # TODO the role to use - eks.amazonaws.com/role-arn: "arn:aws:iam::111222333456:role/flyte-operator" diff --git a/kustomize/overlays/eks/kustomization.yaml b/kustomize/overlays/eks/kustomization.yaml deleted file mode 100644 index b29d932a808..00000000000 --- a/kustomize/overlays/eks/kustomization.yaml +++ /dev/null @@ -1,51 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -bases: - # All the resources that make up the deployment - - flyte - ######## - # Operators to be enabled - ############# - # Dependencies to be configured - # In local we use minio, but in cloud environment use S3 / GCS / AFS / Oracle Blob store etc - # This is used for Resource pooling. On cloud you can use hosted redis (e.g. AWS elasticache) - # Contour is used to create ingress. On cloud service use the default provided ingress controllers or cloud LB's - # Add node ports for ease of use locally - - ../../base/operators/spark - - ../../base/operators/kfoperators/pytorch - # Optional dependency - - ../../base/addons/redis - -# Images that should be used -images: - # FlyteAdmin - - name: flyteadmin # match images with this name - newTag: v1.11.0-b1 # FLYTEADMIN_TAG override the tag - newName: cr.flyte.org/flyteorg/flyteadmin # override the name - # FlyteConsole - - name: flyteconsole # match images with this name - newTag: v1.11.0 # FLYTECONSOLE_TAG the tag - newName: cr.flyte.org/flyteorg/flyteconsole # override the namep - # Flyte DataCatalog - - name: datacatalog # match images with this name - newTag: v1.11.0-b1 # DATACATALOG_TAG override the tag - newName: cr.flyte.org/flyteorg/datacatalog # override the name - # FlytePropeller - - name: flytepropeller # match images with this name - newTag: v1.11.0-b1 # FLYTEPROPELLER_TAG override the tag - newName: cr.flyte.org/flyteorg/flytepropeller # override the name - # Webhook - - name: webhook # match images with this name - newTag: v1.11.0-b1 # FLYTEPROPELLER_TAG override the tag - newName: cr.flyte.org/flyteorg/flytepropeller # override the name - # Override postgres image to use alpine based (rather smaller) docker image - - name: postgres - newTag: 13-21.04_beta - newName: ecr.flyte.org/ubuntu/postgres - - name: minio - newTag: 2021.10.13-debian-10-r0 - newName: ecr.flyte.org/bitnami/minio - - name: redis - newTag: 6.2.5-debian-10-r59 - newName: ecr.flyte.org/bitnami/redis diff --git a/kustomize/overlays/gcp/README.md b/kustomize/overlays/gcp/README.md deleted file mode 100644 index 450f73dbfd1..00000000000 --- a/kustomize/overlays/gcp/README.md +++ /dev/null @@ -1,95 +0,0 @@ -[All Overlays](./) -# :beta: Google Cloud Platform Overlay - -This overlay serves as an example to bootstrap Flyte setup on Google Cloud Platform (GCP). It is not -designed to work out of the box due to the need of GCP resources. Please follow the instruction -below to further configure. - -_Hint_: searching `TODO:` through this directory would help to understand what needs to be done. - -## Cloud SQL - -[Cloud SQL](https://cloud.google.com/sql) is used as persistence layer. To set it up, please -follow standard GCP documentation. - -A few things are required for this overlay to function: - -* Two databases named as `flyte` and `datacatalog` -* A database user named as `flyte` -* Password of the database user can be added to either to [kustomization.yaml](kustomization.yaml) or you can create a new file and change the secretGenerator tag to use files. (Refer to kustomize documentation) -* Service account(s) associated with `flyteadmin` and `datacatalog` pods (either as GKE cluster - service account or through workload identity) should have `Cloud SQL Editor` role - -To securely access Cloud SQL instance, [Cloud SQL -Proxy](https://cloud.google.com/sql/docs/postgres/connect-admin-proxy) is launched as a pod sitting -in between Flyte and Cloud SQL instance. - -The kustomization files can be found under [cloudsqlproxy](dependencies/cloudsqlproxy/). Please note that one -needs to replace `` and `` accordingly in -[dependencies/cloudsqlproxy/deployment.yaml](cloudsqlproxy/deployment.yaml). - -## Create GCS Storage -1. Create a GCS bucket named as `flyte` in a GCP project. -1. Replace `` in [config/common/storage.yaml](flyte/config/common/storage.yaml) with the GCP project ID and if using a bucket other than Flyte then replace the bucket name too - -## flyteadmin - -flyteadmin configuration is derived from the [single cluster](../../base/single_cluster) overlay, with only modification to [database configuration db.yaml](flyte/config/admin/db.yaml) - -If one has followed [Cloud SQL](#cloud-sql) section, there is nothing to be done for database. - -**Advanced / OPTIONAL** -1. The default CORS setting in flyteAdmin allows cross origin requests. A more secure way would be to allow requests only from the expected domain. To do this, you will have to create a new *server.yaml* -similar to [base/single_cluster/headless/config](../../base/single_cluster/headless/config) under config/admin and then set -`server -> security -> allowedOrigins`. - -1. flyteadmin (including metrics endpoint) is exposed as a service using [internal load balancer](https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing). - -## flyteconsole - -[flyteconsole configmap](console/config.yaml) needs to be updated with flyteadmin internal load -balancer IP address or the DNS name associated with it if any. - -flyteconsole is exposed as a service using [internal load balancer](https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing). - -## flytepropeller - -flytepropeller configuration is derived from the [single cluster](../../base/single_cluster) overlay, with only modification to the config for performance tuning and logs -For logs configuration Replace `` in [config/propeller/plugins/task_logs.yaml](flyte/config/propeller/plugins/task_logs.yaml) with the GCP project ID - -Some important points - -* Storage configuration is shared with Admin and Catalog. Ideally in production Propeller should have its own configuration with real high cache size. - -* By default, three plugins are enabled: -1. container -2. k8s-array -3. sidecar - -* flytepropeller metrics endpoint is exposed as a service using [internal load balancer](https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing). - -## datacatalog - -datacatalog configuration is derived from the [single cluster](../../base/single_cluster) overlay, with only modification to [database configuration db.yaml](flyte/config/datacatalog/db.yaml) - -If one has followed [Cloud SQL](#cloud-sql) section, there is nothing to be done for database. - -datacatalog metrics endpoint is exposed as a service using [internal load -balancer](https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing). - - -## How to build your overlay -To build your overlay there are 2 options -1. Build it in your own repo Example coming soon :construction: -1. hack it in your clone of Flyte repo in place of GCP overlay. In this case just navigate to the root of the repo and run -```bash -$ make kustomize -``` -If all goes well a new overlay composite should be generated in [/deployment/gcp/flyte_generated.yaml](../../../deployment/gcp/flyte_generated.yaml) - -## Now ship it - -``` shell -make -kubectl apply -f deployment/gcp/flyte_generated.yaml -``` diff --git a/kustomize/overlays/gcp/flyte/admin/deployment.yaml b/kustomize/overlays/gcp/flyte/admin/deployment.yaml deleted file mode 100644 index b581a3dba1f..00000000000 --- a/kustomize/overlays/gcp/flyte/admin/deployment.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flyteadmin - namespace: flyte -spec: - template: - spec: - containers: - - name: flyteadmin - resources: - limits: - memory: "1Gi" - cpu: "2" - ephemeral-storage: "1Gi" diff --git a/kustomize/overlays/gcp/flyte/admin/service.yaml b/kustomize/overlays/gcp/flyte/admin/service.yaml deleted file mode 100644 index 1af1d10ce82..00000000000 --- a/kustomize/overlays/gcp/flyte/admin/service.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: flyteadmin - namespace: flyte - annotations: - cloud.google.com/load-balancer-type: Internal -spec: - type: LoadBalancer - ports: - - name: redoc - protocol: TCP - port: 87 - targetPort: 8087 - - name: http-metrics - protocol: TCP - port: 10254 diff --git a/kustomize/overlays/gcp/flyte/config/admin/db.yaml b/kustomize/overlays/gcp/flyte/config/admin/db.yaml deleted file mode 100644 index 4e2741221d9..00000000000 --- a/kustomize/overlays/gcp/flyte/config/admin/db.yaml +++ /dev/null @@ -1,6 +0,0 @@ -database: - port: 5432 - username: flyte - host: cloudsqlproxy - dbname: flyte - passwordPath: /etc/db/pass.txt diff --git a/kustomize/overlays/gcp/flyte/config/admin/task_resource_defaults.yaml b/kustomize/overlays/gcp/flyte/config/admin/task_resource_defaults.yaml deleted file mode 100644 index 06870c232bf..00000000000 --- a/kustomize/overlays/gcp/flyte/config/admin/task_resource_defaults.yaml +++ /dev/null @@ -1,10 +0,0 @@ -task_resources: - defaults: - cpu: 1000m - memory: 1000Mi - storage: 1000Mi - limits: - cpu: 2 - memory: 8Gi - storage: 2000Mi - gpu: 1 diff --git a/kustomize/overlays/gcp/flyte/config/clusterresource-templates/ad_spark-role.yaml b/kustomize/overlays/gcp/flyte/config/clusterresource-templates/ad_spark-role.yaml deleted file mode 100644 index 51998e30510..00000000000 --- a/kustomize/overlays/gcp/flyte/config/clusterresource-templates/ad_spark-role.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: spark-role - namespace: {{ namespace }} -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - '*' -- apiGroups: - - "" - resources: - - services - verbs: - - '*' -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' diff --git a/kustomize/overlays/gcp/flyte/config/clusterresource-templates/ae_spark-service-account.yaml b/kustomize/overlays/gcp/flyte/config/clusterresource-templates/ae_spark-service-account.yaml deleted file mode 100644 index dddd8d27428..00000000000 --- a/kustomize/overlays/gcp/flyte/config/clusterresource-templates/ae_spark-service-account.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: spark - namespace: {{ namespace }} diff --git a/kustomize/overlays/gcp/flyte/config/clusterresource-templates/af_spark-role-binding.yaml b/kustomize/overlays/gcp/flyte/config/clusterresource-templates/af_spark-role-binding.yaml deleted file mode 100644 index 2e9c8ae7655..00000000000 --- a/kustomize/overlays/gcp/flyte/config/clusterresource-templates/af_spark-role-binding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: spark-role-binding - namespace: {{ namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: spark-role -subjects: -- kind: ServiceAccount - name: spark - namespace: {{ namespace }} - diff --git a/kustomize/overlays/gcp/flyte/config/common/storage.yaml b/kustomize/overlays/gcp/flyte/config/common/storage.yaml deleted file mode 100644 index 6f20d08dcdc..00000000000 --- a/kustomize/overlays/gcp/flyte/config/common/storage.yaml +++ /dev/null @@ -1,19 +0,0 @@ -storage: - type: stow - stow: - kind: google - config: - json: "" - # TODO: replace with the GCP project ID - project_id: - scopes: https://www.googleapis.com/auth/cloud-platform - # TODO replace with the container (bucket) in GCS used by Flyte as intermediate store - container: "flyte" - # NOTE this cache configuration is purely for propeller. But since we are having a common storage - # config, we are configuring this value. In production create a separate storage config for - # propeller and increase the cache size - cache: - max_size_mbs: 512 - target_gc_percent: 70 - limits: - maxDownloadMBs: 10 diff --git a/kustomize/overlays/gcp/flyte/config/datacatalog/db.yaml b/kustomize/overlays/gcp/flyte/config/datacatalog/db.yaml deleted file mode 100644 index abfb3304592..00000000000 --- a/kustomize/overlays/gcp/flyte/config/datacatalog/db.yaml +++ /dev/null @@ -1,7 +0,0 @@ -database: - port: 5432 - username: flyte - host: cloudsqlproxy - dbname: datacatalog - options: "sslmode=disable" - passwordPath: /etc/db/pass.txt diff --git a/kustomize/overlays/gcp/flyte/config/propeller/core.yaml b/kustomize/overlays/gcp/flyte/config/propeller/core.yaml deleted file mode 100644 index b49a5f41887..00000000000 --- a/kustomize/overlays/gcp/flyte/config/propeller/core.yaml +++ /dev/null @@ -1,40 +0,0 @@ -propeller: - rawoutput-prefix: gs://my-s3-bucket/ - metadata-prefix: metadata/propeller - workers: 40 - gc-interval: 12h - max-workflow-retries: 50 - workflow-reeval-duration: 30s - downstream-eval-duration: 30s - limit-namespace: "all" - prof-port: 10254 - metrics-prefix: flyte - enable-admin-launcher: true - leader-election: - lock-config-map: - name: propeller-leader - namespace: flyte - enabled: true - lease-duration: 15s - renew-deadline: 10s - retry-period: 2s - kube-client-config: - qps: 100 - burst: 25 - timeout: 30s - queue: - type: batch - batching-interval: 2s - batch-size: -1 - queue: - type: maxof - rate: 100 - capacity: 1000 - base-delay: 5s - max-delay: 120s - sub-queue: - type: bucket - rate: 100 - capacity: 1000 - workflowStore: - policy: "ResourceVersionCache" diff --git a/kustomize/overlays/gcp/flyte/config/propeller/enabled_plugins.yaml b/kustomize/overlays/gcp/flyte/config/propeller/enabled_plugins.yaml deleted file mode 100644 index 9e4644ac18a..00000000000 --- a/kustomize/overlays/gcp/flyte/config/propeller/enabled_plugins.yaml +++ /dev/null @@ -1,15 +0,0 @@ -tasks: - max-plugin-phase-versions: 1000000 - task-plugins: - enabled-plugins: - - container - - sidecar - - spark - - k8s-array - - pytorch - default-for-task-types: - container: container - sidecar: sidecar - spark: spark - container_array: k8s-array - pytorch: pytorch diff --git a/kustomize/overlays/gcp/flyte/config/propeller/plugins/catalog_cache.yaml b/kustomize/overlays/gcp/flyte/config/propeller/plugins/catalog_cache.yaml deleted file mode 100644 index 3678fbbc895..00000000000 --- a/kustomize/overlays/gcp/flyte/config/propeller/plugins/catalog_cache.yaml +++ /dev/null @@ -1,6 +0,0 @@ -plugins: - catalogCache: - reader: - maxItems: 10000 - writer: - maxItems: 10000 diff --git a/kustomize/overlays/gcp/flyte/config/propeller/plugins/k8s.yaml b/kustomize/overlays/gcp/flyte/config/propeller/plugins/k8s.yaml deleted file mode 100644 index 8fe068397fe..00000000000 --- a/kustomize/overlays/gcp/flyte/config/propeller/plugins/k8s.yaml +++ /dev/null @@ -1,8 +0,0 @@ -plugins: - k8s: - default-env-vars: - - FLYTE_AWS_ENDPOINT: "http://minio.flyte:9000" - - FLYTE_AWS_ACCESS_KEY_ID: minio - - FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage - default-cpus: 100m - default-memory: 100Mi diff --git a/kustomize/overlays/gcp/flyte/config/propeller/plugins/qubole.yaml b/kustomize/overlays/gcp/flyte/config/propeller/plugins/qubole.yaml deleted file mode 100644 index ea34d2752b9..00000000000 --- a/kustomize/overlays/gcp/flyte/config/propeller/plugins/qubole.yaml +++ /dev/null @@ -1,3 +0,0 @@ -plugins: - qubole: - quboleTokenKey: "FLYTE_QUBOLE_CLIENT_TOKEN" diff --git a/kustomize/overlays/gcp/flyte/config/propeller/plugins/spark.yaml b/kustomize/overlays/gcp/flyte/config/propeller/plugins/spark.yaml deleted file mode 100644 index c1ffb9209a7..00000000000 --- a/kustomize/overlays/gcp/flyte/config/propeller/plugins/spark.yaml +++ /dev/null @@ -1,16 +0,0 @@ -plugins: - spark: - spark-config-default: - - spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version: "2" - - spark.kubernetes.allocation.batch.size: "50" - - spark.hadoop.fs.s3a.acl.default: "BucketOwnerFullControl" - - spark.hadoop.fs.s3n.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3n.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3a.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem" - - spark.hadoop.fs.AbstractFileSystem.s3a.impl: "org.apache.hadoop.fs.s3a.S3A" - - spark.hadoop.fs.s3a.multipart.threshold: "536870912" - - spark.blacklist.enabled: "true" - - spark.blacklist.timeout: "5m" - - spark.task.maxfailures: "8" diff --git a/kustomize/overlays/gcp/flyte/config/propeller/plugins/task_logs.yaml b/kustomize/overlays/gcp/flyte/config/propeller/plugins/task_logs.yaml deleted file mode 100644 index 5a9d0714c5e..00000000000 --- a/kustomize/overlays/gcp/flyte/config/propeller/plugins/task_logs.yaml +++ /dev/null @@ -1,10 +0,0 @@ -plugins: - logs: - # Log links can link to multiple options - # #1 Kubernetes dashboard is disabled in GCP - kubernetes-enabled: false - # #2 GCP stackdriver - stackdriver-enabled: true - # TODO: replace with the GCP project ID - gcp-project: - stackdriver-logresourcename: k8s_container diff --git a/kustomize/overlays/gcp/flyte/console/service.yaml b/kustomize/overlays/gcp/flyte/console/service.yaml deleted file mode 100644 index 2d3ad158aa2..00000000000 --- a/kustomize/overlays/gcp/flyte/console/service.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - cloud.google.com/load-balancer-type: Internal - name: flyteconsole - namespace: flyte -spec: - selector: - app: flyteconsole - type: LoadBalancer - ports: - - name: redoc - protocol: TCP - port: 87 - targetPort: 8087 - - name: http-metrics - protocol: TCP - port: 10254 diff --git a/kustomize/overlays/gcp/flyte/datacatalog/deployment.yaml b/kustomize/overlays/gcp/flyte/datacatalog/deployment.yaml deleted file mode 100644 index 1035dac5a0d..00000000000 --- a/kustomize/overlays/gcp/flyte/datacatalog/deployment.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: datacatalog - namespace: flyte -spec: - template: - spec: - containers: - - name: datacatalog - resources: - limits: - memory: "1Gi" - cpu: "2" - ephemeral-storage: "1000Mi" diff --git a/kustomize/overlays/gcp/flyte/datacatalog/service.yaml b/kustomize/overlays/gcp/flyte/datacatalog/service.yaml deleted file mode 100644 index 70e95295ab2..00000000000 --- a/kustomize/overlays/gcp/flyte/datacatalog/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: datacatalog-metrics - namespace: flyte - annotations: - cloud.google.com/load-balancer-type: Internal -spec: - selector: - app: datacatalog - type: LoadBalancer - ports: - - name: http-metrics - protocol: TCP - port: 10254 diff --git a/kustomize/overlays/gcp/flyte/kustomization.yaml b/kustomize/overlays/gcp/flyte/kustomization.yaml deleted file mode 100644 index 2e6e7e7cd8f..00000000000 --- a/kustomize/overlays/gcp/flyte/kustomization.yaml +++ /dev/null @@ -1,59 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -# Override the namespace -namespace: flyte - -bases: -- ../../../base/single_cluster/complete - -resources: -- datacatalog/service.yaml -- propeller/service.yaml - -patchesStrategicMerge: -- admin/deployment.yaml -- admin/service.yaml -- datacatalog/deployment.yaml -- propeller/deployment.yaml -- console/service.yaml - -# Files are read in alphabetical order. To ensure that we create the namespace first, prefix the file name with "aa". - -configMapGenerator: -- behavior: merge - files: - - ./config/admin/db.yaml - - ./config/admin/task_resource_defaults.yaml - - ./config/common/storage.yaml - name: flyte-admin-config -- behavior: merge - files: - - ./config/clusterresource-templates/ad_spark-role.yaml - - ./config/clusterresource-templates/ae_spark-service-account.yaml - - ./config/clusterresource-templates/af_spark-role-binding.yaml - name: clusterresource-template -- behavior: merge - files: - - ./config/propeller/core.yaml - - ./config/propeller/enabled_plugins.yaml - - ./config/propeller/plugins/catalog_cache.yaml - - ./config/propeller/plugins/k8s.yaml - - ./config/propeller/plugins/qubole.yaml - - ./config/propeller/plugins/spark.yaml - - ./config/propeller/plugins/task_logs.yaml - - ./config/common/storage.yaml - name: flyte-propeller-config -- behavior: merge - files: - - ./config/common/storage.yaml - - ./config/datacatalog/db.yaml - name: datacatalog-config - -########### -# Use this to record the password for the Google CloudSQL Database -secretGenerator: -- name: db-pass - behavior: merge - literals: - - pass.txt="yourpassword" diff --git a/kustomize/overlays/gcp/flyte/propeller/deployment.yaml b/kustomize/overlays/gcp/flyte/propeller/deployment.yaml deleted file mode 100644 index 9a46601b53c..00000000000 --- a/kustomize/overlays/gcp/flyte/propeller/deployment.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flytepropeller - namespace: flyte -spec: - template: - spec: - containers: - - name: flytepropeller - resources: - limits: - memory: "4Gi" - cpu: "2" - ephemeral-storage: "1Gi" diff --git a/kustomize/overlays/gcp/flyte/propeller/service.yaml b/kustomize/overlays/gcp/flyte/propeller/service.yaml deleted file mode 100644 index e80a8746e6d..00000000000 --- a/kustomize/overlays/gcp/flyte/propeller/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: flytepropeller - namespace: flyte - annotations: - cloud.google.com/load-balancer-type: Internal -spec: - type: LoadBalancer - selector: - app: flytepropeller - ports: - - name: http-metrics - protocol: TCP - port: 10254 diff --git a/kustomize/overlays/gcp/kustomization.yaml b/kustomize/overlays/gcp/kustomization.yaml deleted file mode 100644 index e8dc107ffa8..00000000000 --- a/kustomize/overlays/gcp/kustomization.yaml +++ /dev/null @@ -1,53 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -bases: - # All the resources that make up the deployment - - flyte - ######## - # Operators to be enabled - ############# - # Dependencies to be configured - # In local we use minio, but in cloud environment use S3 / GCS / AFS / Oracle Blob store etc - # This is used for Resource pooling. On cloud you can use hosted redis (e.g. AWS elasticache) - # Contour is used to create ingress. On cloud service use the default provided ingress controllers or cloud LB's - # Add node ports for ease of use locally - - ../../base/ingress - - ../../base/operators/spark - - ../../base/operators/kfoperators/pytorch - - ../../base/addons/cloudsqlproxy - # Optional dependency - - ../../base/addons/redis - -# Images that should be used -images: - # FlyteAdmin - - name: flyteadmin # match images with this name - newTag: v1.10.7-b2 # FLYTEADMIN_TAG override the tag - newName: cr.flyte.org/flyteorg/flyteadmin # override the name - # FlyteConsole - - name: flyteconsole # match images with this name - newTag: v1.10.2 # FLYTECONSOLE_TAG the tag - newName: cr.flyte.org/flyteorg/flyteconsole # override the namep - # Flyte DataCatalog - - name: datacatalog # match images with this name - newTag: v1.10.7-b2 # DATACATALOG_TAG override the tag - newName: cr.flyte.org/flyteorg/datacatalog # override the name - # FlytePropeller - - name: flytepropeller # match images with this name - newTag: v1.10.7-b2 # FLYTEPROPELLER_TAG override the tag - newName: cr.flyte.org/flyteorg/flytepropeller # override the name - # Webhook - - name: webhook # match images with this name - newTag: v1.10.7-b2 # FLYTEPROPELLER_TAG override the tag - newName: cr.flyte.org/flyteorg/flytepropeller # override the name - # Override postgres image to use alpine based (rather smaller) docker image - - name: postgres - newTag: 13-21.04_beta - newName: ecr.flyte.org/ubuntu/postgres - - name: minio - newTag: 2021.10.13-debian-10-r0 - newName: ecr.flyte.org/bitnami/minio - - name: redis - newTag: 6.2.5-debian-10-r59 - newName: ecr.flyte.org/bitnami/redis diff --git a/kustomize/overlays/sandbox/README.md b/kustomize/overlays/sandbox/README.md deleted file mode 100644 index 82dbef46f14..00000000000 --- a/kustomize/overlays/sandbox/README.md +++ /dev/null @@ -1,4 +0,0 @@ -[All overlays](../) -# Flyte Sandbox deployment - Kustomize overlay -This module creates a standalone Flyte cluster with all its dependencies. This is a great starting point for trying out Flyte and experimenting with Flyte. The overlay can be Kustomized and made to -scale higher, but as is is not intended for production use diff --git a/kustomize/overlays/sandbox/flyte/admin/deployment.yaml b/kustomize/overlays/sandbox/flyte/admin/deployment.yaml deleted file mode 100644 index 857439a6dca..00000000000 --- a/kustomize/overlays/sandbox/flyte/admin/deployment.yaml +++ /dev/null @@ -1,105 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flyteadmin - namespace: flyte -spec: - template: - spec: - volumes: - - name: resource-templates - configMap: - name: clusterresource-template - initContainers: - - name: check-db-ready - image: postgres:13-21.04_beta - command: [ - "sh", - "-c", - "until pg_isready -h postgres -p 5432; - do echo waiting for database; sleep 2; done;", - ] - securityContext: - runAsUser: 999 - - name: run-migrations - image: flyteadmin:v0.4.13 - imagePullPolicy: IfNotPresent - command: - [ - "flyteadmin", - "--config", - "/etc/flyte/config/*.yaml", - "migrate", - "run", - ] - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - - name: seed-projects - image: flyteadmin:v0.4.13 - imagePullPolicy: IfNotPresent - command: - [ - "flyteadmin", - "--config", - "/etc/flyte/config/*.yaml", - "migrate", - "seed-projects", - "flytesnacks", - "flyteexamples", - ] - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - - name: sync-cluster-resources - image: flyteadmin:v0.4.13 - imagePullPolicy: IfNotPresent - command: - [ - "flyteadmin", - "--config", - "/etc/flyte/config/*.yaml", - "clusterresource", - "sync", - ] - volumeMounts: - - name: resource-templates - mountPath: /etc/flyte/clusterresource/templates - - name: config-volume - mountPath: /etc/flyte/config - containers: - - name: flyteadmin - resources: - limits: - memory: "200Mi" - cpu: "0.1" - ephemeral-storage: "100Mi" - - name: sync-cluster-resources-goroutine - image: flyteadmin:v0.4.13 - imagePullPolicy: IfNotPresent - command: - [ - "flyteadmin", - "--config", - "/etc/flyte/config/*.yaml", - "clusterresource", - "run", - ] - volumeMounts: - - name: resource-templates - mountPath: /etc/flyte/clusterresource/templates - - name: config-volume - mountPath: /etc/flyte/config - ---- -apiVersion: v1 -kind: Service -metadata: - name: flyteadmin - namespace: flyte -spec: - ports: - - name: redoc - protocol: TCP - port: 87 - targetPort: 8087 diff --git a/kustomize/overlays/sandbox/flyte/config/admin/db.yaml b/kustomize/overlays/sandbox/flyte/config/admin/db.yaml deleted file mode 100644 index c71ee6e4bb4..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/admin/db.yaml +++ /dev/null @@ -1,6 +0,0 @@ -database: - port: 5432 - username: postgres - host: postgres - dbname: postgres - options: sslmode=disable diff --git a/kustomize/overlays/sandbox/flyte/config/admin/task_resource_defaults.yaml b/kustomize/overlays/sandbox/flyte/config/admin/task_resource_defaults.yaml deleted file mode 100644 index f3fd770e44c..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/admin/task_resource_defaults.yaml +++ /dev/null @@ -1,10 +0,0 @@ -task_resources: - defaults: - cpu: 100m - memory: 200Mi - storage: 5Mi - limits: - cpu: 2 - memory: 1Gi - storage: 20Mi - gpu: 1 diff --git a/kustomize/overlays/sandbox/flyte/config/clusterresource-templates/ad_spark-role.yaml b/kustomize/overlays/sandbox/flyte/config/clusterresource-templates/ad_spark-role.yaml deleted file mode 100644 index 51998e30510..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/clusterresource-templates/ad_spark-role.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: spark-role - namespace: {{ namespace }} -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - '*' -- apiGroups: - - "" - resources: - - services - verbs: - - '*' -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' diff --git a/kustomize/overlays/sandbox/flyte/config/clusterresource-templates/ae_spark-service-account.yaml b/kustomize/overlays/sandbox/flyte/config/clusterresource-templates/ae_spark-service-account.yaml deleted file mode 100644 index dddd8d27428..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/clusterresource-templates/ae_spark-service-account.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: spark - namespace: {{ namespace }} diff --git a/kustomize/overlays/sandbox/flyte/config/clusterresource-templates/af_spark-role-binding.yaml b/kustomize/overlays/sandbox/flyte/config/clusterresource-templates/af_spark-role-binding.yaml deleted file mode 100644 index 6fa4f5cb8a1..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/clusterresource-templates/af_spark-role-binding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: spark-role-binding - namespace: {{ namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: spark-role -subjects: -- kind: ServiceAccount - name: spark - namespace: {{ namespace }} diff --git a/kustomize/overlays/sandbox/flyte/config/common/logger.yaml b/kustomize/overlays/sandbox/flyte/config/common/logger.yaml deleted file mode 100644 index a6854ed6cec..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/common/logger.yaml +++ /dev/null @@ -1,3 +0,0 @@ -logger: - show-source: true - level: 2 diff --git a/kustomize/overlays/sandbox/flyte/config/common/storage.yaml b/kustomize/overlays/sandbox/flyte/config/common/storage.yaml deleted file mode 100644 index 16e6f527553..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/common/storage.yaml +++ /dev/null @@ -1,11 +0,0 @@ -storage: - type: minio - connection: - access-key: minio - auth-type: accesskey - secret-key: miniostorage - disable-ssl: true - endpoint: http://minio.flyte.svc.cluster.local:9000 - region: us-east-1 - container: "my-s3-bucket" - diff --git a/kustomize/overlays/sandbox/flyte/config/datacatalog/db.yaml b/kustomize/overlays/sandbox/flyte/config/datacatalog/db.yaml deleted file mode 100644 index 76ba812d63a..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/datacatalog/db.yaml +++ /dev/null @@ -1,6 +0,0 @@ -database: - port: 5432 - username: postgres - host: postgres - dbname: datacatalog - options: sslmode=disable diff --git a/kustomize/overlays/sandbox/flyte/config/propeller/enabled_plugins.yaml b/kustomize/overlays/sandbox/flyte/config/propeller/enabled_plugins.yaml deleted file mode 100644 index 0978255017d..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/propeller/enabled_plugins.yaml +++ /dev/null @@ -1,10 +0,0 @@ -tasks: - task-plugins: - enabled-plugins: - - container - - sidecar - - k8s-array - default-for-task-types: - container: container - sidecar: sidecar - container_array: k8s-array diff --git a/kustomize/overlays/sandbox/flyte/config/propeller/plugins/k8s.yaml b/kustomize/overlays/sandbox/flyte/config/propeller/plugins/k8s.yaml deleted file mode 100644 index 9f06f53fdbc..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/propeller/plugins/k8s.yaml +++ /dev/null @@ -1,8 +0,0 @@ -plugins: - k8s: - default-env-vars: - - FLYTE_AWS_ENDPOINT: "http://minio.flyte:9000" - - FLYTE_AWS_ACCESS_KEY_ID: minio - - FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage - default-cpus: 100m - default-memory: 200Mi diff --git a/kustomize/overlays/sandbox/flyte/config/propeller/plugins/task_logs.yaml b/kustomize/overlays/sandbox/flyte/config/propeller/plugins/task_logs.yaml deleted file mode 100644 index 2768f8c95df..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/propeller/plugins/task_logs.yaml +++ /dev/null @@ -1,4 +0,0 @@ -plugins: - logs: - kubernetes-enabled: true - kubernetes-template-uri: "http://localhost:30082/#/log/{{ .namespace }}/{{ .podName }}/pod?namespace={{ .namespace }}" diff --git a/kustomize/overlays/sandbox/flyte/config/propeller/resource_manager.yaml b/kustomize/overlays/sandbox/flyte/config/propeller/resource_manager.yaml deleted file mode 100644 index e08575c90bb..00000000000 --- a/kustomize/overlays/sandbox/flyte/config/propeller/resource_manager.yaml +++ /dev/null @@ -1,3 +0,0 @@ -propeller: - resourcemanager: - type: noop diff --git a/kustomize/overlays/sandbox/flyte/kustomization.yaml b/kustomize/overlays/sandbox/flyte/kustomization.yaml deleted file mode 100644 index 94eb948fa2f..00000000000 --- a/kustomize/overlays/sandbox/flyte/kustomization.yaml +++ /dev/null @@ -1,41 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -# Override the namespace -namespace: flyte - -bases: - - ../../../base/single_cluster/complete - -resources: - - propeller/webhook-secret.yaml - -patchesStrategicMerge: - - admin/deployment.yaml - - propeller/webhook.yaml - -configMapGenerator: - - behavior: merge - files: - - ./config/admin/db.yaml - - ./config/admin/task_resource_defaults.yaml - - ./config/common/storage.yaml - - ./config/common/logger.yaml - name: flyte-admin-config - - - behavior: merge - files: - - ./config/propeller/enabled_plugins.yaml - - ./config/propeller/resource_manager.yaml - - ./config/propeller/plugins/k8s.yaml - - ./config/propeller/plugins/task_logs.yaml - - ./config/common/storage.yaml - - ./config/common/logger.yaml - name: flyte-propeller-config - - - behavior: merge - files: - - ./config/common/storage.yaml - - ./config/common/logger.yaml - - ./config/datacatalog/db.yaml - name: datacatalog-config diff --git a/kustomize/overlays/sandbox/flyte/propeller/webhook-secret.yaml b/kustomize/overlays/sandbox/flyte/propeller/webhook-secret.yaml deleted file mode 100644 index 4029be3716f..00000000000 --- a/kustomize/overlays/sandbox/flyte/propeller/webhook-secret.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -data: - password: bXl1c2Vy - user_secret: bXlzZWNyZXQ= - username: bXl1c2Vy -kind: Secret -metadata: - name: user-info - namespace: flyte -type: Opaque diff --git a/kustomize/overlays/sandbox/flyte/propeller/webhook.yaml b/kustomize/overlays/sandbox/flyte/propeller/webhook.yaml deleted file mode 100644 index a659e88141d..00000000000 --- a/kustomize/overlays/sandbox/flyte/propeller/webhook.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flyte-pod-webhook - namespace: flyte -spec: - template: - spec: - containers: - - name: webhook - volumeMounts: - - name: sample-secrets - mountPath: /etc/secrets/user-info - readOnly: true - volumes: - - name: sample-secrets - secret: - secretName: user-info diff --git a/kustomize/overlays/sandbox/kustomization.yaml b/kustomize/overlays/sandbox/kustomization.yaml deleted file mode 100644 index e03f19ed1b5..00000000000 --- a/kustomize/overlays/sandbox/kustomization.yaml +++ /dev/null @@ -1,55 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -bases: - # All the resources that make up the deployment - - flyte - ######## - # Operators to be enabled - ############# - # Dependencies to be configured - # In local we use minio, but in cloud environment use S3 / GCS / AFS / Oracle Blob store etc - # This is used for Resource pooling. On cloud you can use hosted redis (e.g. AWS elasticache) - # Contour is used to create ingress. On cloud service use the default provided ingress controllers or cloud LB's - # Add node ports for ease of use locally - - ../../base/ingress - - ../../base/addons/database - - ../../base/addons/kubernetes_dashboard - - ../../base/addons/storage - - ../../base/addons/contour_ingress_controller - -resources: - - nodeport-services.yaml - -# Images that should be used -images: - # FlyteAdmin - - name: flyteadmin # match images with this name - newTag: v1.1.118 # FLYTEADMIN_TAG override the tag - newName: cr.flyte.org/flyteorg/flyteadmin # override the name - # FlyteConsole - - name: flyteconsole # match images with this name - newTag: v1.9.2 # FLYTECONSOLE_TAG the tag - newName: cr.flyte.org/flyteorg/flyteconsole # override the namep - # Flyte DataCatalog - - name: datacatalog # match images with this name - newTag: v1.0.51 # DATACATALOG_TAG override the tag - newName: cr.flyte.org/flyteorg/datacatalog # override the name - # FlytePropeller - - name: flytepropeller # match images with this name - newTag: v1.1.116 # FLYTEPROPELLER_TAG override the tag - newName: cr.flyte.org/flyteorg/flytepropeller # override the name - # Webhook - - name: webhook # match images with this name - newTag: v1.1.116 # FLYTEPROPELLER_TAG override the tag - newName: cr.flyte.org/flyteorg/flytepropeller # override the name - # Override postgres image to use alpine based (rather smaller) docker image - - name: postgres - newTag: 13-21.04_beta - newName: ecr.flyte.org/ubuntu/postgres - - name: minio - newTag: 2021.10.13-debian-10-r0 - newName: ecr.flyte.org/bitnami/minio - - name: redis - newTag: 6.2.5-debian-10-r59 - newName: ecr.flyte.org/bitnami/redis diff --git a/kustomize/overlays/sandbox/nodeport-services.yaml b/kustomize/overlays/sandbox/nodeport-services.yaml deleted file mode 100644 index 6439a773fce..00000000000 --- a/kustomize/overlays/sandbox/nodeport-services.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# For docker-desktop at least, the range of valid ports is 30000-32767, which is why we're constrained to these -# odd port numbers. Since the base ingress runs on 30081, the K8s dashboard runs on 30082, these just continue from there. -# These nodeports are exposed to save contributors the trouble of port forwarding when running locally. - -apiVersion: v1 -kind: Service -metadata: - labels: - app: postgres - name: postgres-direct - namespace: flyte -spec: - ports: - - nodePort: 30083 - port: 5432 - protocol: TCP - selector: - app: postgres - type: NodePort ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: minio - name: minio-direct - namespace: flyte -spec: - ports: - - nodePort: 30084 - port: 9000 - protocol: TCP - selector: - app: minio - type: NodePort ---- -#apiVersion: v1 -#kind: Service -#metadata: -#labels: -#k8s-app: kubernetes-dashboard -#name: dashboard-direct -#namespace: flyte -#spec: -#ports: -#- nodePort: 30082 -#port: 8443 -#protocol: TCP -#selector: -#k8s-app: kubernetes-dashboard -#type: NodePort diff --git a/kustomize/overlays/test/flyte/admin/deployment.yaml b/kustomize/overlays/test/flyte/admin/deployment.yaml deleted file mode 100644 index d0a5abfacfe..00000000000 --- a/kustomize/overlays/test/flyte/admin/deployment.yaml +++ /dev/null @@ -1,64 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flyteadmin - namespace: flyte -spec: - template: - spec: - volumes: - - name: resource-templates - configMap: - name: clusterresource-template - initContainers: - - name: check-db-ready - image: postgres:10.1 - command: ['sh', '-c', - 'until pg_isready -h postgres -p 5432; - do echo waiting for database; sleep 2; done;'] - securityContext: - runAsUser: 999 - - name: run-migrations - image: flyteadmin:v0.4.13 - imagePullPolicy: IfNotPresent - command: ["flyteadmin", "--config", "/etc/flyte/config/*.yaml", - "migrate", "run"] - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - - name: seed-projects - image: flyteadmin:v0.4.13 - imagePullPolicy: IfNotPresent - command: ["flyteadmin", "--config", "/etc/flyte/config/*.yaml", - "migrate", "seed-projects", "flytetester", "flytesnacks"] - volumeMounts: - - name: config-volume - mountPath: /etc/flyte/config - - name: sync-cluster-resources - image: flyteadmin:v0.4.13 - imagePullPolicy: IfNotPresent - command: ["flyteadmin", "--config", "/etc/flyte/config/*.yaml", "clusterresource", "sync"] - volumeMounts: - - name: resource-templates - mountPath: /etc/flyte/clusterresource/templates - - name: config-volume - mountPath: /etc/flyte/config - containers: - - name: flyteadmin - resources: - limits: - memory: "200Mi" - cpu: "0.1" - ephemeral-storage: "100Mi" ---- -apiVersion: v1 -kind: Service -metadata: - name: flyteadmin - namespace: flyte -spec: - ports: - - name: redoc - protocol: TCP - port: 87 - targetPort: 8087 diff --git a/kustomize/overlays/test/flyte/config/admin/db.yaml b/kustomize/overlays/test/flyte/config/admin/db.yaml deleted file mode 100644 index c71ee6e4bb4..00000000000 --- a/kustomize/overlays/test/flyte/config/admin/db.yaml +++ /dev/null @@ -1,6 +0,0 @@ -database: - port: 5432 - username: postgres - host: postgres - dbname: postgres - options: sslmode=disable diff --git a/kustomize/overlays/test/flyte/config/common/logger.yaml b/kustomize/overlays/test/flyte/config/common/logger.yaml deleted file mode 100644 index a6854ed6cec..00000000000 --- a/kustomize/overlays/test/flyte/config/common/logger.yaml +++ /dev/null @@ -1,3 +0,0 @@ -logger: - show-source: true - level: 2 diff --git a/kustomize/overlays/test/flyte/config/common/storage.yaml b/kustomize/overlays/test/flyte/config/common/storage.yaml deleted file mode 100644 index 16e6f527553..00000000000 --- a/kustomize/overlays/test/flyte/config/common/storage.yaml +++ /dev/null @@ -1,11 +0,0 @@ -storage: - type: minio - connection: - access-key: minio - auth-type: accesskey - secret-key: miniostorage - disable-ssl: true - endpoint: http://minio.flyte.svc.cluster.local:9000 - region: us-east-1 - container: "my-s3-bucket" - diff --git a/kustomize/overlays/test/flyte/config/datacatalog/db.yaml b/kustomize/overlays/test/flyte/config/datacatalog/db.yaml deleted file mode 100644 index 76ba812d63a..00000000000 --- a/kustomize/overlays/test/flyte/config/datacatalog/db.yaml +++ /dev/null @@ -1,6 +0,0 @@ -database: - port: 5432 - username: postgres - host: postgres - dbname: datacatalog - options: sslmode=disable diff --git a/kustomize/overlays/test/flyte/config/propeller/enabled_plugins.yaml b/kustomize/overlays/test/flyte/config/propeller/enabled_plugins.yaml deleted file mode 100644 index 0978255017d..00000000000 --- a/kustomize/overlays/test/flyte/config/propeller/enabled_plugins.yaml +++ /dev/null @@ -1,10 +0,0 @@ -tasks: - task-plugins: - enabled-plugins: - - container - - sidecar - - k8s-array - default-for-task-types: - container: container - sidecar: sidecar - container_array: k8s-array diff --git a/kustomize/overlays/test/flyte/config/propeller/plugins/k8s.yaml b/kustomize/overlays/test/flyte/config/propeller/plugins/k8s.yaml deleted file mode 100644 index 8fe068397fe..00000000000 --- a/kustomize/overlays/test/flyte/config/propeller/plugins/k8s.yaml +++ /dev/null @@ -1,8 +0,0 @@ -plugins: - k8s: - default-env-vars: - - FLYTE_AWS_ENDPOINT: "http://minio.flyte:9000" - - FLYTE_AWS_ACCESS_KEY_ID: minio - - FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage - default-cpus: 100m - default-memory: 100Mi diff --git a/kustomize/overlays/test/flyte/config/propeller/resource_manager.yaml b/kustomize/overlays/test/flyte/config/propeller/resource_manager.yaml deleted file mode 100644 index e08575c90bb..00000000000 --- a/kustomize/overlays/test/flyte/config/propeller/resource_manager.yaml +++ /dev/null @@ -1,3 +0,0 @@ -propeller: - resourcemanager: - type: noop diff --git a/kustomize/overlays/test/flyte/kustomization.yaml b/kustomize/overlays/test/flyte/kustomization.yaml deleted file mode 100644 index 3bdbb899cfe..00000000000 --- a/kustomize/overlays/test/flyte/kustomization.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -# Override the namespace -namespace: flyte - -bases: -- ../../../base/single_cluster/headless - -patchesStrategicMerge: -- admin/deployment.yaml - -configMapGenerator: -# the main admin configmap -- name: flyte-admin-config - behavior: merge - files: - - ./config/admin/db.yaml - - ./config/common/storage.yaml - - ./config/common/logger.yaml - -# Flyte Propeller Configuration -- name: flyte-propeller-config - behavior: merge - files: - - ./config/propeller/enabled_plugins.yaml - - ./config/propeller/resource_manager.yaml - - ./config/propeller/plugins/k8s.yaml - - ./config/common/storage.yaml - - ./config/common/logger.yaml - -# TODO Flyte Console Configuration -#- name: flyte-console-config -# files: -# - ./config/console.yaml - -- name: datacatalog-config - behavior: merge - files: - - ./config/datacatalog/db.yaml - - ./config/common/storage.yaml - - ./config/common/logger.yaml diff --git a/kustomize/overlays/test/kustomization.yaml b/kustomize/overlays/test/kustomization.yaml deleted file mode 100644 index b7511f89091..00000000000 --- a/kustomize/overlays/test/kustomization.yaml +++ /dev/null @@ -1,49 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -bases: - # All the resources that make up the deployment - - flyte - ######## - # Operators to be enabled - ############# - # Dependencies to be configured - # In local we use minio, but in cloud environment use S3 / GCS / AFS / Oracle Blob store etc - # This is used for Resource pooling. On cloud you can use hosted redis (e.g. AWS elasticache) - # Contour is used to create ingress. On cloud service use the default provided ingress controllers or cloud LB's - # Add node ports for ease of use locally - - ../../base/addons/database - - ../../base/addons/storage - -# Images that should be used -images: - # FlyteAdmin - - name: flyteadmin # match images with this name - newTag: v1.1.118 # FLYTEADMIN_TAG override the tag - newName: cr.flyte.org/flyteorg/flyteadmin # override the name - # FlyteConsole - - name: flyteconsole # match images with this name - newTag: v1.9.2 # FLYTECONSOLE_TAG the tag - newName: cr.flyte.org/flyteorg/flyteconsole # override the namep - # Flyte DataCatalog - - name: datacatalog # match images with this name - newTag: v1.0.51 # DATACATALOG_TAG override the tag - newName: cr.flyte.org/flyteorg/datacatalog # override the name - # FlytePropeller - - name: flytepropeller # match images with this name - newTag: v1.1.116 # FLYTEPROPELLER_TAG override the tag - newName: cr.flyte.org/flyteorg/flytepropeller # override the name - # Webhook - - name: webhook # match images with this name - newTag: v1.1.116 # FLYTEPROPELLER_TAG override the tag - newName: cr.flyte.org/flyteorg/flytepropeller # override the name - # Override postgres image to use alpine based (rather smaller) docker image - - name: postgres - newTag: 13-21.04_beta - newName: ecr.flyte.org/ubuntu/postgres - - name: minio - newTag: 2021.10.13-debian-10-r0 - newName: ecr.flyte.org/bitnami/minio - - name: redis - newTag: 6.2.5-debian-10-r59 - newName: ecr.flyte.org/bitnami/redis diff --git a/script/generate_kustomize.sh b/script/generate_kustomize.sh deleted file mode 100755 index 81a1142e009..00000000000 --- a/script/generate_kustomize.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -echo "Installing Kustomize" -KUSTOMIZE=_bin/kustomize -KUSTOMIZE_VERSION=${KUSTOMIZE_VERSION:-3.8.1} - -if [ -f ${KUSTOMIZE} ]; then - rm ${KUSTOMIZE} -fi -mkdir -p _bin; cd _bin -curl -s "https://raw.githubusercontent.com/\ -kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash -s ${KUSTOMIZE_VERSION} -cd - - -# All the overlays to be built -DEPLOYMENT=${1:-sandbox test eks gcp} - -KUSTOMIZE_OVERLAYS_ROOT=kustomize/overlays - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" - -for deployment in ${DEPLOYMENT}; do - ${KUSTOMIZE} build ${KUSTOMIZE_OVERLAYS_ROOT}/${deployment} > ${DIR}/../deployment/${deployment}/flyte_generated.yaml -done - -# This section is used by GitHub workflow to ensure that the generation step was run -if [ -n "$DELTA_CHECK" ]; then - DIRTY=$(git status --porcelain) - if [ -n "$DIRTY" ]; then - echo "FAILED: kustomize code updated without committing generated code." - echo "Ensure make kustomize has run and all changes are committed." - DIFF=$(git diff) - echo "diff detected: $DIFF" - DIFF=$(git diff --name-only) - echo "files different: $DIFF" - exit 1 - else - echo "SUCCESS: Generated code is up to date." - fi -fi diff --git a/script/release.sh b/script/release.sh index 1f3d763feee..45d31f53b95 100755 --- a/script/release.sh +++ b/script/release.sh @@ -5,12 +5,6 @@ set -ex FLYTEKIT_TAG=$(curl --silent "https://api.github.com/repos/flyteorg/flytekit/releases/latest" | jq -r .tag_name | sed 's/^v//') FLYTECONSOLE_TAG=$(curl --silent "https://api.github.com/repos/flyteorg/flyteconsole/releases/latest" | jq -r .tag_name) -# bump latest release of flyte component in kustomize -grep -rlZ "newTag:[^P]*# FLYTEADMIN_TAG" ./kustomize/overlays | xargs -I {} sed -i "s/newTag:[^P]*# FLYTEADMIN_TAG/newTag: ${VERSION} # FLYTEADMIN_TAG/g" {} -grep -rlZ "newTag:[^P]*# DATACATALOG_TAG" ./kustomize/overlays | xargs -I {} sed -i "s/newTag:[^P]*# DATACATALOG_TAG/newTag: ${VERSION} # DATACATALOG_TAG/g" {} -grep -rlZ "newTag:[^P]*# FLYTECONSOLE_TAG" ./kustomize/overlays | xargs -I {} sed -i "s/newTag:[^P]*# FLYTECONSOLE_TAG/newTag: ${FLYTECONSOLE_TAG} # FLYTECONSOLE_TAG/g" {} -grep -rlZ "newTag:[^P]*# FLYTEPROPELLER_TAG" ./kustomize/overlays | xargs -I {} sed -i "s/newTag:[^P]*# FLYTEPROPELLER_TAG/newTag: ${VERSION} # FLYTEPROPELLER_TAG/g" {} - # bump latest release of flyte component in helm sed -i "s,tag:[^P]*# FLYTEADMIN_TAG,tag: ${VERSION} # FLYTEADMIN_TAG," ./charts/flyte/values.yaml sed -i "s,tag:[^P]*# FLYTEADMIN_TAG,tag: ${VERSION} # FLYTEADMIN_TAG," ./charts/flyte-core/values.yaml From 1d2e305f2faf266a126f484bfefeb8f38aebdfb1 Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Mon, 11 Mar 2024 17:27:47 -0700 Subject: [PATCH 083/107] Add extra header to signed url (#4971) Signed-off-by: Kevin Su --- datacatalog/go.mod | 2 +- datacatalog/go.sum | 4 +- flyteadmin/dataproxy/service.go | 32 +- flyteadmin/go.mod | 2 +- flyteadmin/go.sum | 4 +- .../implementations/noop_remote_url_test.go | 4 + flytecopilot/go.mod | 2 +- flytecopilot/go.sum | 4 +- .../pb-es/flyteidl/service/dataproxy_pb.ts | 18 + .../pb-go/flyteidl/service/dataproxy.pb.go | 399 ++++++++++-------- .../flyteidl/service/dataproxy.swagger.json | 11 + flyteidl/gen/pb-js/flyteidl.d.ts | 12 + flyteidl/gen/pb-js/flyteidl.js | 48 ++- .../flyteidl/service/dataproxy_pb2.py | 48 ++- .../flyteidl/service/dataproxy_pb2.pyi | 19 +- flyteidl/gen/pb_rust/flyteidl.service.rs | 8 + flyteidl/go.mod | 2 +- flyteidl/go.sum | 4 +- .../protos/flyteidl/service/dataproxy.proto | 9 +- flyteplugins/go.mod | 2 +- flyteplugins/go.sum | 4 +- .../ioutils/remote_file_output_reader_test.go | 11 +- .../plugins/array/k8s/management_test.go | 13 +- flytepropeller/go.mod | 2 +- flytepropeller/go.sum | 4 +- .../nodes/dynamic/dynamic_workflow_test.go | 4 + .../pkg/controller/nodes/executor_test.go | 4 + flytestdlib/go.mod | 2 +- flytestdlib/go.sum | 4 +- flytestdlib/storage/mem_store.go | 11 +- flytestdlib/storage/storage.go | 9 +- flytestdlib/storage/stow_store.go | 42 +- flytestdlib/storage/stow_store_test.go | 4 +- go.mod | 2 +- go.sum | 4 +- 35 files changed, 484 insertions(+), 270 deletions(-) diff --git a/datacatalog/go.mod b/datacatalog/go.mod index 4116c4cc7f5..e8fafef6ab5 100644 --- a/datacatalog/go.mod +++ b/datacatalog/go.mod @@ -43,7 +43,7 @@ require ( github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/flyteorg/stow v0.3.8 // indirect + github.com/flyteorg/stow v0.3.9 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-gormigrate/gormigrate/v2 v2.1.1 // indirect diff --git a/datacatalog/go.sum b/datacatalog/go.sum index 786de45ede6..111ed2cb56d 100644 --- a/datacatalog/go.sum +++ b/datacatalog/go.sum @@ -113,8 +113,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.8 h1:4a6BtfgDR86fUwa48DkkZTcp6WK4oQXSfewPd/kN0Z4= -github.com/flyteorg/stow v0.3.8/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= +github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flyteadmin/dataproxy/service.go b/flyteadmin/dataproxy/service.go index 3d657c6958b..5bb7a16632e 100644 --- a/flyteadmin/dataproxy/service.go +++ b/flyteadmin/dataproxy/service.go @@ -49,11 +49,13 @@ func (s Service) CreateUploadLocation(ctx context.Context, req *service.CreateUp // If it doesn't exist, then proceed as normal. if len(req.Project) == 0 || len(req.Domain) == 0 { + logger.Infof(ctx, "project and domain are required parameters. Project [%v]. Domain [%v]", req.Project, req.Domain) return nil, errors.NewFlyteAdminErrorf(codes.InvalidArgument, "project and domain are required parameters") } // At least one of the hash or manually given prefix must be provided. if len(req.FilenameRoot) == 0 && len(req.ContentMd5) == 0 { + logger.Infof(ctx, "content_md5 or filename_root is a required parameter. FilenameRoot [%v], ContentMD5 [%v]", req.FilenameRoot, req.ContentMd5) return nil, errors.NewFlyteAdminErrorf(codes.InvalidArgument, "content_md5 or filename_root is a required parameter") } @@ -63,10 +65,12 @@ func (s Service) CreateUploadLocation(ctx context.Context, req *service.CreateUp knownLocation, err := createStorageLocation(ctx, s.dataStore, s.cfg.Upload, req.Project, req.Domain, req.FilenameRoot, req.Filename) if err != nil { + logger.Errorf(ctx, "failed to create storage location. Error %v", err) return nil, errors.NewFlyteAdminErrorf(codes.Internal, "failed to create storage location, Error: %v", err) } metadata, err := s.dataStore.Head(ctx, knownLocation) if err != nil { + logger.Errorf(ctx, "failed to check if file exists at location [%s], Error: %v", knownLocation.String(), err) return nil, errors.NewFlyteAdminErrorf(codes.Internal, "failed to check if file exists at location [%s], Error: %v", knownLocation.String(), err) } if metadata.Exists() { @@ -76,12 +80,18 @@ func (s Service) CreateUploadLocation(ctx context.Context, req *service.CreateUp if len(req.ContentMd5) == 0 { return nil, errors.NewFlyteAdminErrorf(codes.AlreadyExists, "file already exists at location [%v], specify a matching hash if you wish to rewrite", knownLocation) } - // Re-encode the hash 3-ways to support matching, hex, base32 and base64 - hexDigest := hex.EncodeToString(req.ContentMd5) - base32Digest := base32.StdEncoding.EncodeToString(req.ContentMd5) base64Digest := base64.StdEncoding.EncodeToString(req.ContentMd5) - if hexDigest != metadata.Etag() && base32Digest != metadata.Etag() && base64Digest != metadata.Etag() { - logger.Debugf(ctx, "File already exists at location [%v] but hashes do not match", knownLocation) + if len(metadata.ContentMD5()) == 0 { + // For backward compatibility, dataproxy assumes that the Etag exists if ContentMD5 is not in the metadata. + // Data proxy won't allow people to overwrite the file if both the Etag and the ContentMD5 do not exist. + hexDigest := hex.EncodeToString(req.ContentMd5) + base32Digest := base32.StdEncoding.EncodeToString(req.ContentMd5) + if hexDigest != metadata.Etag() && base32Digest != metadata.Etag() && base64Digest != metadata.Etag() { + logger.Errorf(ctx, "File already exists at location [%v] but hashes do not match", knownLocation) + return nil, errors.NewFlyteAdminErrorf(codes.AlreadyExists, "file already exists at location [%v], specify a matching hash if you wish to rewrite", knownLocation) + } + } else if base64Digest != metadata.ContentMD5() { + logger.Errorf(ctx, "File already exists at location [%v] but hashes do not match", knownLocation) return nil, errors.NewFlyteAdminErrorf(codes.AlreadyExists, "file already exists at location [%v], specify a matching hash if you wish to rewrite", knownLocation) } logger.Debugf(ctx, "File already exists at location [%v] but allowing rewrite", knownLocation) @@ -105,7 +115,7 @@ func (s Service) CreateUploadLocation(ctx context.Context, req *service.CreateUp req.Filename = rand.String(s.cfg.Upload.DefaultFileNameLength) } - md5 := base64.StdEncoding.EncodeToString(req.ContentMd5) + base64digestMD5 := base64.StdEncoding.EncodeToString(req.ContentMd5) var prefix string if len(req.FilenameRoot) > 0 { @@ -117,16 +127,19 @@ func (s Service) CreateUploadLocation(ctx context.Context, req *service.CreateUp storagePath, err := createStorageLocation(ctx, s.dataStore, s.cfg.Upload, req.Project, req.Domain, prefix, req.Filename) if err != nil { + logger.Errorf(ctx, "failed to create shardedStorageLocation. Error %v", err) return nil, errors.NewFlyteAdminErrorf(codes.Internal, "failed to create shardedStorageLocation, Error: %v", err) } resp, err := s.dataStore.CreateSignedURL(ctx, storagePath, storage.SignedURLProperties{ - Scope: stow.ClientMethodPut, - ExpiresIn: req.ExpiresIn.AsDuration(), - ContentMD5: md5, + Scope: stow.ClientMethodPut, + ExpiresIn: req.ExpiresIn.AsDuration(), + ContentMD5: base64digestMD5, + AddContentMD5Metadata: req.AddContentMd5Metadata, }) if err != nil { + logger.Errorf(ctx, "failed to create signed url. Error:", err) return nil, errors.NewFlyteAdminErrorf(codes.Internal, "failed to create a signed url. Error: %v", err) } @@ -134,6 +147,7 @@ func (s Service) CreateUploadLocation(ctx context.Context, req *service.CreateUp SignedUrl: resp.URL.String(), NativeUrl: storagePath.String(), ExpiresAt: timestamppb.New(time.Now().Add(req.ExpiresIn.AsDuration())), + Headers: resp.RequiredRequestHeaders, }, nil } diff --git a/flyteadmin/go.mod b/flyteadmin/go.mod index badc2a3c884..d029aec96b7 100644 --- a/flyteadmin/go.mod +++ b/flyteadmin/go.mod @@ -17,7 +17,7 @@ require ( github.com/flyteorg/flyte/flyteplugins v0.0.0-00010101000000-000000000000 github.com/flyteorg/flyte/flytepropeller v0.0.0-00010101000000-000000000000 github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000 - github.com/flyteorg/stow v0.3.8 + github.com/flyteorg/stow v0.3.9 github.com/ghodss/yaml v1.0.0 github.com/go-gormigrate/gormigrate/v2 v2.1.1 github.com/golang-jwt/jwt/v4 v4.5.0 diff --git a/flyteadmin/go.sum b/flyteadmin/go.sum index eb2eb483299..1b78514db87 100644 --- a/flyteadmin/go.sum +++ b/flyteadmin/go.sum @@ -237,8 +237,8 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flyteorg/stow v0.3.8 h1:4a6BtfgDR86fUwa48DkkZTcp6WK4oQXSfewPd/kN0Z4= -github.com/flyteorg/stow v0.3.8/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= +github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= diff --git a/flyteadmin/pkg/data/implementations/noop_remote_url_test.go b/flyteadmin/pkg/data/implementations/noop_remote_url_test.go index 0c05c2a3919..965dc9eeb20 100644 --- a/flyteadmin/pkg/data/implementations/noop_remote_url_test.go +++ b/flyteadmin/pkg/data/implementations/noop_remote_url_test.go @@ -14,6 +14,10 @@ const noopFileSize = int64(1256) type MockMetadata struct{} +func (m MockMetadata) ContentMD5() string { + return "" +} + func (m MockMetadata) Exists() bool { return true } diff --git a/flytecopilot/go.mod b/flytecopilot/go.mod index 254e636513a..52c7b25e796 100644 --- a/flytecopilot/go.mod +++ b/flytecopilot/go.mod @@ -39,7 +39,7 @@ require ( github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/flyteorg/stow v0.3.8 // indirect + github.com/flyteorg/stow v0.3.9 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect diff --git a/flytecopilot/go.sum b/flytecopilot/go.sum index 076bd774a82..b43c64842dc 100644 --- a/flytecopilot/go.sum +++ b/flytecopilot/go.sum @@ -103,8 +103,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.8 h1:4a6BtfgDR86fUwa48DkkZTcp6WK4oQXSfewPd/kN0Z4= -github.com/flyteorg/stow v0.3.8/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= +github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts b/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts index 2b4cf829abb..8ce9d574351 100644 --- a/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts @@ -60,6 +60,13 @@ export class CreateUploadLocationResponse extends Message headers = 4; + */ + headers: { [key: string]: string } = {}; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -71,6 +78,7 @@ export class CreateUploadLocationResponse extends Message): CreateUploadLocationResponse { @@ -152,6 +160,15 @@ export class CreateUploadLocationRequest extends Message) { super(); proto3.util.initPartial(data, this); @@ -166,6 +183,7 @@ export class CreateUploadLocationRequest extends Message): CreateUploadLocationRequest { diff --git a/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go b/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go index 3acf2559cf5..802d4080b44 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go @@ -86,6 +86,8 @@ type CreateUploadLocationResponse struct { NativeUrl string `protobuf:"bytes,2,opt,name=native_url,json=nativeUrl,proto3" json:"native_url,omitempty"` // ExpiresAt defines when will the signed URL expires. ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + // Data proxy generates these headers for client, and they have to add these headers to the request when uploading the file. + Headers map[string]string `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *CreateUploadLocationResponse) Reset() { @@ -141,6 +143,13 @@ func (x *CreateUploadLocationResponse) GetExpiresAt() *timestamppb.Timestamp { return nil } +func (x *CreateUploadLocationResponse) GetHeaders() map[string]string { + if x != nil { + return x.Headers + } + return nil +} + // CreateUploadLocationRequest specified request for the CreateUploadLocation API. // The implementation in data proxy service will create the s3 location with some server side configured prefixes, // and then: @@ -173,6 +182,10 @@ type CreateUploadLocationRequest struct { // in data proxy config. This option is useful when uploading multiple files. // +optional FilenameRoot string `protobuf:"bytes,6,opt,name=filename_root,json=filenameRoot,proto3" json:"filename_root,omitempty"` + // If true, the data proxy will add content_md5 to the metadata to the signed URL and + // it will force clients to add this metadata to the object. + // This make sure dataproxy is backward compatible with the old flytekit. + AddContentMd5Metadata bool `protobuf:"varint,7,opt,name=add_content_md5_metadata,json=addContentMd5Metadata,proto3" json:"add_content_md5_metadata,omitempty"` } func (x *CreateUploadLocationRequest) Reset() { @@ -249,6 +262,13 @@ func (x *CreateUploadLocationRequest) GetFilenameRoot() string { return "" } +func (x *CreateUploadLocationRequest) GetAddContentMd5Metadata() bool { + if x != nil { + return x.AddContentMd5Metadata + } + return false +} + // CreateDownloadLocationRequest specified request for the CreateDownloadLocation API. // // Deprecated: Marked as deprecated in flyteidl/service/dataproxy.proto. @@ -762,7 +782,7 @@ var file_flyteidl_service_dataproxy_proto_rawDesc = []byte{ 0x72, 0x65, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 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, 0x22, 0x97, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, + 0x6f, 0x22, 0xaa, 0x02, 0x0a, 0x1c, 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, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, @@ -771,163 +791,176 @@ var file_flyteidl_service_dataproxy_proto_rawDesc = []byte{ 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x03, 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, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xeb, 0x01, 0x0a, 0x1b, - 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, 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, 0x1a, 0x0a, - 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x04, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x49, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, - 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x4d, 0x64, 0x35, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x6c, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x7c, 0x0a, 0x1d, 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, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x02, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x49, 0x6e, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x7e, 0x0a, 0x1e, 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, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x73, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x41, 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xfa, 0x01, 0x0a, 0x19, 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, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x66, + 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x55, 0x0a, 0x07, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x02, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x65, 0x73, 0x49, 0x6e, 0x12, 0x54, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 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, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x1a, 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, 0x12, 0x21, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 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, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x47, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x52, - 0x0d, 0x70, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x22, 0x69, - 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, - 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x09, - 0x65, 0x78, 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, 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, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0a, - 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x72, - 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x55, 0x52, 0x4c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x55, 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, 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, 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, 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, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0xa4, + 0x02, 0x0a, 0x1b, 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, 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, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0a, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x04, 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, 0x09, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x18, + 0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, + 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7c, 0x0a, 0x1d, 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, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x5f, 0x69, 0x6e, 0x18, 0x02, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x3a, + 0x02, 0x18, 0x01, 0x22, 0x7e, 0x0a, 0x1e, 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, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x3a, + 0x02, 0x18, 0x01, 0x22, 0xfa, 0x01, 0x0a, 0x19, 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, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x02, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, + 0x12, 0x54, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 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, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x22, 0xc7, 0x01, 0x0a, 0x1a, 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, 0x12, + 0x21, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, + 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, + 0x74, 0x12, 0x47, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, + 0x75, 0x72, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, + 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x52, 0x0d, 0x70, 0x72, 0x65, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x22, 0x69, 0x0a, 0x0d, 0x50, 0x72, + 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x09, 0x65, 0x78, 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, 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, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, + 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 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, 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, 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, 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, + 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, 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, 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, + 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, } var ( @@ -943,7 +976,7 @@ func file_flyteidl_service_dataproxy_proto_rawDescGZIP() []byte { } var file_flyteidl_service_dataproxy_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_flyteidl_service_dataproxy_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_flyteidl_service_dataproxy_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_flyteidl_service_dataproxy_proto_goTypes = []interface{}{ (ArtifactType)(0), // 0: flyteidl.service.ArtifactType (*CreateUploadLocationResponse)(nil), // 1: flyteidl.service.CreateUploadLocationResponse @@ -955,39 +988,41 @@ var file_flyteidl_service_dataproxy_proto_goTypes = []interface{}{ (*PreSignedURLs)(nil), // 7: flyteidl.service.PreSignedURLs (*GetDataRequest)(nil), // 8: flyteidl.service.GetDataRequest (*GetDataResponse)(nil), // 9: flyteidl.service.GetDataResponse - (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 11: google.protobuf.Duration - (*core.NodeExecutionIdentifier)(nil), // 12: flyteidl.core.NodeExecutionIdentifier - (*core.LiteralMap)(nil), // 13: flyteidl.core.LiteralMap - (*core.Literal)(nil), // 14: flyteidl.core.Literal + nil, // 10: flyteidl.service.CreateUploadLocationResponse.HeadersEntry + (*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 12: google.protobuf.Duration + (*core.NodeExecutionIdentifier)(nil), // 13: flyteidl.core.NodeExecutionIdentifier + (*core.LiteralMap)(nil), // 14: flyteidl.core.LiteralMap + (*core.Literal)(nil), // 15: flyteidl.core.Literal } var file_flyteidl_service_dataproxy_proto_depIdxs = []int32{ - 10, // 0: flyteidl.service.CreateUploadLocationResponse.expires_at:type_name -> google.protobuf.Timestamp - 11, // 1: flyteidl.service.CreateUploadLocationRequest.expires_in:type_name -> google.protobuf.Duration - 11, // 2: flyteidl.service.CreateDownloadLocationRequest.expires_in:type_name -> google.protobuf.Duration - 10, // 3: flyteidl.service.CreateDownloadLocationResponse.expires_at:type_name -> google.protobuf.Timestamp - 0, // 4: flyteidl.service.CreateDownloadLinkRequest.artifact_type:type_name -> flyteidl.service.ArtifactType - 11, // 5: flyteidl.service.CreateDownloadLinkRequest.expires_in:type_name -> google.protobuf.Duration - 12, // 6: flyteidl.service.CreateDownloadLinkRequest.node_execution_id:type_name -> flyteidl.core.NodeExecutionIdentifier - 10, // 7: flyteidl.service.CreateDownloadLinkResponse.expires_at:type_name -> google.protobuf.Timestamp - 7, // 8: flyteidl.service.CreateDownloadLinkResponse.pre_signed_urls:type_name -> flyteidl.service.PreSignedURLs - 10, // 9: flyteidl.service.PreSignedURLs.expires_at:type_name -> google.protobuf.Timestamp - 13, // 10: flyteidl.service.GetDataResponse.literal_map:type_name -> flyteidl.core.LiteralMap - 7, // 11: flyteidl.service.GetDataResponse.pre_signed_urls:type_name -> flyteidl.service.PreSignedURLs - 14, // 12: flyteidl.service.GetDataResponse.literal:type_name -> flyteidl.core.Literal - 2, // 13: flyteidl.service.DataProxyService.CreateUploadLocation:input_type -> flyteidl.service.CreateUploadLocationRequest - 3, // 14: flyteidl.service.DataProxyService.CreateDownloadLocation:input_type -> flyteidl.service.CreateDownloadLocationRequest - 5, // 15: flyteidl.service.DataProxyService.CreateDownloadLink:input_type -> flyteidl.service.CreateDownloadLinkRequest - 8, // 16: flyteidl.service.DataProxyService.GetData:input_type -> flyteidl.service.GetDataRequest - 1, // 17: flyteidl.service.DataProxyService.CreateUploadLocation:output_type -> flyteidl.service.CreateUploadLocationResponse - 4, // 18: flyteidl.service.DataProxyService.CreateDownloadLocation:output_type -> flyteidl.service.CreateDownloadLocationResponse - 6, // 19: flyteidl.service.DataProxyService.CreateDownloadLink:output_type -> flyteidl.service.CreateDownloadLinkResponse - 9, // 20: flyteidl.service.DataProxyService.GetData:output_type -> flyteidl.service.GetDataResponse - 17, // [17:21] is the sub-list for method output_type - 13, // [13:17] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 11, // 0: flyteidl.service.CreateUploadLocationResponse.expires_at:type_name -> google.protobuf.Timestamp + 10, // 1: flyteidl.service.CreateUploadLocationResponse.headers:type_name -> flyteidl.service.CreateUploadLocationResponse.HeadersEntry + 12, // 2: flyteidl.service.CreateUploadLocationRequest.expires_in:type_name -> google.protobuf.Duration + 12, // 3: flyteidl.service.CreateDownloadLocationRequest.expires_in:type_name -> google.protobuf.Duration + 11, // 4: flyteidl.service.CreateDownloadLocationResponse.expires_at:type_name -> google.protobuf.Timestamp + 0, // 5: flyteidl.service.CreateDownloadLinkRequest.artifact_type:type_name -> flyteidl.service.ArtifactType + 12, // 6: flyteidl.service.CreateDownloadLinkRequest.expires_in:type_name -> google.protobuf.Duration + 13, // 7: flyteidl.service.CreateDownloadLinkRequest.node_execution_id:type_name -> flyteidl.core.NodeExecutionIdentifier + 11, // 8: flyteidl.service.CreateDownloadLinkResponse.expires_at:type_name -> google.protobuf.Timestamp + 7, // 9: flyteidl.service.CreateDownloadLinkResponse.pre_signed_urls:type_name -> flyteidl.service.PreSignedURLs + 11, // 10: flyteidl.service.PreSignedURLs.expires_at:type_name -> google.protobuf.Timestamp + 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 } func init() { file_flyteidl_service_dataproxy_proto_init() } @@ -1119,7 +1154,7 @@ func file_flyteidl_service_dataproxy_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_service_dataproxy_proto_rawDesc, NumEnums: 1, - NumMessages: 9, + NumMessages: 10, NumExtensions: 0, NumServices: 1, }, 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 e23e22df706..b26138d8b72 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json @@ -748,6 +748,10 @@ "filename_root": { "type": "string", "title": "If present, data proxy will use this string in lieu of the md5 hash in the path. When the filename is also included\nthis makes the upload location deterministic. The native url will still be prefixed by the upload location prefix\nin data proxy config. This option is useful when uploading multiple files.\n+optional" + }, + "add_content_md5_metadata": { + "type": "boolean", + "description": "If true, the data proxy will add content_md5 to the metadata to the signed URL and\nit will force clients to add this metadata to the object.\nThis make sure dataproxy is backward compatible with the old flytekit." } }, "description": "CreateUploadLocationRequest specified request for the CreateUploadLocation API.\nThe implementation in data proxy service will create the s3 location with some server side configured prefixes,\nand then:\n - project/domain/(a deterministic str representation of the content_md5)/filename (if present); OR\n - project/domain/filename_root (if present)/filename (if present)." @@ -767,6 +771,13 @@ "type": "string", "format": "date-time", "description": "ExpiresAt defines when will the signed URL expires." + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Data proxy generates these headers for client, and they have to add these headers to the request when uploading the file." } } }, diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 5cc6b36eeb1..8c01d5f2847 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -22747,6 +22747,9 @@ export namespace flyteidl { /** CreateUploadLocationResponse expiresAt */ expiresAt?: (google.protobuf.ITimestamp|null); + + /** CreateUploadLocationResponse headers */ + headers?: ({ [k: string]: string }|null); } /** Represents a CreateUploadLocationResponse. */ @@ -22767,6 +22770,9 @@ export namespace flyteidl { /** CreateUploadLocationResponse expiresAt. */ public expiresAt?: (google.protobuf.ITimestamp|null); + /** CreateUploadLocationResponse headers. */ + public headers: { [k: string]: string }; + /** * Creates a new CreateUploadLocationResponse instance using the specified properties. * @param [properties] Properties to set @@ -22820,6 +22826,9 @@ export namespace flyteidl { /** CreateUploadLocationRequest filenameRoot */ filenameRoot?: (string|null); + + /** CreateUploadLocationRequest addContentMd5Metadata */ + addContentMd5Metadata?: (boolean|null); } /** Represents a CreateUploadLocationRequest. */ @@ -22849,6 +22858,9 @@ export namespace flyteidl { /** CreateUploadLocationRequest filenameRoot. */ public filenameRoot: string; + /** CreateUploadLocationRequest addContentMd5Metadata. */ + public addContentMd5Metadata: boolean; + /** * Creates a new CreateUploadLocationRequest instance using the specified properties. * @param [properties] Properties to set diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 3400b971b3a..fffe3309026 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -53330,6 +53330,7 @@ * @property {string|null} [signedUrl] CreateUploadLocationResponse signedUrl * @property {string|null} [nativeUrl] CreateUploadLocationResponse nativeUrl * @property {google.protobuf.ITimestamp|null} [expiresAt] CreateUploadLocationResponse expiresAt + * @property {Object.|null} [headers] CreateUploadLocationResponse headers */ /** @@ -53341,6 +53342,7 @@ * @param {flyteidl.service.ICreateUploadLocationResponse=} [properties] Properties to set */ function CreateUploadLocationResponse(properties) { + this.headers = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -53371,6 +53373,14 @@ */ CreateUploadLocationResponse.prototype.expiresAt = null; + /** + * CreateUploadLocationResponse headers. + * @member {Object.} headers + * @memberof flyteidl.service.CreateUploadLocationResponse + * @instance + */ + CreateUploadLocationResponse.prototype.headers = $util.emptyObject; + /** * Creates a new CreateUploadLocationResponse instance using the specified properties. * @function create @@ -53401,6 +53411,9 @@ writer.uint32(/* id 2, wireType 2 =*/18).string(message.nativeUrl); if (message.expiresAt != null && message.hasOwnProperty("expiresAt")) $root.google.protobuf.Timestamp.encode(message.expiresAt, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.headers != null && message.hasOwnProperty("headers")) + for (var keys = Object.keys(message.headers), i = 0; i < keys.length; ++i) + writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.headers[keys[i]]).ldelim(); return writer; }; @@ -53418,7 +53431,7 @@ CreateUploadLocationResponse.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.service.CreateUploadLocationResponse(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.CreateUploadLocationResponse(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { @@ -53431,6 +53444,14 @@ case 3: message.expiresAt = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; + case 4: + reader.skip().pos++; + if (message.headers === $util.emptyObject) + message.headers = {}; + key = reader.string(); + reader.pos++; + message.headers[key] = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -53461,6 +53482,14 @@ if (error) return "expiresAt." + error; } + if (message.headers != null && message.hasOwnProperty("headers")) { + if (!$util.isObject(message.headers)) + return "headers: object expected"; + var key = Object.keys(message.headers); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.headers[key[i]])) + return "headers: string{k:string} expected"; + } return null; }; @@ -53479,6 +53508,7 @@ * @property {google.protobuf.IDuration|null} [expiresIn] CreateUploadLocationRequest expiresIn * @property {Uint8Array|null} [contentMd5] CreateUploadLocationRequest contentMd5 * @property {string|null} [filenameRoot] CreateUploadLocationRequest filenameRoot + * @property {boolean|null} [addContentMd5Metadata] CreateUploadLocationRequest addContentMd5Metadata */ /** @@ -53544,6 +53574,14 @@ */ CreateUploadLocationRequest.prototype.filenameRoot = ""; + /** + * CreateUploadLocationRequest addContentMd5Metadata. + * @member {boolean} addContentMd5Metadata + * @memberof flyteidl.service.CreateUploadLocationRequest + * @instance + */ + CreateUploadLocationRequest.prototype.addContentMd5Metadata = false; + /** * Creates a new CreateUploadLocationRequest instance using the specified properties. * @function create @@ -53580,6 +53618,8 @@ writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.contentMd5); if (message.filenameRoot != null && message.hasOwnProperty("filenameRoot")) writer.uint32(/* id 6, wireType 2 =*/50).string(message.filenameRoot); + if (message.addContentMd5Metadata != null && message.hasOwnProperty("addContentMd5Metadata")) + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.addContentMd5Metadata); return writer; }; @@ -53619,6 +53659,9 @@ case 6: message.filenameRoot = reader.string(); break; + case 7: + message.addContentMd5Metadata = reader.bool(); + break; default: reader.skipType(tag & 7); break; @@ -53658,6 +53701,9 @@ if (message.filenameRoot != null && message.hasOwnProperty("filenameRoot")) if (!$util.isString(message.filenameRoot)) return "filenameRoot: string expected"; + if (message.addContentMd5Metadata != null && message.hasOwnProperty("addContentMd5Metadata")) + if (typeof message.addContentMd5Metadata !== "boolean") + return "addContentMd5Metadata: boolean expected"; return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.py b/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.py index feced8c21ec..f4c25e43ae4 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\"\x97\x01\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\"\xeb\x01\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\"|\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\"\xa4\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\"|\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') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -28,6 +28,8 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024com.flyteidl.serviceB\016DataproxyProtoP\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' + _CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY._options = None + _CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY._serialized_options = b'8\001' _CREATEDOWNLOADLOCATIONREQUEST._options = None _CREATEDOWNLOADLOCATIONREQUEST._serialized_options = b'\030\001' _CREATEDOWNLOADLOCATIONRESPONSE._options = None @@ -44,26 +46,28 @@ _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=1731 - _globals['_ARTIFACTTYPE']._serialized_end=1798 + _globals['_ARTIFACTTYPE']._serialized_start=1935 + _globals['_ARTIFACTTYPE']._serialized_end=2002 _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_start=260 - _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_end=411 - _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_start=414 - _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_end=649 - _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_start=651 - _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_end=775 - _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_start=777 - _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_end=903 - _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_start=906 - _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_end=1156 - _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_start=1159 - _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_end=1358 - _globals['_PRESIGNEDURLS']._serialized_start=1360 - _globals['_PRESIGNEDURLS']._serialized_end=1465 - _globals['_GETDATAREQUEST']._serialized_start=1467 - _globals['_GETDATAREQUEST']._serialized_end=1512 - _globals['_GETDATARESPONSE']._serialized_start=1515 - _globals['_GETDATARESPONSE']._serialized_end=1729 - _globals['_DATAPROXYSERVICE']._serialized_start=1801 - _globals['_DATAPROXYSERVICE']._serialized_end=2701 + _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_end=558 + _globals['_CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY']._serialized_start=500 + _globals['_CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY']._serialized_end=558 + _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_start=561 + _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_end=853 + _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_start=855 + _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_end=979 + _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_start=981 + _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_end=1107 + _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_start=1110 + _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_end=1360 + _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_start=1363 + _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_end=1562 + _globals['_PRESIGNEDURLS']._serialized_start=1564 + _globals['_PRESIGNEDURLS']._serialized_end=1669 + _globals['_GETDATAREQUEST']._serialized_start=1671 + _globals['_GETDATAREQUEST']._serialized_end=1716 + _globals['_GETDATARESPONSE']._serialized_start=1719 + _globals['_GETDATARESPONSE']._serialized_end=1933 + _globals['_DATAPROXYSERVICE']._serialized_start=2005 + _globals['_DATAPROXYSERVICE']._serialized_end=2905 # @@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 40245087ab4..50c2bf3c5ed 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi @@ -20,30 +20,41 @@ ARTIFACT_TYPE_UNDEFINED: ArtifactType ARTIFACT_TYPE_DECK: ArtifactType class CreateUploadLocationResponse(_message.Message): - __slots__ = ["signed_url", "native_url", "expires_at"] + __slots__ = ["signed_url", "native_url", "expires_at", "headers"] + class HeadersEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... SIGNED_URL_FIELD_NUMBER: _ClassVar[int] NATIVE_URL_FIELD_NUMBER: _ClassVar[int] EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + HEADERS_FIELD_NUMBER: _ClassVar[int] signed_url: str native_url: str expires_at: _timestamp_pb2.Timestamp - def __init__(self, signed_url: _Optional[str] = ..., native_url: _Optional[str] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + headers: _containers.ScalarMap[str, str] + def __init__(self, signed_url: _Optional[str] = ..., native_url: _Optional[str] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., headers: _Optional[_Mapping[str, str]] = ...) -> None: ... class CreateUploadLocationRequest(_message.Message): - __slots__ = ["project", "domain", "filename", "expires_in", "content_md5", "filename_root"] + __slots__ = ["project", "domain", "filename", "expires_in", "content_md5", "filename_root", "add_content_md5_metadata"] PROJECT_FIELD_NUMBER: _ClassVar[int] DOMAIN_FIELD_NUMBER: _ClassVar[int] FILENAME_FIELD_NUMBER: _ClassVar[int] EXPIRES_IN_FIELD_NUMBER: _ClassVar[int] CONTENT_MD5_FIELD_NUMBER: _ClassVar[int] FILENAME_ROOT_FIELD_NUMBER: _ClassVar[int] + ADD_CONTENT_MD5_METADATA_FIELD_NUMBER: _ClassVar[int] project: str domain: str filename: str expires_in: _duration_pb2.Duration content_md5: bytes filename_root: str - def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., filename: _Optional[str] = ..., expires_in: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., content_md5: _Optional[bytes] = ..., filename_root: _Optional[str] = ...) -> None: ... + add_content_md5_metadata: bool + def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., filename: _Optional[str] = ..., expires_in: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., content_md5: _Optional[bytes] = ..., filename_root: _Optional[str] = ..., add_content_md5_metadata: bool = ...) -> None: ... class CreateDownloadLocationRequest(_message.Message): __slots__ = ["native_url", "expires_in"] diff --git a/flyteidl/gen/pb_rust/flyteidl.service.rs b/flyteidl/gen/pb_rust/flyteidl.service.rs index c4271703330..e53abba678d 100644 --- a/flyteidl/gen/pb_rust/flyteidl.service.rs +++ b/flyteidl/gen/pb_rust/flyteidl.service.rs @@ -85,6 +85,9 @@ pub struct CreateUploadLocationResponse { /// ExpiresAt defines when will the signed URL expires. #[prost(message, optional, tag="3")] pub expires_at: ::core::option::Option<::prost_types::Timestamp>, + /// Data proxy generates these headers for client, and they have to add these headers to the request when uploading the file. + #[prost(map="string, string", tag="4")] + pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// CreateUploadLocationRequest specified request for the CreateUploadLocation API. /// The implementation in data proxy service will create the s3 location with some server side configured prefixes, @@ -122,6 +125,11 @@ pub struct CreateUploadLocationRequest { /// +optional #[prost(string, tag="6")] pub filename_root: ::prost::alloc::string::String, + /// If true, the data proxy will add content_md5 to the metadata to the signed URL and + /// it will force clients to add this metadata to the object. + /// This make sure dataproxy is backward compatible with the old flytekit. + #[prost(bool, tag="7")] + pub add_content_md5_metadata: bool, } /// CreateDownloadLocationRequest specified request for the CreateDownloadLocation API. #[allow(clippy::derive_partial_eq_without_eq)] diff --git a/flyteidl/go.mod b/flyteidl/go.mod index dcc6b2ccaf0..29ec7f91646 100644 --- a/flyteidl/go.mod +++ b/flyteidl/go.mod @@ -45,7 +45,7 @@ require ( github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/flyteorg/stow v0.3.8 // indirect + github.com/flyteorg/stow v0.3.9 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect diff --git a/flyteidl/go.sum b/flyteidl/go.sum index 0fa41c00049..0b4fde0b1df 100644 --- a/flyteidl/go.sum +++ b/flyteidl/go.sum @@ -105,8 +105,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.8 h1:4a6BtfgDR86fUwa48DkkZTcp6WK4oQXSfewPd/kN0Z4= -github.com/flyteorg/stow v0.3.8/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= +github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flyteidl/protos/flyteidl/service/dataproxy.proto b/flyteidl/protos/flyteidl/service/dataproxy.proto index 622910f6450..b24c794cc88 100644 --- a/flyteidl/protos/flyteidl/service/dataproxy.proto +++ b/flyteidl/protos/flyteidl/service/dataproxy.proto @@ -20,6 +20,9 @@ message CreateUploadLocationResponse { // ExpiresAt defines when will the signed URL expires. google.protobuf.Timestamp expires_at = 3; + + // Data proxy generates these headers for client, and they have to add these headers to the request when uploading the file. + map headers = 4; } // CreateUploadLocationRequest specified request for the CreateUploadLocation API. @@ -55,6 +58,11 @@ message CreateUploadLocationRequest { // in data proxy config. This option is useful when uploading multiple files. // +optional string filename_root = 6; + + // If true, the data proxy will add content_md5 to the metadata to the signed URL and + // it will force clients to add this metadata to the object. + // This make sure dataproxy is backward compatible with the old flytekit. + bool add_content_md5_metadata = 7; } // CreateDownloadLocationRequest specified request for the CreateDownloadLocation API. @@ -67,7 +75,6 @@ message CreateDownloadLocationRequest { // exceeds the platform allowed max. // +optional. The default value comes from a global config. google.protobuf.Duration expires_in = 2; - } message CreateDownloadLocationResponse { diff --git a/flyteplugins/go.mod b/flyteplugins/go.mod index 4b9e7d5f474..db98207f715 100644 --- a/flyteplugins/go.mod +++ b/flyteplugins/go.mod @@ -64,7 +64,7 @@ require ( github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/flyteorg/stow v0.3.8 // indirect + github.com/flyteorg/stow v0.3.9 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-logr/logr v1.2.4 // indirect diff --git a/flyteplugins/go.sum b/flyteplugins/go.sum index 89e2a0ee49c..46164324415 100644 --- a/flyteplugins/go.sum +++ b/flyteplugins/go.sum @@ -138,8 +138,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.8 h1:4a6BtfgDR86fUwa48DkkZTcp6WK4oQXSfewPd/kN0Z4= -github.com/flyteorg/stow v0.3.8/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= +github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_reader_test.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_reader_test.go index 0e7ae179d92..251a3adc55e 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_reader_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_reader_test.go @@ -14,9 +14,14 @@ import ( ) type MemoryMetadata struct { - exists bool - size int64 - etag string + exists bool + size int64 + etag string + contentMD5 string +} + +func (m MemoryMetadata) ContentMD5() string { + return m.contentMD5 } func (m MemoryMetadata) Size() int64 { diff --git a/flyteplugins/go/tasks/plugins/array/k8s/management_test.go b/flyteplugins/go/tasks/plugins/array/k8s/management_test.go index 0eaed654672..c5d52efda71 100644 --- a/flyteplugins/go/tasks/plugins/array/k8s/management_test.go +++ b/flyteplugins/go/tasks/plugins/array/k8s/management_test.go @@ -27,9 +27,10 @@ import ( ) type metadata struct { - exists bool - size int64 - etag string + exists bool + size int64 + etag string + contentMD5 string } func (m metadata) Exists() bool { @@ -44,6 +45,10 @@ func (m metadata) Etag() string { return m.etag } +func (m metadata) ContentMD5() string { + return m.contentMD5 +} + func createSampleContainerTask() *core2.Container { return &core2.Container{ Command: []string{"cmd"}, @@ -127,7 +132,7 @@ func getMockTaskExecutionContext(ctx context.Context, parallelism int) *mocks.Ta matchedBy := mock.MatchedBy(func(s storage.DataReference) bool { return true }) - composedProtobufStore.On("Head", mock.Anything, matchedBy).Return(metadata{true, 0, ""}, nil) + composedProtobufStore.On("Head", mock.Anything, matchedBy).Return(metadata{true, 0, "", ""}, nil) dataStore := &storage.DataStore{ ComposedProtobufStore: composedProtobufStore, ReferenceConstructor: &storage.URLPathConstructor{}, diff --git a/flytepropeller/go.mod b/flytepropeller/go.mod index a3be11827c5..f42e61897e4 100644 --- a/flytepropeller/go.mod +++ b/flytepropeller/go.mod @@ -72,7 +72,7 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect - github.com/flyteorg/stow v0.3.8 // indirect + github.com/flyteorg/stow v0.3.9 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect diff --git a/flytepropeller/go.sum b/flytepropeller/go.sum index 04f1dc08f37..93880b2b314 100644 --- a/flytepropeller/go.sum +++ b/flytepropeller/go.sum @@ -144,8 +144,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.8 h1:4a6BtfgDR86fUwa48DkkZTcp6WK4oQXSfewPd/kN0Z4= -github.com/flyteorg/stow v0.3.8/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= +github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go index 3c016fe6bf9..4011ffb9564 100644 --- a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go +++ b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go @@ -584,6 +584,10 @@ func Test_dynamicNodeHandler_buildContextualDynamicWorkflow_withLaunchPlans(t *t type existsMetadata struct{} +func (e existsMetadata) ContentMD5() string { + return "" +} + func (e existsMetadata) Exists() bool { return false } diff --git a/flytepropeller/pkg/controller/nodes/executor_test.go b/flytepropeller/pkg/controller/nodes/executor_test.go index 2bc552bab03..237928a937c 100644 --- a/flytepropeller/pkg/controller/nodes/executor_test.go +++ b/flytepropeller/pkg/controller/nodes/executor_test.go @@ -2541,6 +2541,10 @@ func init() { type existsMetadata struct{} +func (e existsMetadata) ContentMD5() string { + return "" +} + func (e existsMetadata) Exists() bool { return false } diff --git a/flytestdlib/go.mod b/flytestdlib/go.mod index 947fbe4b5c7..314e9ad0505 100644 --- a/flytestdlib/go.mod +++ b/flytestdlib/go.mod @@ -9,7 +9,7 @@ require ( github.com/ernesto-jimenez/gogen v0.0.0-20180125220232-d7d4131e6607 github.com/fatih/color v1.13.0 github.com/fatih/structtag v1.2.0 - github.com/flyteorg/stow v0.3.8 + github.com/flyteorg/stow v0.3.9 github.com/fsnotify/fsnotify v1.6.0 github.com/ghodss/yaml v1.0.0 github.com/go-gormigrate/gormigrate/v2 v2.1.1 diff --git a/flytestdlib/go.sum b/flytestdlib/go.sum index baacaca1e51..6d6cb155671 100644 --- a/flytestdlib/go.sum +++ b/flytestdlib/go.sum @@ -115,8 +115,8 @@ github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/flyteorg/stow v0.3.8 h1:4a6BtfgDR86fUwa48DkkZTcp6WK4oQXSfewPd/kN0Z4= -github.com/flyteorg/stow v0.3.8/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= +github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flytestdlib/storage/mem_store.go b/flytestdlib/storage/mem_store.go index abe4de12cd4..a95a0a49ca2 100644 --- a/flytestdlib/storage/mem_store.go +++ b/flytestdlib/storage/mem_store.go @@ -19,9 +19,10 @@ type InMemoryStore struct { } type MemoryMetadata struct { - exists bool - size int64 - etag string + exists bool + size int64 + etag string + contentMD5 string } func (m MemoryMetadata) Size() int64 { @@ -36,6 +37,10 @@ func (m MemoryMetadata) Etag() string { return m.etag } +func (m MemoryMetadata) ContentMD5() string { + return m.contentMD5 +} + func (s *InMemoryStore) Head(ctx context.Context, reference DataReference) (Metadata, error) { data, found := s.cache[reference] var hash [md5.Size]byte diff --git a/flytestdlib/storage/storage.go b/flytestdlib/storage/storage.go index a022ce3e624..3e84cb7acb3 100644 --- a/flytestdlib/storage/storage.go +++ b/flytestdlib/storage/storage.go @@ -34,6 +34,10 @@ type Metadata interface { Exists() bool Size() int64 Etag() string + // ContentMD5 retrieves the value of a special metadata tag added by the system that + // contains the MD5 of the uploaded file. If there is no metadata attached + // or that `FlyteContentMD5` key isn't set, ContentMD5 will return empty. + ContentMD5() string } // DataStore is a simplified interface for accessing and storing data in one of the Cloud stores. @@ -52,10 +56,13 @@ type SignedURLProperties struct { ExpiresIn time.Duration // ContentMD5 defines the expected hash of the generated file. It's strongly recommended setting it. ContentMD5 string + // AddContentMD5Metadata Add ContentMD5 to the metadata of signed URL if true. + AddContentMD5Metadata bool } type SignedURLResponse struct { - URL url.URL + URL url.URL + RequiredRequestHeaders map[string]string } //go:generate mockery -name RawStore -case=underscore diff --git a/flytestdlib/storage/stow_store.go b/flytestdlib/storage/stow_store.go index 701604d4370..092ac1bbed7 100644 --- a/flytestdlib/storage/stow_store.go +++ b/flytestdlib/storage/stow_store.go @@ -6,6 +6,7 @@ import ( "io" "net/url" "strconv" + "strings" "sync" "time" @@ -27,9 +28,8 @@ import ( "github.com/flyteorg/stow/swift" ) -const ( - FailureTypeLabel contextutils.Key = "failure_type" -) +const FailureTypeLabel contextutils.Key = "failure_type" +const FlyteContentMD5 = "flyteContentMD5" var fQNFn = map[string]func(string) DataReference{ s3.Kind: func(bucket string) DataReference { @@ -104,9 +104,10 @@ type stowMetrics struct { // StowMetadata that will be returned type StowMetadata struct { - exists bool - size int64 - etag string + exists bool + size int64 + etag string + contentMD5 string } func (s StowMetadata) Size() int64 { @@ -121,6 +122,10 @@ func (s StowMetadata) Etag() string { return s.etag } +func (s StowMetadata) ContentMD5() string { + return s.contentMD5 +} + // Implements DataStore to talk to stow location store. type StowStore struct { copyImpl @@ -221,12 +226,19 @@ func (s *StowStore) Head(ctx context.Context, reference DataReference) (Metadata // Err will be caught below } else if etag, err := item.ETag(); err != nil { // Err will be caught below + } else if metadata, err := item.Metadata(); err != nil { + // Err will be caught below } else { t.Stop() + contentMD5, ok := metadata[strings.ToLower(FlyteContentMD5)].(string) + if !ok { + logger.Warningf(ctx, "Failed to cast contentMD5 [%v] to string", contentMD5) + } return StowMetadata{ - exists: true, - size: size, - etag: etag, + exists: true, + size: size, + etag: etag, + contentMD5: contentMD5, }, nil } } @@ -345,22 +357,24 @@ func (s *StowStore) CreateSignedURL(ctx context.Context, reference DataReference return SignedURLResponse{}, err } - urlStr, err := c.PreSignRequest(ctx, properties.Scope, key, stow.PresignRequestParams{ - ExpiresIn: properties.ExpiresIn, - ContentMD5: properties.ContentMD5, + res, err := c.PreSignRequest(ctx, properties.Scope, key, stow.PresignRequestParams{ + ExpiresIn: properties.ExpiresIn, + ContentMD5: properties.ContentMD5, + AddContentMD5Metadata: properties.AddContentMD5Metadata, }) if err != nil { return SignedURLResponse{}, err } - urlVal, err := url.Parse(urlStr) + urlVal, err := url.Parse(res.Url) if err != nil { return SignedURLResponse{}, err } return SignedURLResponse{ - URL: *urlVal, + URL: *urlVal, + RequiredRequestHeaders: res.RequiredRequestHeaders, }, nil } diff --git a/flytestdlib/storage/stow_store_test.go b/flytestdlib/storage/stow_store_test.go index d888977c577..99678eb8adc 100644 --- a/flytestdlib/storage/stow_store_test.go +++ b/flytestdlib/storage/stow_store_test.go @@ -53,8 +53,8 @@ type mockStowContainer struct { // CreateSignedURL creates a signed url with the provided properties. func (m mockStowContainer) PreSignRequest(_ context.Context, _ stow.ClientMethod, s string, - _ stow.PresignRequestParams) (url string, err error) { - return s, nil + _ stow.PresignRequestParams) (response stow.PresignResponse, err error) { + return stow.PresignResponse{Url: s}, nil } func (m mockStowContainer) ID() string { diff --git a/go.mod b/go.mod index 0280ec305c7..85bd1e0bd8f 100644 --- a/go.mod +++ b/go.mod @@ -66,7 +66,7 @@ require ( github.com/felixge/httpsnoop v1.0.3 // indirect github.com/flyteorg/flyte/flyteidl v0.0.0-00010101000000-000000000000 // indirect github.com/flyteorg/flyte/flyteplugins v0.0.0-00010101000000-000000000000 // indirect - github.com/flyteorg/stow v0.3.8 // indirect + github.com/flyteorg/stow v0.3.9 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-gormigrate/gormigrate/v2 v2.1.1 // indirect diff --git a/go.sum b/go.sum index d3fdd20bd81..cb808f26dad 100644 --- a/go.sum +++ b/go.sum @@ -261,8 +261,8 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flyteorg/stow v0.3.8 h1:4a6BtfgDR86fUwa48DkkZTcp6WK4oQXSfewPd/kN0Z4= -github.com/flyteorg/stow v0.3.8/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= +github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= From 68a34159b94ef4c82a5fa1199bbee142d04614e9 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Mon, 11 Mar 2024 18:08:34 -0700 Subject: [PATCH 084/107] Pin flyteconsole version in release process (#5037) Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- script/release.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/script/release.sh b/script/release.sh index 45d31f53b95..c6773e30407 100755 --- a/script/release.sh +++ b/script/release.sh @@ -3,7 +3,10 @@ set -ex FLYTEKIT_TAG=$(curl --silent "https://api.github.com/repos/flyteorg/flytekit/releases/latest" | jq -r .tag_name | sed 's/^v//') -FLYTECONSOLE_TAG=$(curl --silent "https://api.github.com/repos/flyteorg/flyteconsole/releases/latest" | jq -r .tag_name) +# The flyteconsole revamp is not released yet (we need "schedules" to be present before we can release it). In the meantime +# we are using the latest release (v1.10.3) as the tag for flyteconsole. +# FLYTECONSOLE_TAG=$(curl --silent "https://api.github.com/repos/flyteorg/flyteconsole/releases/latest" | jq -r .tag_name) +FLYTECONSOLE_TAG=v1.10.3 # bump latest release of flyte component in helm sed -i "s,tag:[^P]*# FLYTEADMIN_TAG,tag: ${VERSION} # FLYTEADMIN_TAG," ./charts/flyte/values.yaml From 92e45a0c8f15ee8e53e250ed327b6d77182a796e Mon Sep 17 00:00:00 2001 From: Flyte Bot Date: Mon, 11 Mar 2024 20:41:41 -0700 Subject: [PATCH 085/107] Update Flyte components (#5039) * Update Flyte Components Signed-off-by: Flyte-Bot * Add changelog and bump version in conf.py to 1.11.0 Signed-off-by: Eduardo Apolinario * Mention the removal of `kustomize` Signed-off-by: Eduardo Apolinario * Set flyteagent version back to 1.10.8b4 Signed-off-by: Eduardo Apolinario --------- Signed-off-by: Flyte-Bot Signed-off-by: Eduardo Apolinario Co-authored-by: eapolinario --- CHANGELOG/CHANGELOG-v1.11.0.md | 32 +++++++++++++++++ charts/flyte-binary/README.md | 2 +- charts/flyte-binary/values.yaml | 2 +- charts/flyte-core/README.md | 14 ++++---- charts/flyte-core/values.yaml | 12 +++---- charts/flyte/README.md | 18 +++++----- charts/flyte/values.yaml | 12 +++---- .../flyte_aws_scheduler_helm_generated.yaml | 32 ++++++++--------- .../flyte_helm_controlplane_generated.yaml | 22 ++++++------ .../eks/flyte_helm_dataplane_generated.yaml | 14 ++++---- deployment/eks/flyte_helm_generated.yaml | 36 +++++++++---------- .../flyte_helm_controlplane_generated.yaml | 22 ++++++------ .../gcp/flyte_helm_dataplane_generated.yaml | 14 ++++---- deployment/gcp/flyte_helm_generated.yaml | 36 +++++++++---------- .../flyte_sandbox_binary_helm_generated.yaml | 4 +-- deployment/sandbox/flyte_helm_generated.yaml | 36 +++++++++---------- .../manifests/complete-agent.yaml | 8 ++--- .../sandbox-bundled/manifests/complete.yaml | 8 ++--- docker/sandbox-bundled/manifests/dev.yaml | 4 +-- docs/conf.py | 2 +- 20 files changed, 181 insertions(+), 149 deletions(-) create mode 100644 CHANGELOG/CHANGELOG-v1.11.0.md diff --git a/CHANGELOG/CHANGELOG-v1.11.0.md b/CHANGELOG/CHANGELOG-v1.11.0.md new file mode 100644 index 00000000000..2c576654897 --- /dev/null +++ b/CHANGELOG/CHANGELOG-v1.11.0.md @@ -0,0 +1,32 @@ +# Flyte v1.11.0 Release Notes + +We're excited to announce the release of Flyte v1.11.0! This version brings a host of improvements, bug fixes, and new features designed to enhance your experience with Flyte. From operational enhancements to documentation updates, this release aims to make Flyte more robust, user-friendly, and feature-rich. + +## Highlights + +- **Agents hit General Availability (GA):** Agents, now in General Availability, are long-running, stateless services that facilitate asynchronous job launches on platforms like Databricks or Snowflake and enable external service calls. They are versatile, supporting implementations in any language through a protobuf interface, enhancing Flyte's flexibility and operational efficiency. +- **Improved Caching:** Support for loading cached sublists with multiple data types has been introduced, eliminating issues related to cache retrieval across varied data formats. +- **Tracing and Observability:** The introduction of opentelemetry BlobstoreClientTracer in flyteadmin enhances observability, allowing for better monitoring and troubleshooting. +- **Security Enhancements:** Added securityContext configuration to Flyte-core charts, strengthening the security posture of Flyte deployments. +- **Documentation Overhaul:** Continuous improvements and updates have been made to the documentation, fixing broken links and updating content for better clarity and usability. +- **Operational Improvements:** This release introduces enhancements such as adding a service account for V1 Ray Jobs, caching console assets in a single binary, and conditional mounting of secrets to improve the operational efficiency of Flyte. Additionally, we are removing `kustomize` from our deployment process to simplify the configuration and management of Flyte instances, making it easier for users to maintain and streamline their deployment workflows. + + +## Bug Fixes + +- **Fixed Literal in Launchplan:** Added fixed_literal to the launchplan template, addressing issues with hardcoded values in workflows. +- **Corrected Metadata and Resources:** Fixes have been applied to correct IsParent metadata in ArrayNode eventing and to address invalid "resources" scope issues in deployment configurations. +- **Enhanced Stability and Performance:** Numerous bug fixes have been implemented to address stability and performance issues, including fixes for data catalog errors, yaml comment errors in pod template examples, and more. + +## Documentation and Guides + +- **Comprehensive Guides:** New guides and documentation updates have been added, including a ChatGPT Agent Setup guide and an Airflow migration guide. Improvements in documentation for developing agents have been integrated into the broader enhancements for this release. +- **Updated Troubleshooting and Configuration Docs:** New troubleshooting guides for spark task execution and updates to deployment configuration documents enhance the knowledge base for Flyte users. + +## Contributors + +We extend our deepest gratitude to all the contributors who made this release possible. Special shoutouts to @neilisaur, @lowc1012, @MortalHappiness, @novahow, and @pryce-turner for making their first contributions! + +**For a full list of changes, enhancements, and bug fixes, visit our [changelog](https://github.com/flyteorg/flyte/compare/v1.10.7...v1.11.0).** + +Thank you for your continued support of Flyte. We look forward to hearing your feedback on this release! diff --git a/charts/flyte-binary/README.md b/charts/flyte-binary/README.md index 78c301f2b36..fcd66f3186b 100644 --- a/charts/flyte-binary/README.md +++ b/charts/flyte-binary/README.md @@ -42,7 +42,7 @@ Chart for basic single Flyte executable deployment | configuration.auth.oidc.clientId | string | `""` | | | configuration.auth.oidc.clientSecret | string | `""` | | | configuration.co-pilot.image.repository | string | `"cr.flyte.org/flyteorg/flytecopilot"` | | -| configuration.co-pilot.image.tag | string | `"v1.11.0-b1"` | | +| configuration.co-pilot.image.tag | string | `"v1.11.0"` | | | configuration.database.dbname | string | `"flyte"` | | | configuration.database.host | string | `"127.0.0.1"` | | | configuration.database.options | string | `"sslmode=disable"` | | diff --git a/charts/flyte-binary/values.yaml b/charts/flyte-binary/values.yaml index 61bb73e72d5..e84b1c54f49 100644 --- a/charts/flyte-binary/values.yaml +++ b/charts/flyte-binary/values.yaml @@ -159,7 +159,7 @@ configuration: # repository CoPilot sidecar image repository repository: cr.flyte.org/flyteorg/flytecopilot # FLYTECOPILOT_IMAGE # tag CoPilot sidecar image tag - tag: v1.11.0-b1 # FLYTECOPILOT_TAG + tag: v1.11.0 # FLYTECOPILOT_TAG # agentService Flyte Agent configuration agentService: defaultAgent: diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index 6b54dc56d3c..5a18f902cba 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -95,8 +95,8 @@ helm install gateway bitnami/contour -n flyte | configmap.clusters.clusterConfigs | list | `[]` | | | configmap.clusters.labelClusterMap | object | `{}` | | | configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | configmap.core | object | `{"manager":{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"},"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | configmap.core.manager | object | `{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/manager/config#Config). | | configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | @@ -130,7 +130,7 @@ helm install gateway bitnami/contour -n flyte | datacatalog.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| datacatalog.image.tag | string | `"v1.11.0-b1"` | Docker image tag | +| datacatalog.image.tag | string | `"v1.11.0"` | Docker image tag | | datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | datacatalog.podEnv | object | `{}` | Additional Datacatalog container environment variables | @@ -165,7 +165,7 @@ helm install gateway bitnami/contour -n flyte | flyteadmin.extraArgs | object | `{}` | Appends extra command line arguments to the serve command | | flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | | | flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyteadmin.image.tag | string | `"v1.11.0-b1"` | | +| flyteadmin.image.tag | string | `"v1.11.0"` | | | flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -202,7 +202,7 @@ helm install gateway bitnami/contour -n flyte | flyteconsole.ga.tracking_id | string | `"G-0QW4DJWJ20"` | | | flyteconsole.image.pullPolicy | string | `"IfNotPresent"` | | | flyteconsole.image.repository | string | `"cr.flyte.org/flyteorg/flyteconsole"` | Docker image for Flyteconsole deployment | -| flyteconsole.image.tag | string | `"v1.11.0"` | | +| flyteconsole.image.tag | string | `"v1.10.3"` | | | flyteconsole.imagePullSecrets | list | `[]` | ImagePullSecrets to assign to the Flyteconsole deployment | | flyteconsole.nodeSelector | object | `{}` | nodeSelector for Flyteconsole deployment | | flyteconsole.podAnnotations | object | `{}` | Annotations for Flyteconsole pods | @@ -226,7 +226,7 @@ helm install gateway bitnami/contour -n flyte | flytepropeller.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | | | flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flytepropeller.image.tag | string | `"v1.11.0-b1"` | | +| flytepropeller.image.tag | string | `"v1.11.0"` | | | flytepropeller.manager | bool | `false` | | | flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | @@ -256,7 +256,7 @@ helm install gateway bitnami/contour -n flyte | flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flytescheduler.image.tag | string | `"v1.11.0-b1"` | Docker image tag | +| flytescheduler.image.tag | string | `"v1.11.0"` | Docker image tag | | flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flytescheduler.podEnv | object | `{}` | Additional Flytescheduler container environment variables | diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index fbc20165226..0319b3bacae 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -16,7 +16,7 @@ flyteadmin: image: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE - tag: v1.11.0-b1 # FLYTEADMIN_TAG + tag: v1.11.0 # FLYTEADMIN_TAG pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables # @@ -142,7 +142,7 @@ flytescheduler: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.11.0-b1 # FLYTESCHEDULER_TAG + tag: v1.11.0 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -208,7 +208,7 @@ datacatalog: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.11.0-b1 # DATACATALOG_TAG + tag: v1.11.0 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -296,7 +296,7 @@ flytepropeller: image: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE - tag: v1.11.0-b1 # FLYTEPROPELLER_TAG + tag: v1.11.0 # FLYTEPROPELLER_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment resources: @@ -379,7 +379,7 @@ flyteconsole: image: # -- Docker image for Flyteconsole deployment repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE - tag: v1.11.0 # FLYTECONSOLE_TAG + tag: v1.10.3 # FLYTECONSOLE_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flyteconsole deployment resources: @@ -731,7 +731,7 @@ configmap: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/charts/flyte/README.md b/charts/flyte/README.md index f2ac67bdc21..b1f00aa4e84 100644 --- a/charts/flyte/README.md +++ b/charts/flyte/README.md @@ -71,7 +71,7 @@ helm upgrade -f values-sandbox.yaml flyte . | contour.tolerations | list | `[]` | tolerations for Contour deployment | | daskoperator | object | `{"enabled":false}` | Optional: Dask Plugin using the Dask Operator | | daskoperator.enabled | bool | `false` | - enable or disable the dask operator deployment installation | -| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.11.0-b1"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.11.0-b1"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.11.0-b1"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.11.0-b1"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | +| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.11.0"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.3"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.11.0"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | | flyte.cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | | flyte.cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. | | flyte.cluster_resource_manager.config.cluster_resources.standaloneDeployment | bool | `false` | Starts the cluster resource manager in standalone mode with requisite auth credentials to call flyteadmin service endpoints | @@ -91,15 +91,15 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.common.ingress.separateGrpcIngressAnnotations | object | `{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"}` | - Extra Ingress annotations applied only to the GRPC ingress. Only makes sense if `separateGrpcIngress` is enabled. | | flyte.common.ingress.tls | object | `{"enabled":false}` | - TLS Settings | | flyte.common.ingress.webpackHMR | bool | `true` | - Enable or disable HMR route to flyteconsole. This is useful only for frontend development. | -| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | +| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | | flyte.configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration | | flyte.configmap.adminServer.auth | object | `{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}}` | Authentication configuration | | flyte.configmap.adminServer.server.security.secure | bool | `false` | Controls whether to serve requests over SSL/TLS. | | flyte.configmap.adminServer.server.security.useAuth | bool | `false` | Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. | | flyte.configmap.catalog | object | `{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}}` | Catalog Client configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/catalog#Config) Additional advanced Catalog configuration [here](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/catalog#Config) | | flyte.configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | flyte.configmap.core | object | `{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | flyte.configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | | flyte.configmap.datacatalogServer | object | `{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config | @@ -120,7 +120,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.datacatalog.configPath | string | `"/etc/datacatalog/config/*.yaml"` | Default regex string for searching configuration files | | flyte.datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| flyte.datacatalog.image.tag | string | `"v1.11.0-b1"` | Docker image tag | +| flyte.datacatalog.image.tag | string | `"v1.11.0"` | Docker image tag | | flyte.datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | flyte.datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | flyte.datacatalog.replicaCount | int | `1` | Replicas count for Datacatalog deployment | @@ -136,7 +136,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flyteadmin.env | list | `[]` | Additional flyteadmin container environment variables e.g. SendGrid's API key - name: SENDGRID_API_KEY value: "" e.g. secret environment variable (you can combine it with .additionalVolumes): - name: SENDGRID_API_KEY valueFrom: secretKeyRef: name: sendgrid-secret key: api_key | | flyte.flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyte.flyteadmin.image.tag | string | `"v1.11.0-b1"` | Docker image tag | +| flyte.flyteadmin.image.tag | string | `"v1.11.0"` | Docker image tag | | flyte.flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyte.flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyte.flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -151,7 +151,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flyteconsole.affinity | object | `{}` | affinity for Flyteconsole deployment | | flyte.flyteconsole.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flyteconsole.image.repository | string | `"cr.flyte.org/flyteorg/flyteconsole"` | Docker image for Flyteconsole deployment | -| flyte.flyteconsole.image.tag | string | `"v1.11.0"` | Docker image tag | +| flyte.flyteconsole.image.tag | string | `"v1.10.3"` | Docker image tag | | flyte.flyteconsole.nodeSelector | object | `{}` | nodeSelector for Flyteconsole deployment | | flyte.flyteconsole.podAnnotations | object | `{}` | Annotations for Flyteconsole pods | | flyte.flyteconsole.replicaCount | int | `1` | Replicas count for Flyteconsole deployment | @@ -162,7 +162,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytepropeller.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flyte.flytepropeller.image.tag | string | `"v1.11.0-b1"` | Docker image tag | +| flyte.flytepropeller.image.tag | string | `"v1.11.0"` | Docker image tag | | flyte.flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flyte.flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | | flyte.flytepropeller.replicaCount | int | `1` | Replicas count for Flytepropeller deployment | @@ -176,7 +176,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flyte.flytescheduler.image.tag | string | `"v1.11.0-b1"` | Docker image tag | +| flyte.flytescheduler.image.tag | string | `"v1.11.0"` | Docker image tag | | flyte.flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flyte.flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flyte.flytescheduler.resources | object | `{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}}` | Default resources requests and limits for Flytescheduler deployment | diff --git a/charts/flyte/values.yaml b/charts/flyte/values.yaml index 50a1fc54025..f0d2f7c75a5 100755 --- a/charts/flyte/values.yaml +++ b/charts/flyte/values.yaml @@ -16,7 +16,7 @@ flyte: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE # -- Docker image tag - tag: v1.11.0-b1 # FLYTEADMIN_TAG + tag: v1.11.0 # FLYTEADMIN_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables @@ -84,7 +84,7 @@ flyte: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.11.0-b1 # FLYTESCHEDULER_TAG + tag: v1.11.0 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -129,7 +129,7 @@ flyte: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.11.0-b1 # DATACATALOG_TAG + tag: v1.11.0 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -178,7 +178,7 @@ flyte: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE # -- Docker image tag - tag: v1.11.0-b1 # FLYTEPROPELLER_TAG + tag: v1.11.0 # FLYTEPROPELLER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment @@ -223,7 +223,7 @@ flyte: # -- Docker image for Flyteconsole deployment repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE # -- Docker image tag - tag: v1.11.0 # FLYTECONSOLE_TAG + tag: v1.10.3 # FLYTECONSOLE_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flyteconsole deployment @@ -471,7 +471,7 @@ flyte: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index a3f67a2fb84..a5b9e0081fc 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -429,7 +429,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -869,7 +869,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -890,7 +890,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -908,7 +908,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -925,7 +925,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -952,7 +952,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1057,7 +1057,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1113,7 +1113,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -1187,7 +1187,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1205,7 +1205,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1268,7 +1268,7 @@ spec: template: metadata: annotations: - configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" + configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1294,7 +1294,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1348,9 +1348,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b1 + app.kubernetes.io/version: v1.11.0 annotations: - configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" + configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" spec: securityContext: fsGroup: 65534 @@ -1362,7 +1362,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1389,7 +1389,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml index b60694f9471..9e813c42753 100644 --- a/deployment/eks/flyte_helm_controlplane_generated.yaml +++ b/deployment/eks/flyte_helm_controlplane_generated.yaml @@ -574,7 +574,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -595,7 +595,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -613,7 +613,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -630,7 +630,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -657,7 +657,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -762,7 +762,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -818,7 +818,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -892,7 +892,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -910,7 +910,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -993,7 +993,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1013,7 +1013,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index 9a73a12ccf0..865b72da243 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -428,7 +428,7 @@ spec: template: metadata: annotations: - configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" + configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -454,7 +454,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -508,9 +508,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b1 + app.kubernetes.io/version: v1.11.0 annotations: - configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" + configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" spec: securityContext: fsGroup: 65534 @@ -522,7 +522,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -549,7 +549,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index 8a6787818bf..bb0b5e966c3 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -460,7 +460,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -900,7 +900,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -921,7 +921,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -939,7 +939,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -956,7 +956,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -983,7 +983,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1088,7 +1088,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1144,7 +1144,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -1218,7 +1218,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1236,7 +1236,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1319,7 +1319,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1339,7 +1339,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1398,7 +1398,7 @@ spec: template: metadata: annotations: - configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" + configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1424,7 +1424,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1478,9 +1478,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b1 + app.kubernetes.io/version: v1.11.0 annotations: - configChecksum: "e03c74684e3570657bfe4736b326b2c14061258946ad20677b3186b9657f455" + configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" spec: securityContext: fsGroup: 65534 @@ -1492,7 +1492,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1519,7 +1519,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml index 7e0b58b832b..281fcf87a1e 100644 --- a/deployment/gcp/flyte_helm_controlplane_generated.yaml +++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml @@ -589,7 +589,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -610,7 +610,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -628,7 +628,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -645,7 +645,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -672,7 +672,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -777,7 +777,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -833,7 +833,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -907,7 +907,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -925,7 +925,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1008,7 +1008,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1028,7 +1028,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index ee3844680c0..a0349f78c41 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -436,7 +436,7 @@ spec: template: metadata: annotations: - configChecksum: "9bc27a186f548894dceed907e428e5ff148a7bc709218fa0d828cade4598f1f" + configChecksum: "cc8b6585fb0703724b6418fea14f52893fdd6913d5aee513867e84d66e23d72" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -461,7 +461,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -515,9 +515,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b1 + app.kubernetes.io/version: v1.11.0 annotations: - configChecksum: "9bc27a186f548894dceed907e428e5ff148a7bc709218fa0d828cade4598f1f" + configChecksum: "cc8b6585fb0703724b6418fea14f52893fdd6913d5aee513867e84d66e23d72" spec: securityContext: fsGroup: 65534 @@ -529,7 +529,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -556,7 +556,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index 3167fb54adc..165712c85d3 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -473,7 +473,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -923,7 +923,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -944,7 +944,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -962,7 +962,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -979,7 +979,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -1006,7 +1006,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1111,7 +1111,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1167,7 +1167,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -1241,7 +1241,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1259,7 +1259,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1342,7 +1342,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1362,7 +1362,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1421,7 +1421,7 @@ spec: template: metadata: annotations: - configChecksum: "9bc27a186f548894dceed907e428e5ff148a7bc709218fa0d828cade4598f1f" + configChecksum: "cc8b6585fb0703724b6418fea14f52893fdd6913d5aee513867e84d66e23d72" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1446,7 +1446,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1500,9 +1500,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b1 + app.kubernetes.io/version: v1.11.0 annotations: - configChecksum: "9bc27a186f548894dceed907e428e5ff148a7bc709218fa0d828cade4598f1f" + configChecksum: "cc8b6585fb0703724b6418fea14f52893fdd6913d5aee513867e84d66e23d72" spec: securityContext: fsGroup: 65534 @@ -1514,7 +1514,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1541,7 +1541,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml index 1aeec5ee6de..b3b130b3a04 100644 --- a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml +++ b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml @@ -116,7 +116,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0" k8s-array: logs: config: @@ -358,7 +358,7 @@ spec: app.kubernetes.io/instance: flyte app.kubernetes.io/component: flyte-binary annotations: - checksum/configuration: 9c864736e7d08baebc6de026def33e542b35097dd158017c89f85d7672401b92 + checksum/configuration: 8d7f2229ae4d345e158f32f67615656d9a8d7590cef80a4c1b6f8eb333fcd896 checksum/configuration-secret: d5d93f4e67780b21593dc3799f0f6682aab0765e708e4020939975d14d44f929 checksum/cluster-resource-templates: 7dfa59f3d447e9c099b8f8ffad3af466fecbc9cf9f8c97295d9634254a55d4ae spec: diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index 1959cc5bd81..9d032a0735c 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -585,7 +585,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -6705,7 +6705,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -6725,7 +6725,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -6742,7 +6742,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -6758,7 +6758,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -6785,7 +6785,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -6880,7 +6880,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -6933,7 +6933,7 @@ spec: seLinuxOptions: type: spc_t containers: - - image: "cr.flyte.org/flyteorg/flyteconsole:v1.11.0" + - image: "cr.flyte.org/flyteorg/flyteconsole:v1.10.3" imagePullPolicy: "IfNotPresent" name: flyteconsole envFrom: @@ -7005,7 +7005,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -7022,7 +7022,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -7095,7 +7095,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -7114,7 +7114,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -7170,7 +7170,7 @@ spec: template: metadata: annotations: - configChecksum: "a82c947246fac99ad98c86bc01cdd99569b2ea11f25d3e1361cd40d145bed87" + configChecksum: "ecefcb1d6df38b32a9ec77d91de63cd40da935a3239b70a5bb0396435878c80" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -7195,7 +7195,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -7242,9 +7242,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0-b1 + app.kubernetes.io/version: v1.11.0 annotations: - configChecksum: "a82c947246fac99ad98c86bc01cdd99569b2ea11f25d3e1361cd40d145bed87" + configChecksum: "ecefcb1d6df38b32a9ec77d91de63cd40da935a3239b70a5bb0396435878c80" spec: securityContext: fsGroup: 65534 @@ -7256,7 +7256,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -7283,7 +7283,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 95fa73316ac..d918d083fe6 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -468,7 +468,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0" k8s-array: logs: config: @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: ZVNtQlpWSTRkZnFtRVp0cw== + haSharedSecret: bFdEdjRZTHJpYjZlVjJFUA== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1246,7 +1246,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: 286b381aca83e796ac69572dba6d2071241be79d4f00f3c2af55415a95157efd + checksum/configuration: 2aaf6d07c01e76a5e97b2c5aa1e581ee7e2e9929d3690e71eceb6b0bdfb7b646 checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: e540906f7530a7b8f9c9e7488bfe922999294201b1f0f75ab310162ef6441d96 + checksum/secret: 4e48fca207a5d670db85e2a3c006dc4299ca542f111df37bc4657732e90f7fbb labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index 5117665b858..4abc06f27a9 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -457,7 +457,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b1" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0" k8s-array: logs: config: @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: VnRRWDlOZXVWcXNmZFRXRQ== + haSharedSecret: VFF5OW9ocFA1SFBaeEhFTQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1194,7 +1194,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: 1362bc266b00c161aac0a24f7db312b9d6b9e68d7d8d8859ec8e171b9dc3e2bd + checksum/configuration: cd9caceec9bd91bdf1eedb10aee289a53786fc70df8c3f4951881abb9f937c49 checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 1a60b7cc9612c65c9a369c55629f6054dfed24c40b064269274d0fbb7c6d0823 + checksum/secret: 58164ccf22adab677f5be0934c63dfffcaf63125d1b61f4e3257ad6abbad5344 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index a4ae9c83db4..10ddf16bbf1 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: dlY1cWxrMFBJOU8yazFyZQ== + haSharedSecret: RXV5Y25YMloxdnhxOHhkRg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: b86db743a29c0ae883fd1fd39fb1a6e81288c8451f3ebac001c7f2f1893d3f2a + checksum/secret: d950e08274c6c5752cbe3ec4acd93372e7ab1ef4e745f94ee13c9b617bc4d04c labels: app: docker-registry release: flyte-sandbox diff --git a/docs/conf.py b/docs/conf.py index 6d20ecf4b93..cca6cc266ae 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -35,7 +35,7 @@ # The short X.Y version version = "" # The full version, including alpha/beta/rc tags -release = "1.11.0-b1" +release = "1.11.0" # -- General configuration --------------------------------------------------- From db1182142e473836f47fa3a8b376a10fc6ef8386 Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Mon, 11 Mar 2024 23:59:08 -0700 Subject: [PATCH 086/107] bump stow (#5041) Signed-off-by: Kevin Su --- datacatalog/go.mod | 2 +- datacatalog/go.sum | 4 ++-- flyteadmin/go.mod | 2 +- flyteadmin/go.sum | 4 ++-- flytecopilot/go.mod | 2 +- flytecopilot/go.sum | 4 ++-- flyteidl/go.mod | 2 +- flyteidl/go.sum | 4 ++-- flyteplugins/go.mod | 2 +- flyteplugins/go.sum | 4 ++-- flytepropeller/go.mod | 2 +- flytepropeller/go.sum | 4 ++-- flytestdlib/go.mod | 2 +- flytestdlib/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 16 files changed, 24 insertions(+), 24 deletions(-) diff --git a/datacatalog/go.mod b/datacatalog/go.mod index e8fafef6ab5..7c04fd7832b 100644 --- a/datacatalog/go.mod +++ b/datacatalog/go.mod @@ -43,7 +43,7 @@ require ( github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/flyteorg/stow v0.3.9 // indirect + github.com/flyteorg/stow v0.3.10 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-gormigrate/gormigrate/v2 v2.1.1 // indirect diff --git a/datacatalog/go.sum b/datacatalog/go.sum index 111ed2cb56d..b1642f638fe 100644 --- a/datacatalog/go.sum +++ b/datacatalog/go.sum @@ -113,8 +113,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= -github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.10 h1:uEe+tI+CGKn21H93uXp9z05hqynEki2BO9KkW/GweY8= +github.com/flyteorg/stow v0.3.10/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flyteadmin/go.mod b/flyteadmin/go.mod index d029aec96b7..58ebd90a845 100644 --- a/flyteadmin/go.mod +++ b/flyteadmin/go.mod @@ -17,7 +17,7 @@ require ( github.com/flyteorg/flyte/flyteplugins v0.0.0-00010101000000-000000000000 github.com/flyteorg/flyte/flytepropeller v0.0.0-00010101000000-000000000000 github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000 - github.com/flyteorg/stow v0.3.9 + github.com/flyteorg/stow v0.3.10 github.com/ghodss/yaml v1.0.0 github.com/go-gormigrate/gormigrate/v2 v2.1.1 github.com/golang-jwt/jwt/v4 v4.5.0 diff --git a/flyteadmin/go.sum b/flyteadmin/go.sum index 1b78514db87..fa9c065e82a 100644 --- a/flyteadmin/go.sum +++ b/flyteadmin/go.sum @@ -237,8 +237,8 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= -github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.10 h1:uEe+tI+CGKn21H93uXp9z05hqynEki2BO9KkW/GweY8= +github.com/flyteorg/stow v0.3.10/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= diff --git a/flytecopilot/go.mod b/flytecopilot/go.mod index 52c7b25e796..de6c77795c9 100644 --- a/flytecopilot/go.mod +++ b/flytecopilot/go.mod @@ -39,7 +39,7 @@ require ( github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/flyteorg/stow v0.3.9 // indirect + github.com/flyteorg/stow v0.3.10 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect diff --git a/flytecopilot/go.sum b/flytecopilot/go.sum index b43c64842dc..061cd63e87b 100644 --- a/flytecopilot/go.sum +++ b/flytecopilot/go.sum @@ -103,8 +103,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= -github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.10 h1:uEe+tI+CGKn21H93uXp9z05hqynEki2BO9KkW/GweY8= +github.com/flyteorg/stow v0.3.10/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flyteidl/go.mod b/flyteidl/go.mod index 29ec7f91646..2187b2aeab8 100644 --- a/flyteidl/go.mod +++ b/flyteidl/go.mod @@ -45,7 +45,7 @@ require ( github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/flyteorg/stow v0.3.9 // indirect + github.com/flyteorg/stow v0.3.10 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect diff --git a/flyteidl/go.sum b/flyteidl/go.sum index 0b4fde0b1df..5b4cf356d3b 100644 --- a/flyteidl/go.sum +++ b/flyteidl/go.sum @@ -105,8 +105,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= -github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.10 h1:uEe+tI+CGKn21H93uXp9z05hqynEki2BO9KkW/GweY8= +github.com/flyteorg/stow v0.3.10/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flyteplugins/go.mod b/flyteplugins/go.mod index db98207f715..be1331697b7 100644 --- a/flyteplugins/go.mod +++ b/flyteplugins/go.mod @@ -64,7 +64,7 @@ require ( github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/flyteorg/stow v0.3.9 // indirect + github.com/flyteorg/stow v0.3.10 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-logr/logr v1.2.4 // indirect diff --git a/flyteplugins/go.sum b/flyteplugins/go.sum index 46164324415..662b36b87e8 100644 --- a/flyteplugins/go.sum +++ b/flyteplugins/go.sum @@ -138,8 +138,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= -github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.10 h1:uEe+tI+CGKn21H93uXp9z05hqynEki2BO9KkW/GweY8= +github.com/flyteorg/stow v0.3.10/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flytepropeller/go.mod b/flytepropeller/go.mod index f42e61897e4..f541398b58d 100644 --- a/flytepropeller/go.mod +++ b/flytepropeller/go.mod @@ -72,7 +72,7 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect - github.com/flyteorg/stow v0.3.9 // indirect + github.com/flyteorg/stow v0.3.10 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect diff --git a/flytepropeller/go.sum b/flytepropeller/go.sum index 93880b2b314..b929dc11b5d 100644 --- a/flytepropeller/go.sum +++ b/flytepropeller/go.sum @@ -144,8 +144,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= -github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.10 h1:uEe+tI+CGKn21H93uXp9z05hqynEki2BO9KkW/GweY8= +github.com/flyteorg/stow v0.3.10/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/flytestdlib/go.mod b/flytestdlib/go.mod index 314e9ad0505..d275261dc89 100644 --- a/flytestdlib/go.mod +++ b/flytestdlib/go.mod @@ -9,7 +9,7 @@ require ( github.com/ernesto-jimenez/gogen v0.0.0-20180125220232-d7d4131e6607 github.com/fatih/color v1.13.0 github.com/fatih/structtag v1.2.0 - github.com/flyteorg/stow v0.3.9 + github.com/flyteorg/stow v0.3.10 github.com/fsnotify/fsnotify v1.6.0 github.com/ghodss/yaml v1.0.0 github.com/go-gormigrate/gormigrate/v2 v2.1.1 diff --git a/flytestdlib/go.sum b/flytestdlib/go.sum index 6d6cb155671..ee195ca9fc1 100644 --- a/flytestdlib/go.sum +++ b/flytestdlib/go.sum @@ -115,8 +115,8 @@ github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= -github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.10 h1:uEe+tI+CGKn21H93uXp9z05hqynEki2BO9KkW/GweY8= +github.com/flyteorg/stow v0.3.10/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/go.mod b/go.mod index 85bd1e0bd8f..37e95136eaf 100644 --- a/go.mod +++ b/go.mod @@ -66,7 +66,7 @@ require ( github.com/felixge/httpsnoop v1.0.3 // indirect github.com/flyteorg/flyte/flyteidl v0.0.0-00010101000000-000000000000 // indirect github.com/flyteorg/flyte/flyteplugins v0.0.0-00010101000000-000000000000 // indirect - github.com/flyteorg/stow v0.3.9 // indirect + github.com/flyteorg/stow v0.3.10 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-gormigrate/gormigrate/v2 v2.1.1 // indirect diff --git a/go.sum b/go.sum index cb808f26dad..8048229f181 100644 --- a/go.sum +++ b/go.sum @@ -261,8 +261,8 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flyteorg/stow v0.3.9 h1:oA9tKMSvdCBnTnVpx8vncwrjRf8h/w8Ks9c4VGm2Img= -github.com/flyteorg/stow v0.3.9/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= +github.com/flyteorg/stow v0.3.10 h1:uEe+tI+CGKn21H93uXp9z05hqynEki2BO9KkW/GweY8= +github.com/flyteorg/stow v0.3.10/go.mod h1:fArjMpsYJNWkp/hyDKKdbcv07gxbuLmKFcb7YT1aSOM= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= From e07084c16e7dce06c0c88978d0994a2b6fa5a5a7 Mon Sep 17 00:00:00 2001 From: WenChih Lo Date: Wed, 13 Mar 2024 04:15:25 +0800 Subject: [PATCH 087/107] Remove kustomize link in secrets.md doc (#5043) Signed-off-by: Ryan Lo --- docs/user_guide/productionizing/secrets.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/user_guide/productionizing/secrets.md b/docs/user_guide/productionizing/secrets.md index dba145c483d..d631594cc72 100644 --- a/docs/user_guide/productionizing/secrets.md +++ b/docs/user_guide/productionizing/secrets.md @@ -372,8 +372,6 @@ The following secret managers are available at the time of writing: - [AWS Secret Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html): `flyte-pod-webhook` will add the AWS Secret Manager sidecar container to a task Pod which will mount the secret. - [Vault Agent Injector](https://developer.hashicorp.com/vault/tutorials/getting-started/getting-started-first-secret#write-a-secret) : `flyte-pod-webhook` will annotate the task Pod with the respective Vault annotations that trigger an existing Vault Agent Injector to retrieve the specified secret Key from a vault path defined as secret Group. -You can configure the additional secret manager by defining `secretManagerType` to be either 'K8s', 'AWS' or 'Vault' in -the [core config](https://github.com/flyteorg/flyte/blob/master/kustomize/base/single_cluster/headless/config/propeller/core.yaml#L34) of the Flytepropeller. When using the K8s secret manager plugin, which is enabled by default, the secrets need to be available in the same namespace as the task execution (for example `flytesnacks-development`). K8s secrets can be mounted as either files or injected as environment variables into the task pod, From 44914b138002a54770ee61fc202ee518e2960f39 Mon Sep 17 00:00:00 2001 From: WenChih Lo Date: Wed, 13 Mar 2024 12:56:17 +0800 Subject: [PATCH 088/107] CI workflow for helm charts and manifests (#5027) Signed-off-by: Ryan Lo --- .github/workflows/validate-helm-charts.yaml | 84 +++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 .github/workflows/validate-helm-charts.yaml diff --git a/.github/workflows/validate-helm-charts.yaml b/.github/workflows/validate-helm-charts.yaml new file mode 100644 index 00000000000..dc55ad980c8 --- /dev/null +++ b/.github/workflows/validate-helm-charts.yaml @@ -0,0 +1,84 @@ +name: Validate helm charts & manifests + +on: + pull_request: + branches: + - master + paths: + - deployment + - docker/sandbox-bundled/manifests + +jobs: + lint-and-test-charts: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + sparse-checkout: charts + + - name: Install Helm + uses: azure/setup-helm@v4 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + check-latest: true + + - name: Set up chart-testing + uses: helm/chart-testing-action@v2 + + - name: Detect charts changed (list-changed) + id: charts-changed + run: | + changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }}) + if [[ -n "$changed" ]]; then + echo "changed=true" >> "$GITHUB_OUTPUT" + fi + + - name: Run chart-testing (lint) + if: steps.charts-changed.outputs.changed == 'true' + run: ct lint --target-branch ${{ github.event.repository.default_branch }} + + - name: Create KinD cluster + if: steps.charts-changed.outputs.changed == 'true' + uses: helm/kind-action@v1 + + - name: Run chart-testing (install) + if: steps.charts-changed.outputs.changed == 'true' + run: ct install --target-branch ${{ github.event.repository.default_branch }} + + validate-manifests: + needs: + - lint-and-test-charts + runs-on: ubuntu-latest + defaults: + run: + shell: bash + strategy: + matrix: + k8s_versions: [ "1.29.2", "1.28.7", "1.27.11" ] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + sparse-checkout: | + deployment + docker/sandbox-bundled/manifests + + - name: Install Helm + uses: azure/setup-helm@v4 + + - name: Install kubeconform + run: | + curl -L -o kubeconform.tar.gz https://github.com/yannh/kubeconform/releases/download/v0.6.4/kubeconform-linux-amd64.tar.gz + tar -zvxf kubeconform.tar.gz + chmod +x kubeconform + sudo mv kubeconform /usr/local/bin/kubeconform + + - name: Validate manifests + run: | + kubeconform -strict -summary -skip CustomResourceDefinition -ignore-filename-pattern "deployment/stats/prometheus/*" -kubernetes-version ${{ matrix.k8s_versions }} ./deployment ./docker/sandbox-bundled/manifests From d5784e58226b756719d1f079affe021c85d4646c Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Thu, 14 Mar 2024 15:16:16 -0700 Subject: [PATCH 089/107] Update spark-on-k8s-operator address in helm charts (#5057) Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- charts/flyte-deps/Chart.yaml | 2 +- charts/flyte-deps/README.md | 2 +- charts/flyte/Chart.yaml | 2 +- charts/flyte/README.md | 2 +- docker/sandbox-bundled/manifests/complete-agent.yaml | 4 ++-- docker/sandbox-bundled/manifests/complete.yaml | 4 ++-- docker/sandbox-bundled/manifests/dev.yaml | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/charts/flyte-deps/Chart.yaml b/charts/flyte-deps/Chart.yaml index fbd72a0bc23..ea84c798e77 100644 --- a/charts/flyte-deps/Chart.yaml +++ b/charts/flyte-deps/Chart.yaml @@ -11,7 +11,7 @@ dependencies: - name: spark-operator alias: sparkoperator version: 1.1.15 - repository: https://googlecloudplatform.github.io/spark-on-k8s-operator + repository: https://kubeflow.github.io/spark-operator condition: sparkoperator.enabled - name: dask-kubernetes-operator alias: daskoperator diff --git a/charts/flyte-deps/README.md b/charts/flyte-deps/README.md index 6a5eb13e4f6..014e19c2513 100644 --- a/charts/flyte-deps/README.md +++ b/charts/flyte-deps/README.md @@ -9,8 +9,8 @@ A Helm chart for Flyte dependency | Repository | Name | Version | |------------|------|---------| | https://charts.bitnami.com/bitnami | contour | 7.10.1 | -| https://googlecloudplatform.github.io/spark-on-k8s-operator | sparkoperator(spark-operator) | 1.1.15 | | https://helm.dask.org | daskoperator(dask-kubernetes-operator) | 2022.12.0 | +| https://kubeflow.github.io/spark-operator | sparkoperator(spark-operator) | 1.1.15 | | https://kubernetes.github.io/dashboard/ | kubernetes-dashboard | 4.0.2 | ### SANDBOX INSTALLATION: diff --git a/charts/flyte/Chart.yaml b/charts/flyte/Chart.yaml index 0fcfb6679be..daed727185a 100644 --- a/charts/flyte/Chart.yaml +++ b/charts/flyte/Chart.yaml @@ -15,7 +15,7 @@ dependencies: - name: spark-operator alias: sparkoperator version: 1.1.15 - repository: https://googlecloudplatform.github.io/spark-on-k8s-operator + repository: https://kubeflow.github.io/spark-operator condition: sparkoperator.enabled - name: dask-kubernetes-operator alias: daskoperator diff --git a/charts/flyte/README.md b/charts/flyte/README.md index b1f00aa4e84..5ead2db7308 100644 --- a/charts/flyte/README.md +++ b/charts/flyte/README.md @@ -10,8 +10,8 @@ A Helm chart for Flyte Sandbox |------------|------|---------| | file://../flyte-core | flyte(flyte-core) | v0.1.10 | | https://charts.bitnami.com/bitnami | contour | 7.10.1 | -| https://googlecloudplatform.github.io/spark-on-k8s-operator | sparkoperator(spark-operator) | 1.1.15 | | https://helm.dask.org | daskoperator(dask-kubernetes-operator) | 2022.12.0 | +| https://kubeflow.github.io/spark-operator | sparkoperator(spark-operator) | 1.1.15 | | https://kubernetes.github.io/dashboard/ | kubernetes-dashboard | 4.0.2 | **NOTE:** Flyte sandbox helm chart is deprecated, From now follow the sandbox [docs](https://docs.flyte.org/en/latest/deployment/sandbox.html) for installing it on cloud diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index d918d083fe6..50a2722e8ad 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: bFdEdjRZTHJpYjZlVjJFUA== + haSharedSecret: VTg5RFBvY205cXRtcEVFbw== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 4e48fca207a5d670db85e2a3c006dc4299ca542f111df37bc4657732e90f7fbb + checksum/secret: b8339a7b42c1e04b994b517d4ddd749074787df4a0eaef9e1aa2181988aea2d7 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index 4abc06f27a9..73f262a6843 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: VFF5OW9ocFA1SFBaeEhFTQ== + haSharedSecret: ZTNEUmhqY1VsWDBXNFowTg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 58164ccf22adab677f5be0934c63dfffcaf63125d1b61f4e3257ad6abbad5344 + checksum/secret: cedf489b22e27428631c5c365e58bfd51cf8465bf04d07a74462677278017b80 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index 10ddf16bbf1..ae3bcbf29af 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: RXV5Y25YMloxdnhxOHhkRg== + haSharedSecret: bkV2U2JzN0o2TXNVcHJTMg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: d950e08274c6c5752cbe3ec4acd93372e7ab1ef4e745f94ee13c9b617bc4d04c + checksum/secret: 2f2e4b3f4abc8a670a75900bd0c7987fb3afa6b2a287fdf7292fbeb755c00c12 labels: app: docker-registry release: flyte-sandbox From 0b1253bf40e79393078861255cc858f06b22a19e Mon Sep 17 00:00:00 2001 From: WenChih Lo Date: Fri, 15 Mar 2024 06:53:45 +0800 Subject: [PATCH 090/107] Fix wrong syntax for path filtering in validate-helm-charts.yaml (#5056) Signed-off-by: Ryan Lo Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- .github/workflows/validate-helm-charts.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate-helm-charts.yaml b/.github/workflows/validate-helm-charts.yaml index dc55ad980c8..36247b43da5 100644 --- a/.github/workflows/validate-helm-charts.yaml +++ b/.github/workflows/validate-helm-charts.yaml @@ -5,8 +5,9 @@ on: branches: - master paths: - - deployment - - docker/sandbox-bundled/manifests + - "charts/**" + - "deployment/**" + - "docker/sandbox-bundled/manifests/**" jobs: lint-and-test-charts: From 642b08c31781aa828f9b11feff50f65e08b4946e Mon Sep 17 00:00:00 2001 From: WenChih Lo Date: Fri, 15 Mar 2024 07:28:00 +0800 Subject: [PATCH 091/107] fix missing branch (#5054) Signed-off-by: Ryan Lo --- charts/flyte-core/templates/flytescheduler/deployment.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/charts/flyte-core/templates/flytescheduler/deployment.yaml b/charts/flyte-core/templates/flytescheduler/deployment.yaml index aa22a13e09e..14db8c48a79 100755 --- a/charts/flyte-core/templates/flytescheduler/deployment.yaml +++ b/charts/flyte-core/templates/flytescheduler/deployment.yaml @@ -48,8 +48,10 @@ spec: volumeMounts: {{- include "databaseSecret.volumeMount" . | nindent 8 }} - mountPath: /etc/flyte/config name: config-volume + {{- if .Values.secrets.adminOauthClientCredentials.enabled }} - name: auth mountPath: /etc/secrets/ + {{- end }} {{- end }} containers: - command: From 3100c1214b7a44d97269c515ee3d996dd5ead3b2 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Thu, 14 Mar 2024 17:01:46 -0700 Subject: [PATCH 092/107] Match flytekit versions used to register and run functional tests (#5059) * wip - test Signed-off-by: Eduardo Apolinario * Use latest flytekit to register tests Signed-off-by: Eduardo Apolinario * Use python 3.12 to run tests Signed-off-by: Eduardo Apolinario * Force versions of flytekit and image to match Signed-off-by: Eduardo Apolinario * Use awk Signed-off-by: Eduardo Apolinario * Checkout specific flytesnacks ref Signed-off-by: Eduardo Apolinario --------- Signed-off-by: Eduardo Apolinario Co-authored-by: Eduardo Apolinario --- .github/workflows/single-binary.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/single-binary.yml b/.github/workflows/single-binary.yml index 9a2c19a52c5..793a08e01b9 100644 --- a/.github/workflows/single-binary.yml +++ b/.github/workflows/single-binary.yml @@ -156,7 +156,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: "3.11" + python-version: "3.12" - uses: unionai/flytectl-setup-action@v0.0.1 - name: Setup sandbox run: | @@ -181,17 +181,17 @@ jobs: with: repository: flyteorg/flytesnacks path: flytesnacks - # TODO: Enable this once refactored version produces a release tag - # ref: ${{ env.FLYTESNACKS_VERSION }} + ref: ${{ env.FLYTESNACKS_VERSION }} - name: Register specific tests run: | + flytekit_version=$(pip show flytekit | grep -i version | awk '{ print $2 }') while read -r line; do pyflyte --config ./boilerplate/flyte/end2end/functional-test-config.yaml \ register \ --project flytesnacks \ --domain development \ - --image cr.flyte.org/flyteorg/flytekit:py3.11-latest \ + --image cr.flyte.org/flyteorg/flytekit:py3.12-${flytekit_version} \ --version ${{ env.FLYTESNACKS_VERSION }} \ flytesnacks/$line; done < flytesnacks/flyte_tests.txt From 04dc245013164880cd34bd485b73799c79a95c4f Mon Sep 17 00:00:00 2001 From: Troy Chiu <114708546+troychiu@users.noreply.github.com> Date: Fri, 15 Mar 2024 13:26:18 -0700 Subject: [PATCH 093/107] integration test config (#5058) Signed-off-by: troychiu --- .../script/integration/k8s/integration.yaml | 3 +++ flyteadmin/tests/bootstrap.go | 23 +++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/flyteadmin/script/integration/k8s/integration.yaml b/flyteadmin/script/integration/k8s/integration.yaml index 4fae0bab27d..5e57935316d 100644 --- a/flyteadmin/script/integration/k8s/integration.yaml +++ b/flyteadmin/script/integration/k8s/integration.yaml @@ -417,6 +417,9 @@ spec: - name: flyteadmin image: flyteadmin:test imagePullPolicy: IfNotPresent + env: + - name: USE_INTEGRATION_TEST_CONFIG + value: "True" securityContext: privileged: true readinessProbe: diff --git a/flyteadmin/tests/bootstrap.go b/flyteadmin/tests/bootstrap.go index 9fd3b270269..aa1808282d9 100644 --- a/flyteadmin/tests/bootstrap.go +++ b/flyteadmin/tests/bootstrap.go @@ -6,6 +6,7 @@ package tests import ( "context" "fmt" + "os" "gorm.io/gorm" @@ -19,9 +20,19 @@ const insertExecutionQueryStr = `INSERT INTO "executions" ` + `("execution_project","execution_domain","execution_name","phase","launch_plan_id","workflow_id") ` + `VALUES ('%s', '%s', '%s', '%s', '%d', '%d')` +const integrationTestConfigEnvVar = "USE_INTEGRATION_TEST_CONFIG" + var adminScope = promutils.NewScope("flyteadmin") func getDbConfig() *database.DbConfig { + if os.Getenv(integrationTestConfigEnvVar) == "True" { + return getIntegrationDbConfig() + } else { + return getSandboxDbConfig() + } +} + +func getIntegrationDbConfig() *database.DbConfig { return &database.DbConfig{ Postgres: database.PostgresConfig{ Host: "postgres", @@ -32,13 +43,15 @@ func getDbConfig() *database.DbConfig { } } -func getLocalDbConfig() *database.DbConfig { +// Run `flytectl demo start` to start the sandbox +func getSandboxDbConfig() *database.DbConfig { return &database.DbConfig{ Postgres: database.PostgresConfig{ - Host: "localhost", - Port: 5432, - DbName: "flyteadmin", - User: "postgres", + Host: "localhost", + Port: 30001, + DbName: "flyte", + Password: "postgres", + User: "postgres", }, } } From 9818423079d265bfc44b728f8d10b2fb0b2944db Mon Sep 17 00:00:00 2001 From: Katrina Rogan Date: Mon, 18 Mar 2024 11:02:19 -0700 Subject: [PATCH 094/107] Add org as an optional request param to dataproxy CreateUploadLocation (#5060) --- .../pb-es/flyteidl/service/dataproxy_pb.ts | 8 + .../pb-go/flyteidl/service/dataproxy.pb.go | 290 +++++++++--------- .../flyteidl/service/dataproxy.swagger.json | 4 + flyteidl/gen/pb-js/flyteidl.d.ts | 6 + flyteidl/gen/pb-js/flyteidl.js | 17 + .../flyteidl/service/dataproxy_pb2.py | 40 +-- .../flyteidl/service/dataproxy_pb2.pyi | 6 +- flyteidl/gen/pb_rust/flyteidl.service.rs | 3 + flyteidl/go.mod | 4 +- flyteidl/go.sum | 1 + .../protos/flyteidl/service/dataproxy.proto | 4 + 11 files changed, 220 insertions(+), 163 deletions(-) diff --git a/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts b/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts index 8ce9d574351..3ccbc50892d 100644 --- a/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts @@ -169,6 +169,13 @@ export class CreateUploadLocationRequest extends Message) { super(); proto3.util.initPartial(data, this); @@ -184,6 +191,7 @@ export class CreateUploadLocationRequest extends Message): CreateUploadLocationRequest { diff --git a/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go b/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go index 802d4080b44..7459726a60d 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go @@ -186,6 +186,8 @@ type CreateUploadLocationRequest struct { // it will force clients to add this metadata to the object. // This make sure dataproxy is backward compatible with the old flytekit. AddContentMd5Metadata bool `protobuf:"varint,7,opt,name=add_content_md5_metadata,json=addContentMd5Metadata,proto3" json:"add_content_md5_metadata,omitempty"` + // Optional, org key applied to the resource. + Org string `protobuf:"bytes,8,opt,name=org,proto3" json:"org,omitempty"` } func (x *CreateUploadLocationRequest) Reset() { @@ -269,6 +271,13 @@ func (x *CreateUploadLocationRequest) GetAddContentMd5Metadata() bool { return false } +func (x *CreateUploadLocationRequest) GetOrg() string { + if x != nil { + return x.Org + } + return "" +} + // CreateDownloadLocationRequest specified request for the CreateDownloadLocation API. // // Deprecated: Marked as deprecated in flyteidl/service/dataproxy.proto. @@ -800,7 +809,7 @@ var file_flyteidl_service_dataproxy_proto_rawDesc = []byte{ 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0xa4, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb6, 0x02, 0x0a, 0x1b, 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, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, @@ -819,148 +828,149 @@ var file_flyteidl_service_dataproxy_proto_rawDesc = []byte{ 0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7c, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x22, 0x7c, 0x0a, 0x1d, 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, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x02, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, + 0x6e, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x7e, 0x0a, 0x1e, 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, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, - 0x5f, 0x69, 0x6e, 0x18, 0x02, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x3a, - 0x02, 0x18, 0x01, 0x22, 0x7e, 0x0a, 0x1e, 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, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, + 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xfa, 0x01, 0x0a, 0x19, 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, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x02, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x49, 0x6e, 0x12, 0x54, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 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, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x1a, 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, 0x12, 0x21, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x55, 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x3a, - 0x02, 0x18, 0x01, 0x22, 0xfa, 0x01, 0x0a, 0x19, 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, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x02, 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, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, - 0x12, 0x54, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 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, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x22, 0xc7, 0x01, 0x0a, 0x1a, 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, 0x12, - 0x21, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, - 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, - 0x74, 0x12, 0x47, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, - 0x75, 0x72, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, - 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x52, 0x0d, 0x70, 0x72, 0x65, - 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x22, 0x69, 0x0a, 0x0d, 0x50, 0x72, - 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x09, 0x65, 0x78, 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, 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, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, - 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 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, 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, 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, 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, 0x61, 0x6d, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x41, 0x74, 0x12, 0x47, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x52, 0x0d, 0x70, + 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x22, 0x69, 0x0a, 0x0d, + 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x09, 0x65, 0x78, + 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, + 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, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, + 0x4c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, + 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, + 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, 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, + 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, } var ( 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 b26138d8b72..4798fc6c2d6 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json @@ -752,6 +752,10 @@ "add_content_md5_metadata": { "type": "boolean", "description": "If true, the data proxy will add content_md5 to the metadata to the signed URL and\nit will force clients to add this metadata to the object.\nThis make sure dataproxy is backward compatible with the old flytekit." + }, + "org": { + "type": "string", + "description": "Optional, org key applied to the resource." } }, "description": "CreateUploadLocationRequest specified request for the CreateUploadLocation API.\nThe implementation in data proxy service will create the s3 location with some server side configured prefixes,\nand then:\n - project/domain/(a deterministic str representation of the content_md5)/filename (if present); OR\n - project/domain/filename_root (if present)/filename (if present)." diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 8c01d5f2847..1d1f77b57ec 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -22829,6 +22829,9 @@ export namespace flyteidl { /** CreateUploadLocationRequest addContentMd5Metadata */ addContentMd5Metadata?: (boolean|null); + + /** CreateUploadLocationRequest org */ + org?: (string|null); } /** Represents a CreateUploadLocationRequest. */ @@ -22861,6 +22864,9 @@ export namespace flyteidl { /** CreateUploadLocationRequest addContentMd5Metadata. */ public addContentMd5Metadata: boolean; + /** CreateUploadLocationRequest org. */ + public org: string; + /** * Creates a new CreateUploadLocationRequest instance using the specified properties. * @param [properties] Properties to set diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index fffe3309026..95ac3ce6ea2 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -53509,6 +53509,7 @@ * @property {Uint8Array|null} [contentMd5] CreateUploadLocationRequest contentMd5 * @property {string|null} [filenameRoot] CreateUploadLocationRequest filenameRoot * @property {boolean|null} [addContentMd5Metadata] CreateUploadLocationRequest addContentMd5Metadata + * @property {string|null} [org] CreateUploadLocationRequest org */ /** @@ -53582,6 +53583,14 @@ */ CreateUploadLocationRequest.prototype.addContentMd5Metadata = false; + /** + * CreateUploadLocationRequest org. + * @member {string} org + * @memberof flyteidl.service.CreateUploadLocationRequest + * @instance + */ + CreateUploadLocationRequest.prototype.org = ""; + /** * Creates a new CreateUploadLocationRequest instance using the specified properties. * @function create @@ -53620,6 +53629,8 @@ writer.uint32(/* id 6, wireType 2 =*/50).string(message.filenameRoot); if (message.addContentMd5Metadata != null && message.hasOwnProperty("addContentMd5Metadata")) writer.uint32(/* id 7, wireType 0 =*/56).bool(message.addContentMd5Metadata); + if (message.org != null && message.hasOwnProperty("org")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.org); return writer; }; @@ -53662,6 +53673,9 @@ case 7: message.addContentMd5Metadata = reader.bool(); break; + case 8: + message.org = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -53704,6 +53718,9 @@ if (message.addContentMd5Metadata != null && message.hasOwnProperty("addContentMd5Metadata")) if (typeof message.addContentMd5Metadata !== "boolean") return "addContentMd5Metadata: boolean expected"; + if (message.org != null && message.hasOwnProperty("org")) + if (!$util.isString(message.org)) + return "org: string expected"; return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.py b/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.py index f4c25e43ae4..3677f367ca5 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\"\xa4\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\"|\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\"\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') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -46,28 +46,28 @@ _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=1935 - _globals['_ARTIFACTTYPE']._serialized_end=2002 + _globals['_ARTIFACTTYPE']._serialized_start=1953 + _globals['_ARTIFACTTYPE']._serialized_end=2020 _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_start=260 _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_end=558 _globals['_CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY']._serialized_start=500 _globals['_CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY']._serialized_end=558 _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_start=561 - _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_end=853 - _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_start=855 - _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_end=979 - _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_start=981 - _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_end=1107 - _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_start=1110 - _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_end=1360 - _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_start=1363 - _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_end=1562 - _globals['_PRESIGNEDURLS']._serialized_start=1564 - _globals['_PRESIGNEDURLS']._serialized_end=1669 - _globals['_GETDATAREQUEST']._serialized_start=1671 - _globals['_GETDATAREQUEST']._serialized_end=1716 - _globals['_GETDATARESPONSE']._serialized_start=1719 - _globals['_GETDATARESPONSE']._serialized_end=1933 - _globals['_DATAPROXYSERVICE']._serialized_start=2005 - _globals['_DATAPROXYSERVICE']._serialized_end=2905 + _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_end=871 + _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_start=873 + _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_end=997 + _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_start=999 + _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_end=1125 + _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_start=1128 + _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_end=1378 + _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_start=1381 + _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_end=1580 + _globals['_PRESIGNEDURLS']._serialized_start=1582 + _globals['_PRESIGNEDURLS']._serialized_end=1687 + _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 # @@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 50c2bf3c5ed..f76e4dc8b1d 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi @@ -39,7 +39,7 @@ class CreateUploadLocationResponse(_message.Message): def __init__(self, signed_url: _Optional[str] = ..., native_url: _Optional[str] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., headers: _Optional[_Mapping[str, str]] = ...) -> None: ... class CreateUploadLocationRequest(_message.Message): - __slots__ = ["project", "domain", "filename", "expires_in", "content_md5", "filename_root", "add_content_md5_metadata"] + __slots__ = ["project", "domain", "filename", "expires_in", "content_md5", "filename_root", "add_content_md5_metadata", "org"] PROJECT_FIELD_NUMBER: _ClassVar[int] DOMAIN_FIELD_NUMBER: _ClassVar[int] FILENAME_FIELD_NUMBER: _ClassVar[int] @@ -47,6 +47,7 @@ class CreateUploadLocationRequest(_message.Message): CONTENT_MD5_FIELD_NUMBER: _ClassVar[int] FILENAME_ROOT_FIELD_NUMBER: _ClassVar[int] ADD_CONTENT_MD5_METADATA_FIELD_NUMBER: _ClassVar[int] + ORG_FIELD_NUMBER: _ClassVar[int] project: str domain: str filename: str @@ -54,7 +55,8 @@ class CreateUploadLocationRequest(_message.Message): content_md5: bytes filename_root: str add_content_md5_metadata: bool - def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., filename: _Optional[str] = ..., expires_in: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., content_md5: _Optional[bytes] = ..., filename_root: _Optional[str] = ..., add_content_md5_metadata: bool = ...) -> None: ... + org: str + def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., filename: _Optional[str] = ..., expires_in: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., content_md5: _Optional[bytes] = ..., filename_root: _Optional[str] = ..., add_content_md5_metadata: bool = ..., org: _Optional[str] = ...) -> None: ... class CreateDownloadLocationRequest(_message.Message): __slots__ = ["native_url", "expires_in"] diff --git a/flyteidl/gen/pb_rust/flyteidl.service.rs b/flyteidl/gen/pb_rust/flyteidl.service.rs index e53abba678d..b5a6b8b0528 100644 --- a/flyteidl/gen/pb_rust/flyteidl.service.rs +++ b/flyteidl/gen/pb_rust/flyteidl.service.rs @@ -130,6 +130,9 @@ pub struct CreateUploadLocationRequest { /// This make sure dataproxy is backward compatible with the old flytekit. #[prost(bool, tag="7")] pub add_content_md5_metadata: bool, + /// Optional, org key applied to the resource. + #[prost(string, tag="8")] + pub org: ::prost::alloc::string::String, } /// CreateDownloadLocationRequest specified request for the CreateDownloadLocation API. #[allow(clippy::derive_partial_eq_without_eq)] diff --git a/flyteidl/go.mod b/flyteidl/go.mod index 2187b2aeab8..d8669b9eb20 100644 --- a/flyteidl/go.mod +++ b/flyteidl/go.mod @@ -7,9 +7,11 @@ toolchain go1.21.3 require ( github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000 github.com/go-test/deep v1.0.7 + github.com/golang/glog v1.1.0 github.com/golang/protobuf v1.5.3 github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 github.com/jinzhu/copier v0.3.5 github.com/mitchellh/mapstructure v1.5.0 @@ -19,6 +21,7 @@ require ( github.com/stretchr/testify v1.8.4 golang.org/x/net v0.15.0 golang.org/x/oauth2 v0.8.0 + google.golang.org/api v0.114.0 google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 google.golang.org/grpc v1.56.1 google.golang.org/protobuf v1.30.0 @@ -96,7 +99,6 @@ require ( golang.org/x/text v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.114.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect diff --git a/flyteidl/go.sum b/flyteidl/go.sum index 5b4cf356d3b..f1911aadfea 100644 --- a/flyteidl/go.sum +++ b/flyteidl/go.sum @@ -218,6 +218,7 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdR github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= diff --git a/flyteidl/protos/flyteidl/service/dataproxy.proto b/flyteidl/protos/flyteidl/service/dataproxy.proto index b24c794cc88..86c7c4d9770 100644 --- a/flyteidl/protos/flyteidl/service/dataproxy.proto +++ b/flyteidl/protos/flyteidl/service/dataproxy.proto @@ -63,6 +63,10 @@ message CreateUploadLocationRequest { // it will force clients to add this metadata to the object. // This make sure dataproxy is backward compatible with the old flytekit. bool add_content_md5_metadata = 7; + + + // Optional, org key applied to the resource. + string org = 8; } // CreateDownloadLocationRequest specified request for the CreateDownloadLocation API. From eb2410780edf5f525429f4d83d8bdd2397f08cc8 Mon Sep 17 00:00:00 2001 From: Neil <150836163+neilisaur@users.noreply.github.com> Date: Mon, 18 Mar 2024 15:35:34 -0600 Subject: [PATCH 095/107] Add k8s env froms (#4969) * Adding allowance for default configMap/secrets to pull env froms Signed-off-by: Neil Stout * Updating Helm charts Signed-off-by: Neil Stout * Fixing typos Signed-off-by: Neil Stout * More typo Signed-off-by: Neil Stout * Ran 'make helm' Signed-off-by: Neil Stout * Updating docs from `make helm` Signed-off-by: Neil Stout * `make helm` results Signed-off-by: Neil Stout * Fixing issues with env vs envFrom Signed-off-by: Neil Stout * Fixing merge issue Signed-off-by: Neil Stout * Better naming for variable Signed-off-by: Neil Stout * Renaming to be more accurate Signed-off-by: Neil Stout * Fixing typo Signed-off-by: Neil Stout * Forgot one change Signed-off-by: Neil Stout * Fixing linting error Signed-off-by: Neil Stout * Updating Helm charts Signed-off-by: Neil Stout --------- Signed-off-by: Neil Stout --- charts/flyte/README.md | 8 ++++---- charts/flyte/values.yaml | 2 ++ deployment/sandbox/flyte_helm_generated.yaml | 6 ++++-- .../manifests/complete-agent.yaml | 4 ++-- docker/sandbox-bundled/manifests/complete.yaml | 4 ++-- docker/sandbox-bundled/manifests/dev.yaml | 4 ++-- .../pluginmachinery/flytek8s/config/config.go | 4 ++++ .../flytek8s/container_helper.go | 2 +- .../flytek8s/k8s_resource_adds.go | 18 ++++++++++++++++-- .../flytek8s/k8s_resource_adds_test.go | 2 +- .../plugins/array/awsbatch/transformer.go | 2 +- 11 files changed, 39 insertions(+), 17 deletions(-) diff --git a/charts/flyte/README.md b/charts/flyte/README.md index 5ead2db7308..ab32ec9460a 100644 --- a/charts/flyte/README.md +++ b/charts/flyte/README.md @@ -71,7 +71,7 @@ helm upgrade -f values-sandbox.yaml flyte . | contour.tolerations | list | `[]` | tolerations for Contour deployment | | daskoperator | object | `{"enabled":false}` | Optional: Dask Plugin using the Dask Operator | | daskoperator.enabled | bool | `false` | - enable or disable the dask operator deployment installation | -| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.11.0"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.3"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.11.0"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | +| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.11.0"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.3"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.11.0"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | | flyte.cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | | flyte.cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. | | flyte.cluster_resource_manager.config.cluster_resources.standaloneDeployment | bool | `false` | Starts the cluster resource manager in standalone mode with requisite auth credentials to call flyteadmin service endpoints | @@ -91,7 +91,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.common.ingress.separateGrpcIngressAnnotations | object | `{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"}` | - Extra Ingress annotations applied only to the GRPC ingress. Only makes sense if `separateGrpcIngress` is enabled. | | flyte.common.ingress.tls | object | `{"enabled":false}` | - TLS Settings | | flyte.common.ingress.webpackHMR | bool | `true` | - Enable or disable HMR route to flyteconsole. This is useful only for frontend development. | -| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | +| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | | flyte.configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration | | flyte.configmap.adminServer.auth | object | `{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}}` | Authentication configuration | | flyte.configmap.adminServer.server.security.secure | bool | `false` | Controls whether to serve requests over SSL/TLS. | @@ -107,8 +107,8 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.configmap.enabled_plugins.tasks | object | `{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}` | Tasks specific configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#GetConfig) | | flyte.configmap.enabled_plugins.tasks.task-plugins | object | `{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}` | Plugins configuration, [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#TaskPluginConfig) | | flyte.configmap.enabled_plugins.tasks.task-plugins.enabled-plugins | list | `["container","sidecar","k8s-array","agent-service"]` | [Enabled Plugins](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/config#Config). Enable sagemaker*, athena if you install the backend plugins | -| flyte.configmap.k8s | object | `{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}}` | Kubernetes specific Flyte configuration | -| flyte.configmap.k8s.plugins.k8s | object | `{"default-cpus":"100m","default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}` | Configuration section for all K8s specific plugins [Configuration structure](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/flytek8s/config) | +| flyte.configmap.k8s | object | `{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}}` | Kubernetes specific Flyte configuration | +| flyte.configmap.k8s.plugins.k8s | object | `{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}` | Configuration section for all K8s specific plugins [Configuration structure](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/flytek8s/config) | | flyte.configmap.logger | object | `{"logger":{"level":5,"show-source":true}}` | Logger configuration | | flyte.configmap.resource_manager | object | `{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}}` | Resource manager configuration | | flyte.configmap.resource_manager.propeller | object | `{"resourcemanager":{"redis":null,"type":"noop"}}` | resource manager configuration | diff --git a/charts/flyte/values.yaml b/charts/flyte/values.yaml index f0d2f7c75a5..2f19498dd48 100755 --- a/charts/flyte/values.yaml +++ b/charts/flyte/values.yaml @@ -547,6 +547,8 @@ flyte: - FLYTE_AWS_ACCESS_KEY_ID: minio - FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage default-memory: 200Mi + default-env-from-configmaps: [] + default-env-from-secrets: [] # -- Logger configuration logger: diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index 9d032a0735c..12705dd8ac8 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -646,6 +646,8 @@ data: plugins: k8s: default-cpus: 100m + default-env-from-configmaps: [] + default-env-from-secrets: [] default-env-vars: - FLYTE_AWS_ENDPOINT: http://minio.flyte:9000 - FLYTE_AWS_ACCESS_KEY_ID: minio @@ -7170,7 +7172,7 @@ spec: template: metadata: annotations: - configChecksum: "ecefcb1d6df38b32a9ec77d91de63cd40da935a3239b70a5bb0396435878c80" + configChecksum: "3500386bee9f0763c6f14460f607cea4e6e24be4224a806c0673db71e13e287" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -7244,7 +7246,7 @@ spec: app.kubernetes.io/name: flyte-pod-webhook app.kubernetes.io/version: v1.11.0 annotations: - configChecksum: "ecefcb1d6df38b32a9ec77d91de63cd40da935a3239b70a5bb0396435878c80" + configChecksum: "3500386bee9f0763c6f14460f607cea4e6e24be4224a806c0673db71e13e287" spec: securityContext: fsGroup: 65534 diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 50a2722e8ad..da45fdc06ee 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: VTg5RFBvY205cXRtcEVFbw== + haSharedSecret: U0tNSVV0aUwzZzYxNVZnVQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: b8339a7b42c1e04b994b517d4ddd749074787df4a0eaef9e1aa2181988aea2d7 + checksum/secret: e0d4db2f1f52d2e4d16959b463e9470d657899ab22db5d8eb2fbc605cdcda0a2 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index 73f262a6843..d0872c7a63b 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: ZTNEUmhqY1VsWDBXNFowTg== + haSharedSecret: bmNtdzJkQ0l2Rm5BS3VZSg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: cedf489b22e27428631c5c365e58bfd51cf8465bf04d07a74462677278017b80 + checksum/secret: b1ca10c95becb2e7214c9ece8101acc322ecde650f1e70bdb1bbb37323c948f6 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index ae3bcbf29af..828a53d4ef3 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: bkV2U2JzN0o2TXNVcHJTMg== + haSharedSecret: S2hmRkxmVjdKZUpoTkR6OQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 2f2e4b3f4abc8a670a75900bd0c7987fb3afa6b2a287fdf7292fbeb755c00c12 + checksum/secret: 446da9acad72026ea6684e9f0cf3e47f8a458fa10d29d61ac3f8bc509afc7c11 labels: app: docker-registry release: flyte-sandbox diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/config/config.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/config/config.go index 55f9cfa68c1..404924ef079 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/config/config.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/config/config.go @@ -90,6 +90,10 @@ type K8sPluginConfig struct { DefaultEnvVars map[string]string `json:"default-env-vars" pflag:"-,Additional environment variable that should be injected into every resource"` // Provide additional environment variable pairs whose values resolve from the plugin's execution environment. DefaultEnvVarsFromEnv map[string]string `json:"default-env-vars-from-env" pflag:"-,Additional environment variable that should be injected into every resource"` + // Provide additional environment variable parts from configMaps + DefaultEnvFromConfigMaps []string `json:"default-env-from-configmaps" pflag:"-,Additional environment variable sets that should be injected into each pod from these configMaps"` + // Provide additional environment variable parts from secrets + DefaultEnvFromSecrets []string `json:"default-env-from-secrets" pflag:"-,Additional environment variable sets that should be injected into each pod from these secret"` // default cpu requests for a container DefaultCPURequest resource.Quantity `json:"default-cpus" pflag:",Defines a default value for cpu for containers if not specified."` diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper.go index cffc57a77d8..268819473a1 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper.go @@ -291,7 +291,7 @@ func AddFlyteCustomizationsToContainer(ctx context.Context, parameters template. } container.Args = modifiedArgs - container.Env = DecorateEnvVars(ctx, container.Env, parameters.TaskExecMetadata.GetEnvironmentVariables(), parameters.TaskExecMetadata.GetTaskExecutionID()) + container.Env, container.EnvFrom = DecorateEnvVars(ctx, container.Env, parameters.TaskExecMetadata.GetEnvironmentVariables(), parameters.TaskExecMetadata.GetTaskExecutionID()) // retrieve platformResources and overrideResources to use when aggregating container resources platformResources := parameters.TaskExecMetadata.GetPlatformResources() diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds.go index c2d868c0392..b235725edd9 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds.go @@ -113,7 +113,7 @@ func GetExecutionEnvVars(id pluginsCore.TaskExecutionID) []v1.EnvVar { return envVars } -func DecorateEnvVars(ctx context.Context, envVars []v1.EnvVar, taskEnvironmentVariables map[string]string, id pluginsCore.TaskExecutionID) []v1.EnvVar { +func DecorateEnvVars(ctx context.Context, envVars []v1.EnvVar, taskEnvironmentVariables map[string]string, id pluginsCore.TaskExecutionID) ([]v1.EnvVar, []v1.EnvFromSource) { envVars = append(envVars, GetContextEnvVars(ctx)...) envVars = append(envVars, GetExecutionEnvVars(id)...) @@ -128,7 +128,21 @@ func DecorateEnvVars(ctx context.Context, envVars []v1.EnvVar, taskEnvironmentVa envVars = append(envVars, v1.EnvVar{Name: k, Value: value}) } - return envVars + envFroms := []v1.EnvFromSource{} + + for _, secretName := range config.GetK8sPluginConfig().DefaultEnvFromSecrets { + optional := true + secretRef := v1.SecretEnvSource{LocalObjectReference: v1.LocalObjectReference{Name: secretName}, Optional: &optional} + envFroms = append(envFroms, v1.EnvFromSource{SecretRef: &secretRef}) + } + + for _, cmName := range config.GetK8sPluginConfig().DefaultEnvFromConfigMaps { + optional := true + cmRef := v1.ConfigMapEnvSource{LocalObjectReference: v1.LocalObjectReference{Name: cmName}, Optional: &optional} + envFroms = append(envFroms, v1.EnvFromSource{ConfigMapRef: &cmRef}) + } + + return envVars, envFroms } func GetPodTolerations(interruptible bool, resourceRequirements ...v1.ResourceRequirements) []v1.Toleration { diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds_test.go index aec1f573a61..2093639d979 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/k8s_resource_adds_test.go @@ -283,7 +283,7 @@ func TestDecorateEnvVars(t *testing.T) { DefaultEnvVars: tt.additionEnvVar, DefaultEnvVarsFromEnv: tt.additionEnvVarFromEnv, })) - if got := DecorateEnvVars(ctx, tt.args.envVars, tt.executionEnvVar, tt.args.id); !reflect.DeepEqual(got, tt.want) { + if got, _ := DecorateEnvVars(ctx, tt.args.envVars, tt.executionEnvVar, tt.args.id); !reflect.DeepEqual(got, tt.want) { t.Errorf("DecorateEnvVars() = %v, want %v", got, tt.want) } }) diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/transformer.go b/flyteplugins/go/tasks/plugins/array/awsbatch/transformer.go index 8c252a7c061..c75ca61c42f 100644 --- a/flyteplugins/go/tasks/plugins/array/awsbatch/transformer.go +++ b/flyteplugins/go/tasks/plugins/array/awsbatch/transformer.go @@ -136,7 +136,7 @@ func UpdateBatchInputForArray(_ context.Context, batchInput *batch.SubmitJobInpu func getEnvVarsForTask(ctx context.Context, execID pluginCore.TaskExecutionID, containerEnvVars []*core.KeyValuePair, defaultEnvVars map[string]string) []v1.EnvVar { - envVars := flytek8s.DecorateEnvVars(ctx, flytek8s.ToK8sEnvVar(containerEnvVars), nil, execID) + envVars, _ := flytek8s.DecorateEnvVars(ctx, flytek8s.ToK8sEnvVar(containerEnvVars), nil, execID) m := make(map[string]string, len(envVars)) for _, envVar := range envVars { m[envVar.Name] = envVar.Value From 3fe45336245f125d832a94b1c5eef5e3b3ba2491 Mon Sep 17 00:00:00 2001 From: Rafael Raposo <100569684+RRap0so@users.noreply.github.com> Date: Wed, 20 Mar 2024 17:05:48 +0000 Subject: [PATCH 096/107] Implement GetProject endpoint in FlyteAdmin (#4825) --- cmd/single/console_dist.go | 2 +- .../pkg/manager/impl/project_manager.go | 13 + .../pkg/manager/impl/project_manager_test.go | 56 + .../impl/validation/project_validator.go | 7 + .../impl/validation/project_validator_test.go | 12 + flyteadmin/pkg/manager/interfaces/project.go | 1 + flyteadmin/pkg/manager/mocks/project.go | 13 + flyteadmin/pkg/rpc/adminservice/metrics.go | 2 + flyteadmin/pkg/rpc/adminservice/project.go | 18 + .../rpc/adminservice/tests/project_test.go | 12 + flyteadmin/pkg/server/service.go | 4 +- .../go/admin/mocks/AdminServiceClient.go | 48 + .../go/admin/mocks/AdminServiceServer.go | 41 + flyteidl/clients/go/assets/admin.swagger.json | 31 + .../gen/pb-es/flyteidl/admin/project_pb.ts | 40 + .../pb-es/flyteidl/service/admin_connect.ts | 13 +- .../gen/pb-go/flyteidl/admin/project.pb.go | 120 +- .../gen/pb-go/flyteidl/service/admin.pb.go | 1108 +++++++++-------- .../pb-go/flyteidl/service/admin_grpc.pb.go | 39 + .../gateway/flyteidl/service/admin.pb.gw.go | 103 ++ .../flyteidl/service/admin.swagger.json | 31 + flyteidl/gen/pb-js/flyteidl.d.ts | 73 ++ flyteidl/gen/pb-js/flyteidl.js | 143 +++ .../pb_python/flyteidl/admin/project_pb2.py | 4 +- .../pb_python/flyteidl/admin/project_pb2.pyi | 6 + .../pb_python/flyteidl/service/admin_pb2.py | 6 +- .../flyteidl/service/admin_pb2_grpc.py | 34 + flyteidl/gen/pb_rust/flyteidl.admin.rs | 8 + flyteidl/protos/flyteidl/admin/project.proto | 6 + flyteidl/protos/flyteidl/service/admin.proto | 10 + .../core/mocks/task_overrides.go | 1 - 31 files changed, 1421 insertions(+), 584 deletions(-) diff --git a/cmd/single/console_dist.go b/cmd/single/console_dist.go index f7ea8b674c3..450c743cee6 100644 --- a/cmd/single/console_dist.go +++ b/cmd/single/console_dist.go @@ -20,7 +20,7 @@ var consoleHandlers = map[string]handlerFunc{ consoleHandler.ServeHTTP(writer, request) }, consoleRoot + "/": func(writer http.ResponseWriter, request *http.Request) { - writer.Header().Set("Cache-Control", "max-age=604800") // 7 days + writer.Header().Set("Cache-Control", "max-age=604800") // 7 days consoleHandler.ServeHTTP(writer, request) }, } diff --git a/flyteadmin/pkg/manager/impl/project_manager.go b/flyteadmin/pkg/manager/impl/project_manager.go index 8792b0e64d7..abf46d2438d 100644 --- a/flyteadmin/pkg/manager/impl/project_manager.go +++ b/flyteadmin/pkg/manager/impl/project_manager.go @@ -127,6 +127,19 @@ func (m *ProjectManager) UpdateProject(ctx context.Context, projectUpdate admin. return &response, nil } +func (m *ProjectManager) GetProject(ctx context.Context, request admin.ProjectGetRequest) (*admin.Project, error) { + if err := validation.ValidateProjectGetRequest(request); err != nil { + return nil, err + } + projectModel, err := m.db.ProjectRepo().Get(ctx, request.Id) + if err != nil { + return nil, err + } + projectResponse := transformers.FromProjectModel(projectModel, m.getDomains()) + + return &projectResponse, nil +} + func NewProjectManager(db repoInterfaces.Repository, config runtimeInterfaces.Configuration) interfaces.ProjectInterface { return &ProjectManager{ db: db, diff --git a/flyteadmin/pkg/manager/impl/project_manager_test.go b/flyteadmin/pkg/manager/impl/project_manager_test.go index 1abd46d856e..6fe18c90be7 100644 --- a/flyteadmin/pkg/manager/impl/project_manager_test.go +++ b/flyteadmin/pkg/manager/impl/project_manager_test.go @@ -278,3 +278,59 @@ func TestProjectManager_UpdateProject_ErrorDueToInvalidProjectName(t *testing.T) }) assert.EqualError(t, err, "project_name cannot exceed 64 characters") } + +func TestProjectManager_TestGetProject(t *testing.T) { + mockRepository := repositoryMocks.NewMockRepository() + mockedProject := &admin.ProjectGetRequest{Id: project} + activeState := int32(admin.Project_ACTIVE) + mockRepository.ProjectRepo().(*repositoryMocks.MockProjectRepo).GetFunction = func(ctx context.Context, projectID string) (models.Project, error) { + + return models.Project{ + BaseModel: models.BaseModel{}, + Identifier: projectID, + Name: "a-mocked-project", + Description: "A mocked project", + State: &activeState, + }, nil + } + + projectManager := NewProjectManager(mockRepository, runtimeMocks.NewMockConfigurationProvider( + getMockApplicationConfigForProjectManagerTest(), nil, nil, nil, nil, nil)) + + resp, _ := projectManager.GetProject(context.Background(), + *mockedProject) + + assert.Equal(t, mockedProject.Id, resp.Id) + assert.Equal(t, "a-mocked-project", resp.Name) + assert.Equal(t, "A mocked project", resp.Description) + assert.Equal(t, admin.Project_ProjectState(0), resp.State) +} + +func TestProjectManager_TestGetProject_ErrorDueToProjectNotFound(t *testing.T) { + mockRepository := repositoryMocks.NewMockRepository() + mockedProject := &admin.ProjectGetRequest{Id: project} + mockRepository.ProjectRepo().(*repositoryMocks.MockProjectRepo).GetFunction = func(ctx context.Context, projectID string) (models.Project, error) { + return models.Project{}, errors.New("project " + projectID + " not found") + } + + projectManager := NewProjectManager(mockRepository, runtimeMocks.NewMockConfigurationProvider( + getMockApplicationConfigForProjectManagerTest(), nil, nil, nil, nil, nil)) + + _, err := projectManager.GetProject(context.Background(), + *mockedProject) + + assert.EqualError(t, err, "project "+project+" not found") +} + +func TestProjectManager_TestGetProject_ErrorDueToEmptyProjectGetRequest(t *testing.T) { + mockRepository := repositoryMocks.NewMockRepository() + mockedProject := &admin.ProjectGetRequest{Id: ""} + + projectManager := NewProjectManager(mockRepository, runtimeMocks.NewMockConfigurationProvider( + getMockApplicationConfigForProjectManagerTest(), nil, nil, nil, nil, nil)) + + _, err := projectManager.GetProject(context.Background(), + *mockedProject) + + assert.EqualError(t, err, "missing project_id") +} diff --git a/flyteadmin/pkg/manager/impl/validation/project_validator.go b/flyteadmin/pkg/manager/impl/validation/project_validator.go index 6d3b455733a..8577c13e2b6 100644 --- a/flyteadmin/pkg/manager/impl/validation/project_validator.go +++ b/flyteadmin/pkg/manager/impl/validation/project_validator.go @@ -31,6 +31,13 @@ func ValidateProjectRegisterRequest(request admin.ProjectRegisterRequest) error return ValidateProject(project) } +func ValidateProjectGetRequest(request admin.ProjectGetRequest) error { + if err := ValidateEmptyStringField(request.Id, projectID); err != nil { + return err + } + return nil +} + func ValidateProject(project admin.Project) error { if err := ValidateEmptyStringField(project.Id, projectID); err != nil { return err diff --git a/flyteadmin/pkg/manager/impl/validation/project_validator_test.go b/flyteadmin/pkg/manager/impl/validation/project_validator_test.go index 718647b3aaa..288389d59f2 100644 --- a/flyteadmin/pkg/manager/impl/validation/project_validator_test.go +++ b/flyteadmin/pkg/manager/impl/validation/project_validator_test.go @@ -364,3 +364,15 @@ func TestValidateProjectExistsDb(t *testing.T) { assert.Error(t, err) }) } + +func TestValidateProjectGetRequest(t *testing.T) { + t.Run("base case", func(t *testing.T) { + assert.Nil(t, ValidateProjectGetRequest(admin.ProjectGetRequest{ + Id: "project-id", + })) + }) + + t.Run("missing project id", func(t *testing.T) { + assert.EqualError(t, ValidateProjectGetRequest(admin.ProjectGetRequest{}), "missing project_id") + }) +} diff --git a/flyteadmin/pkg/manager/interfaces/project.go b/flyteadmin/pkg/manager/interfaces/project.go index cd91fb04392..add58aa1963 100644 --- a/flyteadmin/pkg/manager/interfaces/project.go +++ b/flyteadmin/pkg/manager/interfaces/project.go @@ -11,4 +11,5 @@ type ProjectInterface interface { CreateProject(ctx context.Context, request admin.ProjectRegisterRequest) (*admin.ProjectRegisterResponse, error) ListProjects(ctx context.Context, request admin.ProjectListRequest) (*admin.Projects, error) UpdateProject(ctx context.Context, request admin.Project) (*admin.ProjectUpdateResponse, error) + GetProject(ctx context.Context, request admin.ProjectGetRequest) (*admin.Project, error) } diff --git a/flyteadmin/pkg/manager/mocks/project.go b/flyteadmin/pkg/manager/mocks/project.go index 8137955ced2..e86cdde4d54 100644 --- a/flyteadmin/pkg/manager/mocks/project.go +++ b/flyteadmin/pkg/manager/mocks/project.go @@ -9,11 +9,13 @@ import ( type CreateProjectFunc func(ctx context.Context, request admin.ProjectRegisterRequest) (*admin.ProjectRegisterResponse, error) type ListProjectFunc func(ctx context.Context, request admin.ProjectListRequest) (*admin.Projects, error) type UpdateProjectFunc func(ctx context.Context, request admin.Project) (*admin.ProjectUpdateResponse, error) +type GetProjectFunc func(ctx context.Context, request admin.ProjectGetRequest) (*admin.Project, error) type MockProjectManager struct { listProjectFunc ListProjectFunc createProjectFunc CreateProjectFunc updateProjectFunc UpdateProjectFunc + getProjectFunc GetProjectFunc } func (m *MockProjectManager) SetCreateProject(createProjectFunc CreateProjectFunc) { @@ -45,3 +47,14 @@ func (m *MockProjectManager) ListProjects( } return nil, nil } + +func (m *MockProjectManager) SetGetCallBack(getProjectFunc GetProjectFunc) { + m.getProjectFunc = getProjectFunc +} + +func (m *MockProjectManager) GetProject(ctx context.Context, request admin.ProjectGetRequest) (*admin.Project, error) { + if m.getProjectFunc != nil { + return m.getProjectFunc(ctx, request) + } + return nil, nil +} diff --git a/flyteadmin/pkg/rpc/adminservice/metrics.go b/flyteadmin/pkg/rpc/adminservice/metrics.go index 6e5060cab52..5d0e89d93e0 100644 --- a/flyteadmin/pkg/rpc/adminservice/metrics.go +++ b/flyteadmin/pkg/rpc/adminservice/metrics.go @@ -61,6 +61,7 @@ type projectEndpointMetrics struct { register util.RequestMetrics list util.RequestMetrics update util.RequestMetrics + get util.RequestMetrics } type attributeEndpointMetrics struct { @@ -176,6 +177,7 @@ func InitMetrics(adminScope promutils.Scope) AdminMetrics { register: util.NewRequestMetrics(adminScope, "register_project"), list: util.NewRequestMetrics(adminScope, "list_projects"), update: util.NewRequestMetrics(adminScope, "update_project"), + get: util.NewRequestMetrics(adminScope, "get_project"), }, projectAttributesEndpointMetrics: attributeEndpointMetrics{ scope: adminScope, diff --git a/flyteadmin/pkg/rpc/adminservice/project.go b/flyteadmin/pkg/rpc/adminservice/project.go index 838e78aeae0..df281dad0a4 100644 --- a/flyteadmin/pkg/rpc/adminservice/project.go +++ b/flyteadmin/pkg/rpc/adminservice/project.go @@ -63,3 +63,21 @@ func (m *AdminService) UpdateProject(ctx context.Context, request *admin.Project return response, nil } + +func (m *AdminService) GetProject(ctx context.Context, request *admin.ProjectGetRequest) (*admin.Project, error) { + defer m.interceptPanic(ctx, request) + if request == nil { + return nil, status.Errorf(codes.InvalidArgument, "Incorrect request, nil requests not allowed") + } + var response *admin.Project + var err error + m.Metrics.projectEndpointMetrics.get.Time(func() { + response, err = m.ProjectManager.GetProject(ctx, *request) + }) + if err != nil { + return nil, util.TransformAndRecordError(err, &m.Metrics.projectEndpointMetrics.get) + } + + m.Metrics.projectEndpointMetrics.get.Success() + return response, nil +} diff --git a/flyteadmin/pkg/rpc/adminservice/tests/project_test.go b/flyteadmin/pkg/rpc/adminservice/tests/project_test.go index 02b77f98378..8b713e668a1 100644 --- a/flyteadmin/pkg/rpc/adminservice/tests/project_test.go +++ b/flyteadmin/pkg/rpc/adminservice/tests/project_test.go @@ -58,3 +58,15 @@ func TestListProjects(t *testing.T) { assert.Nil(t, err) assert.True(t, proto.Equal(projects, resp)) } + +func TestGetProject(t *testing.T) { + mockProjectManager := mocks.MockProjectManager{} + project := &admin.Project{Id: "project id", Name: "project"} + mockProjectManager.SetGetCallBack(func(ctx context.Context, request admin.ProjectGetRequest) (*admin.Project, error) { + assert.NotNil(t, request) + return project, nil + }) + resp, err := mockProjectManager.GetProject(context.Background(), admin.ProjectGetRequest{}) + assert.Nil(t, err) + assert.True(t, proto.Equal(project, resp)) +} diff --git a/flyteadmin/pkg/server/service.go b/flyteadmin/pkg/server/service.go index d51f1c4f312..3a2eff220db 100644 --- a/flyteadmin/pkg/server/service.go +++ b/flyteadmin/pkg/server/service.go @@ -210,8 +210,8 @@ func newHTTPServer(ctx context.Context, pluginRegistry *plugins.Registry, cfg *c // the application/json content type. gwmuxOptions = append(gwmuxOptions, runtime.WithMarshalerOption("application/json", &runtime.JSONPb{ MarshalOptions: protojson.MarshalOptions{ - UseProtoNames: true, - EmitUnpopulated: true, + UseProtoNames: true, + EmitUnpopulated: true, EmitDefaultValues: true, }, })) diff --git a/flyteidl/clients/go/admin/mocks/AdminServiceClient.go b/flyteidl/clients/go/admin/mocks/AdminServiceClient.go index 3d4d3039b44..ad647aa331c 100644 --- a/flyteidl/clients/go/admin/mocks/AdminServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/AdminServiceClient.go @@ -977,6 +977,54 @@ func (_m *AdminServiceClient) GetNodeExecutionData(ctx context.Context, in *admi return r0, r1 } +type AdminServiceClient_GetProject struct { + *mock.Call +} + +func (_m AdminServiceClient_GetProject) Return(_a0 *admin.Project, _a1 error) *AdminServiceClient_GetProject { + return &AdminServiceClient_GetProject{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceClient) OnGetProject(ctx context.Context, in *admin.ProjectGetRequest, opts ...grpc.CallOption) *AdminServiceClient_GetProject { + c_call := _m.On("GetProject", ctx, in, opts) + return &AdminServiceClient_GetProject{Call: c_call} +} + +func (_m *AdminServiceClient) OnGetProjectMatch(matchers ...interface{}) *AdminServiceClient_GetProject { + c_call := _m.On("GetProject", matchers...) + return &AdminServiceClient_GetProject{Call: c_call} +} + +// GetProject provides a mock function with given fields: ctx, in, opts +func (_m *AdminServiceClient) GetProject(ctx context.Context, in *admin.ProjectGetRequest, opts ...grpc.CallOption) (*admin.Project, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *admin.Project + if rf, ok := ret.Get(0).(func(context.Context, *admin.ProjectGetRequest, ...grpc.CallOption) *admin.Project); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.Project) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.ProjectGetRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceClient_GetProjectAttributes struct { *mock.Call } diff --git a/flyteidl/clients/go/admin/mocks/AdminServiceServer.go b/flyteidl/clients/go/admin/mocks/AdminServiceServer.go index 37d540f5ae6..a303734ed5d 100644 --- a/flyteidl/clients/go/admin/mocks/AdminServiceServer.go +++ b/flyteidl/clients/go/admin/mocks/AdminServiceServer.go @@ -835,6 +835,47 @@ func (_m *AdminServiceServer) GetNodeExecutionData(_a0 context.Context, _a1 *adm return r0, r1 } +type AdminServiceServer_GetProject struct { + *mock.Call +} + +func (_m AdminServiceServer_GetProject) Return(_a0 *admin.Project, _a1 error) *AdminServiceServer_GetProject { + return &AdminServiceServer_GetProject{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceServer) OnGetProject(_a0 context.Context, _a1 *admin.ProjectGetRequest) *AdminServiceServer_GetProject { + c_call := _m.On("GetProject", _a0, _a1) + return &AdminServiceServer_GetProject{Call: c_call} +} + +func (_m *AdminServiceServer) OnGetProjectMatch(matchers ...interface{}) *AdminServiceServer_GetProject { + c_call := _m.On("GetProject", matchers...) + return &AdminServiceServer_GetProject{Call: c_call} +} + +// GetProject provides a mock function with given fields: _a0, _a1 +func (_m *AdminServiceServer) GetProject(_a0 context.Context, _a1 *admin.ProjectGetRequest) (*admin.Project, error) { + ret := _m.Called(_a0, _a1) + + var r0 *admin.Project + if rf, ok := ret.Get(0).(func(context.Context, *admin.ProjectGetRequest) *admin.Project); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.Project) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.ProjectGetRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceServer_GetProjectAttributes struct { *mock.Call } diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 64a6af5899b..226588a131b 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -2720,6 +2720,37 @@ } }, "/api/v1/projects/{id}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.Project`", + "description": "Fetch a registered project.", + "operationId": "AdminService_GetProject", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProject" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "description": "Indicates a unique project.\n+required", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + }, "put": { "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", "description": "Update a project.", diff --git a/flyteidl/gen/pb-es/flyteidl/admin/project_pb.ts b/flyteidl/gen/pb-es/flyteidl/admin/project_pb.ts index 647a12c84eb..8bd364d5a11 100644 --- a/flyteidl/gen/pb-es/flyteidl/admin/project_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/admin/project_pb.ts @@ -412,3 +412,43 @@ export class ProjectUpdateResponse extends Message { } } +/** + * @generated from message flyteidl.admin.ProjectGetRequest + */ +export class ProjectGetRequest extends Message { + /** + * Indicates a unique project. + * +required + * + * @generated from field: string id = 1; + */ + id = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.admin.ProjectGetRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ProjectGetRequest { + return new ProjectGetRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ProjectGetRequest { + return new ProjectGetRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ProjectGetRequest { + return new ProjectGetRequest().fromJsonString(jsonString, options); + } + + static equals(a: ProjectGetRequest | PlainMessage | undefined, b: ProjectGetRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ProjectGetRequest, a, b); + } +} + diff --git a/flyteidl/gen/pb-es/flyteidl/service/admin_connect.ts b/flyteidl/gen/pb-es/flyteidl/service/admin_connect.ts index 3a174aeffce..22c84826f49 100644 --- a/flyteidl/gen/pb-es/flyteidl/service/admin_connect.ts +++ b/flyteidl/gen/pb-es/flyteidl/service/admin_connect.ts @@ -10,7 +10,7 @@ import { Workflow, WorkflowCreateRequest, WorkflowCreateResponse, WorkflowList } import { ActiveLaunchPlanListRequest, ActiveLaunchPlanRequest, LaunchPlan, LaunchPlanCreateRequest, LaunchPlanCreateResponse, LaunchPlanList, LaunchPlanUpdateRequest, LaunchPlanUpdateResponse } from "../admin/launch_plan_pb.js"; import { Execution, ExecutionCreateRequest, ExecutionCreateResponse, ExecutionList, ExecutionRecoverRequest, ExecutionRelaunchRequest, ExecutionTerminateRequest, ExecutionTerminateResponse, ExecutionUpdateRequest, ExecutionUpdateResponse, WorkflowExecutionGetDataRequest, WorkflowExecutionGetDataResponse, WorkflowExecutionGetMetricsRequest, WorkflowExecutionGetMetricsResponse, WorkflowExecutionGetRequest } from "../admin/execution_pb.js"; import { DynamicNodeWorkflowResponse, GetDynamicNodeWorkflowRequest, NodeExecution, NodeExecutionForTaskListRequest, NodeExecutionGetDataRequest, NodeExecutionGetDataResponse, NodeExecutionGetRequest, NodeExecutionList, NodeExecutionListRequest } from "../admin/node_execution_pb.js"; -import { Project, ProjectListRequest, ProjectRegisterRequest, ProjectRegisterResponse, Projects, ProjectUpdateResponse } from "../admin/project_pb.js"; +import { Project, ProjectGetRequest, ProjectListRequest, ProjectRegisterRequest, ProjectRegisterResponse, Projects, ProjectUpdateResponse } from "../admin/project_pb.js"; import { NodeExecutionEventRequest, NodeExecutionEventResponse, TaskExecutionEventRequest, TaskExecutionEventResponse, WorkflowExecutionEventRequest, WorkflowExecutionEventResponse } from "../admin/event_pb.js"; import { TaskExecution, TaskExecutionGetDataRequest, TaskExecutionGetDataResponse, TaskExecutionGetRequest, TaskExecutionList, TaskExecutionListRequest } from "../admin/task_execution_pb.js"; import { ProjectDomainAttributesDeleteRequest, ProjectDomainAttributesDeleteResponse, ProjectDomainAttributesGetRequest, ProjectDomainAttributesGetResponse, ProjectDomainAttributesUpdateRequest, ProjectDomainAttributesUpdateResponse } from "../admin/project_domain_attributes_pb.js"; @@ -365,6 +365,17 @@ export const AdminService = { O: ProjectUpdateResponse, kind: MethodKind.Unary, }, + /** + * Fetches a :ref:`ref_flyteidl.admin.Project` + * + * @generated from rpc flyteidl.service.AdminService.GetProject + */ + getProject: { + name: "GetProject", + I: ProjectGetRequest, + O: Project, + kind: MethodKind.Unary, + }, /** * Fetches a list of :ref:`ref_flyteidl.admin.Project` * diff --git a/flyteidl/gen/pb-go/flyteidl/admin/project.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/project.pb.go index e8a4a70689c..46b1b866393 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/project.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/project.pb.go @@ -512,6 +512,55 @@ func (*ProjectUpdateResponse) Descriptor() ([]byte, []int) { return file_flyteidl_admin_project_proto_rawDescGZIP(), []int{6} } +type ProjectGetRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Indicates a unique project. + // +required + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *ProjectGetRequest) Reset() { + *x = ProjectGetRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_admin_project_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProjectGetRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectGetRequest) ProtoMessage() {} + +func (x *ProjectGetRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_admin_project_proto_msgTypes[7] + 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 ProjectGetRequest.ProtoReflect.Descriptor instead. +func (*ProjectGetRequest) Descriptor() ([]byte, []int) { + return file_flyteidl_admin_project_proto_rawDescGZIP(), []int{7} +} + +func (x *ProjectGetRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + var File_flyteidl_admin_project_proto protoreflect.FileDescriptor var file_flyteidl_admin_project_proto_rawDesc = []byte{ @@ -566,19 +615,21 @@ var file_flyteidl_admin_project_proto_rawDesc = []byte{ 0x17, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x42, 0xb8, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x0c, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 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, + 0x65, 0x22, 0x23, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x42, 0xb8, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x0c, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 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 ( @@ -594,7 +645,7 @@ func file_flyteidl_admin_project_proto_rawDescGZIP() []byte { } var file_flyteidl_admin_project_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_flyteidl_admin_project_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_flyteidl_admin_project_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_flyteidl_admin_project_proto_goTypes = []interface{}{ (Project_ProjectState)(0), // 0: flyteidl.admin.Project.ProjectState (*Domain)(nil), // 1: flyteidl.admin.Domain @@ -604,21 +655,22 @@ var file_flyteidl_admin_project_proto_goTypes = []interface{}{ (*ProjectRegisterRequest)(nil), // 5: flyteidl.admin.ProjectRegisterRequest (*ProjectRegisterResponse)(nil), // 6: flyteidl.admin.ProjectRegisterResponse (*ProjectUpdateResponse)(nil), // 7: flyteidl.admin.ProjectUpdateResponse - (*Labels)(nil), // 8: flyteidl.admin.Labels - (*Sort)(nil), // 9: flyteidl.admin.Sort + (*ProjectGetRequest)(nil), // 8: flyteidl.admin.ProjectGetRequest + (*Labels)(nil), // 9: flyteidl.admin.Labels + (*Sort)(nil), // 10: flyteidl.admin.Sort } var file_flyteidl_admin_project_proto_depIdxs = []int32{ - 1, // 0: flyteidl.admin.Project.domains:type_name -> flyteidl.admin.Domain - 8, // 1: flyteidl.admin.Project.labels:type_name -> flyteidl.admin.Labels - 0, // 2: flyteidl.admin.Project.state:type_name -> flyteidl.admin.Project.ProjectState - 2, // 3: flyteidl.admin.Projects.projects:type_name -> flyteidl.admin.Project - 9, // 4: flyteidl.admin.ProjectListRequest.sort_by:type_name -> flyteidl.admin.Sort - 2, // 5: flyteidl.admin.ProjectRegisterRequest.project:type_name -> flyteidl.admin.Project - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] 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 + 1, // 0: flyteidl.admin.Project.domains:type_name -> flyteidl.admin.Domain + 9, // 1: flyteidl.admin.Project.labels:type_name -> flyteidl.admin.Labels + 0, // 2: flyteidl.admin.Project.state:type_name -> flyteidl.admin.Project.ProjectState + 2, // 3: flyteidl.admin.Projects.projects:type_name -> flyteidl.admin.Project + 10, // 4: flyteidl.admin.ProjectListRequest.sort_by:type_name -> flyteidl.admin.Sort + 2, // 5: flyteidl.admin.ProjectRegisterRequest.project:type_name -> flyteidl.admin.Project + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] 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_admin_project_proto_init() } @@ -712,6 +764,18 @@ func file_flyteidl_admin_project_proto_init() { return nil } } + file_flyteidl_admin_project_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProjectGetRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -719,7 +783,7 @@ func file_flyteidl_admin_project_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_admin_project_proto_rawDesc, NumEnums: 1, - NumMessages: 7, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, diff --git a/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go b/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go index 4fa8b64e866..c3bb242357a 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/admin.pb.go @@ -65,8 +65,8 @@ var file_flyteidl_service_admin_proto_rawDesc = []byte{ 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x89, - 0x72, 0x0a, 0x0c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x93, + 0x73, 0x0a, 0x0c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc5, 0x02, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, @@ -565,433 +565,442 @@ var file_flyteidl_service_admin_proto_rawDesc = []byte{ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x92, 0x41, 0x13, 0x1a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x1a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, - 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x22, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x37, 0x92, 0x41, 0x1c, - 0x1a, 0x1a, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x65, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x12, 0xdd, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x92, 0x41, 0x41, - 0x1a, 0x3f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, - 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, - 0x6f, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x5f, 0x92, 0x41, 0x3d, 0x1a, 0x3b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, - 0x6f, 0x64, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, - 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x12, 0xc9, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 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, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2a, 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, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3d, - 0x1a, 0x3b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, - 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x70, 0x68, 0x61, 0x73, - 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0xa9, 0x03, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x27, 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, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 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, 0x22, 0xcc, 0x02, 0x92, 0x41, 0x26, 0x1a, - 0x24, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9c, 0x02, 0x12, 0x99, 0x02, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, - 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, - 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x7d, 0x12, 0xd3, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x28, 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, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x87, 0x01, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3d, 0x92, 0x41, 0x1d, 0x1a, 0x1b, 0x46, 0x65, + 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, + 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, + 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x37, 0x92, 0x41, 0x1c, 0x1a, 0x1a, 0x46, 0x65, 0x74, 0x63, + 0x68, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xdd, + 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x92, 0x41, 0x41, 0x1a, 0x3f, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0xc9, + 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3d, 0x1a, 0x3b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x0f, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, + 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, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xef, 0x01, 0x92, - 0x41, 0x38, 0x1a, 0x36, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xad, - 0x01, 0x12, 0xaa, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xe0, - 0x03, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 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, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3d, 0x1a, 0x3b, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, + 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0xa9, 0x03, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 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, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 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, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xec, 0x02, 0x92, 0x41, 0x41, 0x1a, 0x3f, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x6e, - 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa1, 0x02, - 0x12, 0x9e, 0x02, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, + 0x69, 0x6f, 0x6e, 0x22, 0xcc, 0x02, 0x92, 0x41, 0x26, 0x1a, 0x24, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x9c, 0x02, 0x12, 0x99, 0x02, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, + 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, + 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x7d, 0x12, 0xd3, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xef, 0x01, 0x92, 0x41, 0x38, 0x1a, 0x36, 0x46, 0x65, + 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, + 0x6b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xad, 0x01, 0x12, 0xaa, 0x01, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, - 0x7d, 0x12, 0xbf, 0x02, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xe0, 0x03, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2b, 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, + 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 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, 0x47, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x02, 0x92, + 0x41, 0x41, 0x1a, 0x3f, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa1, 0x02, 0x12, 0x9e, 0x02, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, + 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x2e, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, + 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x2e, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x74, + 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x7d, 0x12, 0xbf, 0x02, 0x0a, 0x1d, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xb0, 0x01, 0x92, 0x41, 0x58, 0x1a, 0x56, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x4f, 0x3a, 0x01, 0x2a, 0x1a, 0x4a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, - 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x7d, 0x12, 0x9f, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x12, 0x31, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x99, 0x01, 0x92, 0x41, 0x5a, 0x1a, - 0x58, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x63, 0x6f, - 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, - 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xa9, 0x02, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb0, 0x01, 0x92, 0x41, 0x58, + 0x1a, 0x56, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, + 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x3a, 0x01, + 0x2a, 0x1a, 0x4a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x9f, 0x02, + 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x32, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x99, 0x01, 0x92, 0x41, 0x5a, 0x1a, 0x58, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, + 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, + 0xa9, 0x02, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x12, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9a, 0x01, 0x92, 0x41, 0x58, 0x1a, 0x56, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, - 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x3a, 0x01, 0x2a, 0x2a, 0x34, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x12, 0xff, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, - 0x01, 0x92, 0x41, 0x45, 0x1a, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9a, + 0x01, 0x92, 0x41, 0x58, 0x1a, 0x56, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, - 0x01, 0x2a, 0x1a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x12, 0xe9, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x92, 0x41, 0x47, 0x1a, 0x45, 0x52, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x39, 0x3a, 0x01, 0x2a, 0x2a, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xff, 0x01, 0x0a, 0x17, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x92, 0x41, 0x45, 0x1a, 0x43, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, - 0xf3, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, 0x92, 0x41, - 0x45, 0x1a, 0x43, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x2a, - 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0xce, 0x02, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xce, 0x01, 0x92, 0x41, 0x66, 0x1a, 0x64, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x1a, 0x2f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0xe9, 0x01, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x76, 0x92, 0x41, 0x47, 0x1a, 0x45, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0xf3, 0x01, 0x0a, 0x17, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, 0x92, 0x41, 0x45, 0x1a, 0x43, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x2c, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x3a, 0x01, 0x2a, 0x1a, 0x5a, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, - 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xa3, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, 0x6f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x2a, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, + 0xce, 0x02, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xac, 0x01, - 0x92, 0x41, 0x68, 0x1a, 0x66, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xce, 0x01, 0x92, 0x41, 0x66, 0x1a, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xad, 0x02, 0x0a, - 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, + 0x5f, 0x3a, 0x01, 0x2a, 0x1a, 0x5a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, + 0x12, 0xa3, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x01, 0x92, - 0x41, 0x66, 0x1a, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, - 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x63, 0x6f, 0x6d, - 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, - 0x2a, 0x2a, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xe1, 0x01, 0x0a, - 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0x92, 0x41, 0x3e, 0x1a, 0x3c, - 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, - 0x6f, 0x66, 0x20, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x12, 0x80, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x26, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, - 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, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0xa1, 0x01, 0x92, 0x41, 0x5d, 0x1a, 0x5b, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, - 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x73, 0x68, - 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x7d, 0x12, 0xca, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x64, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 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, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 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, 0x22, 0x74, 0x92, 0x41, 0x20, 0x1a, - 0x1e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x4e, 0x61, 0x6d, 0x65, - 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, + 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xac, 0x01, 0x92, 0x41, 0x68, 0x1a, 0x66, 0x52, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xad, 0x02, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x01, 0x92, 0x41, 0x66, 0x1a, 0x64, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x2a, 0x39, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x12, 0xe1, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x65, 0x92, 0x41, 0x3e, 0x1a, 0x3c, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x80, 0x02, 0x0a, 0x11, 0x4c, + 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x26, 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, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 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, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xa1, 0x01, 0x92, 0x41, 0x5d, 0x1a, + 0x5b, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, + 0x20, 0x6f, 0x66, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20, + 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, + 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xca, 0x01, + 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 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, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 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, 0x22, 0x74, 0x92, 0x41, 0x20, 0x1a, 0x1e, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, + 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, + 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xf3, 0x01, 0x0a, 0x11, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x28, 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, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x92, 0x41, 0x31, 0x1a, 0x2f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x61, + 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, + 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x1a, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x12, 0xf3, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x64, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x28, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 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, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x92, 0x41, - 0x31, 0x1a, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, - 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x1a, 0x49, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, + 0x12, 0xbf, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x92, 0x41, 0x50, 0x1a, 0x4e, 0x52, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x20, 0x28, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0xfe, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x20, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x22, 0xa0, 0x01, 0x92, 0x41, 0x36, 0x1a, 0x34, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, + 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x61, 0x12, 0x5f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xbf, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x92, 0x41, - 0x50, 0x1a, 0x4e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, - 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x20, 0x69, 0x6e, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x46, - 0x6c, 0x79, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xfe, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xa0, 0x01, 0x92, 0x41, 0x36, 0x1a, 0x34, 0x52, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x61, 0x12, 0x5f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, - 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0xdc, 0x02, 0x0a, 0x17, 0x4c, 0x69, - 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xeb, 0x01, 0x92, 0x41, 0x47, - 0x1a, 0x45, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9a, 0x01, 0x5a, 0x47, - 0x12, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x4f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, - 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xff, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x12, 0x32, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 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, 0x1a, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x22, 0x7f, 0x92, 0x41, 0x37, 0x1a, 0x35, - 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, - 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x42, 0xc2, 0x01, 0x0a, 0x14, 0x63, - 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x42, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 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, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x7d, 0x12, 0xdc, 0x02, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x4c, 0x69, 0x73, 0x74, 0x22, 0xeb, 0x01, 0x92, 0x41, 0x47, 0x1a, 0x45, 0x46, 0x65, 0x74, 0x63, + 0x68, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9a, 0x01, 0x5a, 0x47, 0x12, 0x45, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x7d, 0x12, 0x4f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, + 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, + 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, 0x69, 0x64, + 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x12, 0xff, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 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, 0x1a, 0x33, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 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, 0x22, 0x7f, 0x92, 0x41, 0x37, 0x1a, 0x35, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, + 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7b, + 0x69, 0x64, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x2e, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x42, 0xc2, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x0a, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 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 file_flyteidl_service_admin_proto_goTypes = []interface{}{ @@ -1018,76 +1027,77 @@ var file_flyteidl_service_admin_proto_goTypes = []interface{}{ (*admin.NodeExecutionGetDataRequest)(nil), // 20: flyteidl.admin.NodeExecutionGetDataRequest (*admin.ProjectRegisterRequest)(nil), // 21: flyteidl.admin.ProjectRegisterRequest (*admin.Project)(nil), // 22: flyteidl.admin.Project - (*admin.ProjectListRequest)(nil), // 23: flyteidl.admin.ProjectListRequest - (*admin.WorkflowExecutionEventRequest)(nil), // 24: flyteidl.admin.WorkflowExecutionEventRequest - (*admin.NodeExecutionEventRequest)(nil), // 25: flyteidl.admin.NodeExecutionEventRequest - (*admin.TaskExecutionEventRequest)(nil), // 26: flyteidl.admin.TaskExecutionEventRequest - (*admin.TaskExecutionGetRequest)(nil), // 27: flyteidl.admin.TaskExecutionGetRequest - (*admin.TaskExecutionListRequest)(nil), // 28: flyteidl.admin.TaskExecutionListRequest - (*admin.TaskExecutionGetDataRequest)(nil), // 29: flyteidl.admin.TaskExecutionGetDataRequest - (*admin.ProjectDomainAttributesUpdateRequest)(nil), // 30: flyteidl.admin.ProjectDomainAttributesUpdateRequest - (*admin.ProjectDomainAttributesGetRequest)(nil), // 31: flyteidl.admin.ProjectDomainAttributesGetRequest - (*admin.ProjectDomainAttributesDeleteRequest)(nil), // 32: flyteidl.admin.ProjectDomainAttributesDeleteRequest - (*admin.ProjectAttributesUpdateRequest)(nil), // 33: flyteidl.admin.ProjectAttributesUpdateRequest - (*admin.ProjectAttributesGetRequest)(nil), // 34: flyteidl.admin.ProjectAttributesGetRequest - (*admin.ProjectAttributesDeleteRequest)(nil), // 35: flyteidl.admin.ProjectAttributesDeleteRequest - (*admin.WorkflowAttributesUpdateRequest)(nil), // 36: flyteidl.admin.WorkflowAttributesUpdateRequest - (*admin.WorkflowAttributesGetRequest)(nil), // 37: flyteidl.admin.WorkflowAttributesGetRequest - (*admin.WorkflowAttributesDeleteRequest)(nil), // 38: flyteidl.admin.WorkflowAttributesDeleteRequest - (*admin.ListMatchableAttributesRequest)(nil), // 39: flyteidl.admin.ListMatchableAttributesRequest - (*admin.NamedEntityListRequest)(nil), // 40: flyteidl.admin.NamedEntityListRequest - (*admin.NamedEntityGetRequest)(nil), // 41: flyteidl.admin.NamedEntityGetRequest - (*admin.NamedEntityUpdateRequest)(nil), // 42: flyteidl.admin.NamedEntityUpdateRequest - (*admin.GetVersionRequest)(nil), // 43: flyteidl.admin.GetVersionRequest - (*admin.DescriptionEntityListRequest)(nil), // 44: flyteidl.admin.DescriptionEntityListRequest - (*admin.WorkflowExecutionGetMetricsRequest)(nil), // 45: flyteidl.admin.WorkflowExecutionGetMetricsRequest - (*admin.TaskCreateResponse)(nil), // 46: flyteidl.admin.TaskCreateResponse - (*admin.Task)(nil), // 47: flyteidl.admin.Task - (*admin.NamedEntityIdentifierList)(nil), // 48: flyteidl.admin.NamedEntityIdentifierList - (*admin.TaskList)(nil), // 49: flyteidl.admin.TaskList - (*admin.WorkflowCreateResponse)(nil), // 50: flyteidl.admin.WorkflowCreateResponse - (*admin.Workflow)(nil), // 51: flyteidl.admin.Workflow - (*admin.WorkflowList)(nil), // 52: flyteidl.admin.WorkflowList - (*admin.LaunchPlanCreateResponse)(nil), // 53: flyteidl.admin.LaunchPlanCreateResponse - (*admin.LaunchPlan)(nil), // 54: flyteidl.admin.LaunchPlan - (*admin.LaunchPlanList)(nil), // 55: flyteidl.admin.LaunchPlanList - (*admin.LaunchPlanUpdateResponse)(nil), // 56: flyteidl.admin.LaunchPlanUpdateResponse - (*admin.ExecutionCreateResponse)(nil), // 57: flyteidl.admin.ExecutionCreateResponse - (*admin.Execution)(nil), // 58: flyteidl.admin.Execution - (*admin.ExecutionUpdateResponse)(nil), // 59: flyteidl.admin.ExecutionUpdateResponse - (*admin.WorkflowExecutionGetDataResponse)(nil), // 60: flyteidl.admin.WorkflowExecutionGetDataResponse - (*admin.ExecutionList)(nil), // 61: flyteidl.admin.ExecutionList - (*admin.ExecutionTerminateResponse)(nil), // 62: flyteidl.admin.ExecutionTerminateResponse - (*admin.NodeExecution)(nil), // 63: flyteidl.admin.NodeExecution - (*admin.DynamicNodeWorkflowResponse)(nil), // 64: flyteidl.admin.DynamicNodeWorkflowResponse - (*admin.NodeExecutionList)(nil), // 65: flyteidl.admin.NodeExecutionList - (*admin.NodeExecutionGetDataResponse)(nil), // 66: flyteidl.admin.NodeExecutionGetDataResponse - (*admin.ProjectRegisterResponse)(nil), // 67: flyteidl.admin.ProjectRegisterResponse - (*admin.ProjectUpdateResponse)(nil), // 68: flyteidl.admin.ProjectUpdateResponse - (*admin.Projects)(nil), // 69: flyteidl.admin.Projects - (*admin.WorkflowExecutionEventResponse)(nil), // 70: flyteidl.admin.WorkflowExecutionEventResponse - (*admin.NodeExecutionEventResponse)(nil), // 71: flyteidl.admin.NodeExecutionEventResponse - (*admin.TaskExecutionEventResponse)(nil), // 72: flyteidl.admin.TaskExecutionEventResponse - (*admin.TaskExecution)(nil), // 73: flyteidl.admin.TaskExecution - (*admin.TaskExecutionList)(nil), // 74: flyteidl.admin.TaskExecutionList - (*admin.TaskExecutionGetDataResponse)(nil), // 75: flyteidl.admin.TaskExecutionGetDataResponse - (*admin.ProjectDomainAttributesUpdateResponse)(nil), // 76: flyteidl.admin.ProjectDomainAttributesUpdateResponse - (*admin.ProjectDomainAttributesGetResponse)(nil), // 77: flyteidl.admin.ProjectDomainAttributesGetResponse - (*admin.ProjectDomainAttributesDeleteResponse)(nil), // 78: flyteidl.admin.ProjectDomainAttributesDeleteResponse - (*admin.ProjectAttributesUpdateResponse)(nil), // 79: flyteidl.admin.ProjectAttributesUpdateResponse - (*admin.ProjectAttributesGetResponse)(nil), // 80: flyteidl.admin.ProjectAttributesGetResponse - (*admin.ProjectAttributesDeleteResponse)(nil), // 81: flyteidl.admin.ProjectAttributesDeleteResponse - (*admin.WorkflowAttributesUpdateResponse)(nil), // 82: flyteidl.admin.WorkflowAttributesUpdateResponse - (*admin.WorkflowAttributesGetResponse)(nil), // 83: flyteidl.admin.WorkflowAttributesGetResponse - (*admin.WorkflowAttributesDeleteResponse)(nil), // 84: flyteidl.admin.WorkflowAttributesDeleteResponse - (*admin.ListMatchableAttributesResponse)(nil), // 85: flyteidl.admin.ListMatchableAttributesResponse - (*admin.NamedEntityList)(nil), // 86: flyteidl.admin.NamedEntityList - (*admin.NamedEntity)(nil), // 87: flyteidl.admin.NamedEntity - (*admin.NamedEntityUpdateResponse)(nil), // 88: flyteidl.admin.NamedEntityUpdateResponse - (*admin.GetVersionResponse)(nil), // 89: flyteidl.admin.GetVersionResponse - (*admin.DescriptionEntity)(nil), // 90: flyteidl.admin.DescriptionEntity - (*admin.DescriptionEntityList)(nil), // 91: flyteidl.admin.DescriptionEntityList - (*admin.WorkflowExecutionGetMetricsResponse)(nil), // 92: flyteidl.admin.WorkflowExecutionGetMetricsResponse + (*admin.ProjectGetRequest)(nil), // 23: flyteidl.admin.ProjectGetRequest + (*admin.ProjectListRequest)(nil), // 24: flyteidl.admin.ProjectListRequest + (*admin.WorkflowExecutionEventRequest)(nil), // 25: flyteidl.admin.WorkflowExecutionEventRequest + (*admin.NodeExecutionEventRequest)(nil), // 26: flyteidl.admin.NodeExecutionEventRequest + (*admin.TaskExecutionEventRequest)(nil), // 27: flyteidl.admin.TaskExecutionEventRequest + (*admin.TaskExecutionGetRequest)(nil), // 28: flyteidl.admin.TaskExecutionGetRequest + (*admin.TaskExecutionListRequest)(nil), // 29: flyteidl.admin.TaskExecutionListRequest + (*admin.TaskExecutionGetDataRequest)(nil), // 30: flyteidl.admin.TaskExecutionGetDataRequest + (*admin.ProjectDomainAttributesUpdateRequest)(nil), // 31: flyteidl.admin.ProjectDomainAttributesUpdateRequest + (*admin.ProjectDomainAttributesGetRequest)(nil), // 32: flyteidl.admin.ProjectDomainAttributesGetRequest + (*admin.ProjectDomainAttributesDeleteRequest)(nil), // 33: flyteidl.admin.ProjectDomainAttributesDeleteRequest + (*admin.ProjectAttributesUpdateRequest)(nil), // 34: flyteidl.admin.ProjectAttributesUpdateRequest + (*admin.ProjectAttributesGetRequest)(nil), // 35: flyteidl.admin.ProjectAttributesGetRequest + (*admin.ProjectAttributesDeleteRequest)(nil), // 36: flyteidl.admin.ProjectAttributesDeleteRequest + (*admin.WorkflowAttributesUpdateRequest)(nil), // 37: flyteidl.admin.WorkflowAttributesUpdateRequest + (*admin.WorkflowAttributesGetRequest)(nil), // 38: flyteidl.admin.WorkflowAttributesGetRequest + (*admin.WorkflowAttributesDeleteRequest)(nil), // 39: flyteidl.admin.WorkflowAttributesDeleteRequest + (*admin.ListMatchableAttributesRequest)(nil), // 40: flyteidl.admin.ListMatchableAttributesRequest + (*admin.NamedEntityListRequest)(nil), // 41: flyteidl.admin.NamedEntityListRequest + (*admin.NamedEntityGetRequest)(nil), // 42: flyteidl.admin.NamedEntityGetRequest + (*admin.NamedEntityUpdateRequest)(nil), // 43: flyteidl.admin.NamedEntityUpdateRequest + (*admin.GetVersionRequest)(nil), // 44: flyteidl.admin.GetVersionRequest + (*admin.DescriptionEntityListRequest)(nil), // 45: flyteidl.admin.DescriptionEntityListRequest + (*admin.WorkflowExecutionGetMetricsRequest)(nil), // 46: flyteidl.admin.WorkflowExecutionGetMetricsRequest + (*admin.TaskCreateResponse)(nil), // 47: flyteidl.admin.TaskCreateResponse + (*admin.Task)(nil), // 48: flyteidl.admin.Task + (*admin.NamedEntityIdentifierList)(nil), // 49: flyteidl.admin.NamedEntityIdentifierList + (*admin.TaskList)(nil), // 50: flyteidl.admin.TaskList + (*admin.WorkflowCreateResponse)(nil), // 51: flyteidl.admin.WorkflowCreateResponse + (*admin.Workflow)(nil), // 52: flyteidl.admin.Workflow + (*admin.WorkflowList)(nil), // 53: flyteidl.admin.WorkflowList + (*admin.LaunchPlanCreateResponse)(nil), // 54: flyteidl.admin.LaunchPlanCreateResponse + (*admin.LaunchPlan)(nil), // 55: flyteidl.admin.LaunchPlan + (*admin.LaunchPlanList)(nil), // 56: flyteidl.admin.LaunchPlanList + (*admin.LaunchPlanUpdateResponse)(nil), // 57: flyteidl.admin.LaunchPlanUpdateResponse + (*admin.ExecutionCreateResponse)(nil), // 58: flyteidl.admin.ExecutionCreateResponse + (*admin.Execution)(nil), // 59: flyteidl.admin.Execution + (*admin.ExecutionUpdateResponse)(nil), // 60: flyteidl.admin.ExecutionUpdateResponse + (*admin.WorkflowExecutionGetDataResponse)(nil), // 61: flyteidl.admin.WorkflowExecutionGetDataResponse + (*admin.ExecutionList)(nil), // 62: flyteidl.admin.ExecutionList + (*admin.ExecutionTerminateResponse)(nil), // 63: flyteidl.admin.ExecutionTerminateResponse + (*admin.NodeExecution)(nil), // 64: flyteidl.admin.NodeExecution + (*admin.DynamicNodeWorkflowResponse)(nil), // 65: flyteidl.admin.DynamicNodeWorkflowResponse + (*admin.NodeExecutionList)(nil), // 66: flyteidl.admin.NodeExecutionList + (*admin.NodeExecutionGetDataResponse)(nil), // 67: flyteidl.admin.NodeExecutionGetDataResponse + (*admin.ProjectRegisterResponse)(nil), // 68: flyteidl.admin.ProjectRegisterResponse + (*admin.ProjectUpdateResponse)(nil), // 69: flyteidl.admin.ProjectUpdateResponse + (*admin.Projects)(nil), // 70: flyteidl.admin.Projects + (*admin.WorkflowExecutionEventResponse)(nil), // 71: flyteidl.admin.WorkflowExecutionEventResponse + (*admin.NodeExecutionEventResponse)(nil), // 72: flyteidl.admin.NodeExecutionEventResponse + (*admin.TaskExecutionEventResponse)(nil), // 73: flyteidl.admin.TaskExecutionEventResponse + (*admin.TaskExecution)(nil), // 74: flyteidl.admin.TaskExecution + (*admin.TaskExecutionList)(nil), // 75: flyteidl.admin.TaskExecutionList + (*admin.TaskExecutionGetDataResponse)(nil), // 76: flyteidl.admin.TaskExecutionGetDataResponse + (*admin.ProjectDomainAttributesUpdateResponse)(nil), // 77: flyteidl.admin.ProjectDomainAttributesUpdateResponse + (*admin.ProjectDomainAttributesGetResponse)(nil), // 78: flyteidl.admin.ProjectDomainAttributesGetResponse + (*admin.ProjectDomainAttributesDeleteResponse)(nil), // 79: flyteidl.admin.ProjectDomainAttributesDeleteResponse + (*admin.ProjectAttributesUpdateResponse)(nil), // 80: flyteidl.admin.ProjectAttributesUpdateResponse + (*admin.ProjectAttributesGetResponse)(nil), // 81: flyteidl.admin.ProjectAttributesGetResponse + (*admin.ProjectAttributesDeleteResponse)(nil), // 82: flyteidl.admin.ProjectAttributesDeleteResponse + (*admin.WorkflowAttributesUpdateResponse)(nil), // 83: flyteidl.admin.WorkflowAttributesUpdateResponse + (*admin.WorkflowAttributesGetResponse)(nil), // 84: flyteidl.admin.WorkflowAttributesGetResponse + (*admin.WorkflowAttributesDeleteResponse)(nil), // 85: flyteidl.admin.WorkflowAttributesDeleteResponse + (*admin.ListMatchableAttributesResponse)(nil), // 86: flyteidl.admin.ListMatchableAttributesResponse + (*admin.NamedEntityList)(nil), // 87: flyteidl.admin.NamedEntityList + (*admin.NamedEntity)(nil), // 88: flyteidl.admin.NamedEntity + (*admin.NamedEntityUpdateResponse)(nil), // 89: flyteidl.admin.NamedEntityUpdateResponse + (*admin.GetVersionResponse)(nil), // 90: flyteidl.admin.GetVersionResponse + (*admin.DescriptionEntity)(nil), // 91: flyteidl.admin.DescriptionEntity + (*admin.DescriptionEntityList)(nil), // 92: flyteidl.admin.DescriptionEntityList + (*admin.WorkflowExecutionGetMetricsResponse)(nil), // 93: flyteidl.admin.WorkflowExecutionGetMetricsResponse } var file_flyteidl_service_admin_proto_depIdxs = []int32{ 0, // 0: flyteidl.service.AdminService.CreateTask:input_type -> flyteidl.admin.TaskCreateRequest @@ -1120,86 +1130,88 @@ var file_flyteidl_service_admin_proto_depIdxs = []int32{ 20, // 27: flyteidl.service.AdminService.GetNodeExecutionData:input_type -> flyteidl.admin.NodeExecutionGetDataRequest 21, // 28: flyteidl.service.AdminService.RegisterProject:input_type -> flyteidl.admin.ProjectRegisterRequest 22, // 29: flyteidl.service.AdminService.UpdateProject:input_type -> flyteidl.admin.Project - 23, // 30: flyteidl.service.AdminService.ListProjects:input_type -> flyteidl.admin.ProjectListRequest - 24, // 31: flyteidl.service.AdminService.CreateWorkflowEvent:input_type -> flyteidl.admin.WorkflowExecutionEventRequest - 25, // 32: flyteidl.service.AdminService.CreateNodeEvent:input_type -> flyteidl.admin.NodeExecutionEventRequest - 26, // 33: flyteidl.service.AdminService.CreateTaskEvent:input_type -> flyteidl.admin.TaskExecutionEventRequest - 27, // 34: flyteidl.service.AdminService.GetTaskExecution:input_type -> flyteidl.admin.TaskExecutionGetRequest - 28, // 35: flyteidl.service.AdminService.ListTaskExecutions:input_type -> flyteidl.admin.TaskExecutionListRequest - 29, // 36: flyteidl.service.AdminService.GetTaskExecutionData:input_type -> flyteidl.admin.TaskExecutionGetDataRequest - 30, // 37: flyteidl.service.AdminService.UpdateProjectDomainAttributes:input_type -> flyteidl.admin.ProjectDomainAttributesUpdateRequest - 31, // 38: flyteidl.service.AdminService.GetProjectDomainAttributes:input_type -> flyteidl.admin.ProjectDomainAttributesGetRequest - 32, // 39: flyteidl.service.AdminService.DeleteProjectDomainAttributes:input_type -> flyteidl.admin.ProjectDomainAttributesDeleteRequest - 33, // 40: flyteidl.service.AdminService.UpdateProjectAttributes:input_type -> flyteidl.admin.ProjectAttributesUpdateRequest - 34, // 41: flyteidl.service.AdminService.GetProjectAttributes:input_type -> flyteidl.admin.ProjectAttributesGetRequest - 35, // 42: flyteidl.service.AdminService.DeleteProjectAttributes:input_type -> flyteidl.admin.ProjectAttributesDeleteRequest - 36, // 43: flyteidl.service.AdminService.UpdateWorkflowAttributes:input_type -> flyteidl.admin.WorkflowAttributesUpdateRequest - 37, // 44: flyteidl.service.AdminService.GetWorkflowAttributes:input_type -> flyteidl.admin.WorkflowAttributesGetRequest - 38, // 45: flyteidl.service.AdminService.DeleteWorkflowAttributes:input_type -> flyteidl.admin.WorkflowAttributesDeleteRequest - 39, // 46: flyteidl.service.AdminService.ListMatchableAttributes:input_type -> flyteidl.admin.ListMatchableAttributesRequest - 40, // 47: flyteidl.service.AdminService.ListNamedEntities:input_type -> flyteidl.admin.NamedEntityListRequest - 41, // 48: flyteidl.service.AdminService.GetNamedEntity:input_type -> flyteidl.admin.NamedEntityGetRequest - 42, // 49: flyteidl.service.AdminService.UpdateNamedEntity:input_type -> flyteidl.admin.NamedEntityUpdateRequest - 43, // 50: flyteidl.service.AdminService.GetVersion:input_type -> flyteidl.admin.GetVersionRequest - 1, // 51: flyteidl.service.AdminService.GetDescriptionEntity:input_type -> flyteidl.admin.ObjectGetRequest - 44, // 52: flyteidl.service.AdminService.ListDescriptionEntities:input_type -> flyteidl.admin.DescriptionEntityListRequest - 45, // 53: flyteidl.service.AdminService.GetExecutionMetrics:input_type -> flyteidl.admin.WorkflowExecutionGetMetricsRequest - 46, // 54: flyteidl.service.AdminService.CreateTask:output_type -> flyteidl.admin.TaskCreateResponse - 47, // 55: flyteidl.service.AdminService.GetTask:output_type -> flyteidl.admin.Task - 48, // 56: flyteidl.service.AdminService.ListTaskIds:output_type -> flyteidl.admin.NamedEntityIdentifierList - 49, // 57: flyteidl.service.AdminService.ListTasks:output_type -> flyteidl.admin.TaskList - 50, // 58: flyteidl.service.AdminService.CreateWorkflow:output_type -> flyteidl.admin.WorkflowCreateResponse - 51, // 59: flyteidl.service.AdminService.GetWorkflow:output_type -> flyteidl.admin.Workflow - 48, // 60: flyteidl.service.AdminService.ListWorkflowIds:output_type -> flyteidl.admin.NamedEntityIdentifierList - 52, // 61: flyteidl.service.AdminService.ListWorkflows:output_type -> flyteidl.admin.WorkflowList - 53, // 62: flyteidl.service.AdminService.CreateLaunchPlan:output_type -> flyteidl.admin.LaunchPlanCreateResponse - 54, // 63: flyteidl.service.AdminService.GetLaunchPlan:output_type -> flyteidl.admin.LaunchPlan - 54, // 64: flyteidl.service.AdminService.GetActiveLaunchPlan:output_type -> flyteidl.admin.LaunchPlan - 55, // 65: flyteidl.service.AdminService.ListActiveLaunchPlans:output_type -> flyteidl.admin.LaunchPlanList - 48, // 66: flyteidl.service.AdminService.ListLaunchPlanIds:output_type -> flyteidl.admin.NamedEntityIdentifierList - 55, // 67: flyteidl.service.AdminService.ListLaunchPlans:output_type -> flyteidl.admin.LaunchPlanList - 56, // 68: flyteidl.service.AdminService.UpdateLaunchPlan:output_type -> flyteidl.admin.LaunchPlanUpdateResponse - 57, // 69: flyteidl.service.AdminService.CreateExecution:output_type -> flyteidl.admin.ExecutionCreateResponse - 57, // 70: flyteidl.service.AdminService.RelaunchExecution:output_type -> flyteidl.admin.ExecutionCreateResponse - 57, // 71: flyteidl.service.AdminService.RecoverExecution:output_type -> flyteidl.admin.ExecutionCreateResponse - 58, // 72: flyteidl.service.AdminService.GetExecution:output_type -> flyteidl.admin.Execution - 59, // 73: flyteidl.service.AdminService.UpdateExecution:output_type -> flyteidl.admin.ExecutionUpdateResponse - 60, // 74: flyteidl.service.AdminService.GetExecutionData:output_type -> flyteidl.admin.WorkflowExecutionGetDataResponse - 61, // 75: flyteidl.service.AdminService.ListExecutions:output_type -> flyteidl.admin.ExecutionList - 62, // 76: flyteidl.service.AdminService.TerminateExecution:output_type -> flyteidl.admin.ExecutionTerminateResponse - 63, // 77: flyteidl.service.AdminService.GetNodeExecution:output_type -> flyteidl.admin.NodeExecution - 64, // 78: flyteidl.service.AdminService.GetDynamicNodeWorkflow:output_type -> flyteidl.admin.DynamicNodeWorkflowResponse - 65, // 79: flyteidl.service.AdminService.ListNodeExecutions:output_type -> flyteidl.admin.NodeExecutionList - 65, // 80: flyteidl.service.AdminService.ListNodeExecutionsForTask:output_type -> flyteidl.admin.NodeExecutionList - 66, // 81: flyteidl.service.AdminService.GetNodeExecutionData:output_type -> flyteidl.admin.NodeExecutionGetDataResponse - 67, // 82: flyteidl.service.AdminService.RegisterProject:output_type -> flyteidl.admin.ProjectRegisterResponse - 68, // 83: flyteidl.service.AdminService.UpdateProject:output_type -> flyteidl.admin.ProjectUpdateResponse - 69, // 84: flyteidl.service.AdminService.ListProjects:output_type -> flyteidl.admin.Projects - 70, // 85: flyteidl.service.AdminService.CreateWorkflowEvent:output_type -> flyteidl.admin.WorkflowExecutionEventResponse - 71, // 86: flyteidl.service.AdminService.CreateNodeEvent:output_type -> flyteidl.admin.NodeExecutionEventResponse - 72, // 87: flyteidl.service.AdminService.CreateTaskEvent:output_type -> flyteidl.admin.TaskExecutionEventResponse - 73, // 88: flyteidl.service.AdminService.GetTaskExecution:output_type -> flyteidl.admin.TaskExecution - 74, // 89: flyteidl.service.AdminService.ListTaskExecutions:output_type -> flyteidl.admin.TaskExecutionList - 75, // 90: flyteidl.service.AdminService.GetTaskExecutionData:output_type -> flyteidl.admin.TaskExecutionGetDataResponse - 76, // 91: flyteidl.service.AdminService.UpdateProjectDomainAttributes:output_type -> flyteidl.admin.ProjectDomainAttributesUpdateResponse - 77, // 92: flyteidl.service.AdminService.GetProjectDomainAttributes:output_type -> flyteidl.admin.ProjectDomainAttributesGetResponse - 78, // 93: flyteidl.service.AdminService.DeleteProjectDomainAttributes:output_type -> flyteidl.admin.ProjectDomainAttributesDeleteResponse - 79, // 94: flyteidl.service.AdminService.UpdateProjectAttributes:output_type -> flyteidl.admin.ProjectAttributesUpdateResponse - 80, // 95: flyteidl.service.AdminService.GetProjectAttributes:output_type -> flyteidl.admin.ProjectAttributesGetResponse - 81, // 96: flyteidl.service.AdminService.DeleteProjectAttributes:output_type -> flyteidl.admin.ProjectAttributesDeleteResponse - 82, // 97: flyteidl.service.AdminService.UpdateWorkflowAttributes:output_type -> flyteidl.admin.WorkflowAttributesUpdateResponse - 83, // 98: flyteidl.service.AdminService.GetWorkflowAttributes:output_type -> flyteidl.admin.WorkflowAttributesGetResponse - 84, // 99: flyteidl.service.AdminService.DeleteWorkflowAttributes:output_type -> flyteidl.admin.WorkflowAttributesDeleteResponse - 85, // 100: flyteidl.service.AdminService.ListMatchableAttributes:output_type -> flyteidl.admin.ListMatchableAttributesResponse - 86, // 101: flyteidl.service.AdminService.ListNamedEntities:output_type -> flyteidl.admin.NamedEntityList - 87, // 102: flyteidl.service.AdminService.GetNamedEntity:output_type -> flyteidl.admin.NamedEntity - 88, // 103: flyteidl.service.AdminService.UpdateNamedEntity:output_type -> flyteidl.admin.NamedEntityUpdateResponse - 89, // 104: flyteidl.service.AdminService.GetVersion:output_type -> flyteidl.admin.GetVersionResponse - 90, // 105: flyteidl.service.AdminService.GetDescriptionEntity:output_type -> flyteidl.admin.DescriptionEntity - 91, // 106: flyteidl.service.AdminService.ListDescriptionEntities:output_type -> flyteidl.admin.DescriptionEntityList - 92, // 107: flyteidl.service.AdminService.GetExecutionMetrics:output_type -> flyteidl.admin.WorkflowExecutionGetMetricsResponse - 54, // [54:108] is the sub-list for method output_type - 0, // [0:54] is the sub-list for method input_type + 23, // 30: flyteidl.service.AdminService.GetProject:input_type -> flyteidl.admin.ProjectGetRequest + 24, // 31: flyteidl.service.AdminService.ListProjects:input_type -> flyteidl.admin.ProjectListRequest + 25, // 32: flyteidl.service.AdminService.CreateWorkflowEvent:input_type -> flyteidl.admin.WorkflowExecutionEventRequest + 26, // 33: flyteidl.service.AdminService.CreateNodeEvent:input_type -> flyteidl.admin.NodeExecutionEventRequest + 27, // 34: flyteidl.service.AdminService.CreateTaskEvent:input_type -> flyteidl.admin.TaskExecutionEventRequest + 28, // 35: flyteidl.service.AdminService.GetTaskExecution:input_type -> flyteidl.admin.TaskExecutionGetRequest + 29, // 36: flyteidl.service.AdminService.ListTaskExecutions:input_type -> flyteidl.admin.TaskExecutionListRequest + 30, // 37: flyteidl.service.AdminService.GetTaskExecutionData:input_type -> flyteidl.admin.TaskExecutionGetDataRequest + 31, // 38: flyteidl.service.AdminService.UpdateProjectDomainAttributes:input_type -> flyteidl.admin.ProjectDomainAttributesUpdateRequest + 32, // 39: flyteidl.service.AdminService.GetProjectDomainAttributes:input_type -> flyteidl.admin.ProjectDomainAttributesGetRequest + 33, // 40: flyteidl.service.AdminService.DeleteProjectDomainAttributes:input_type -> flyteidl.admin.ProjectDomainAttributesDeleteRequest + 34, // 41: flyteidl.service.AdminService.UpdateProjectAttributes:input_type -> flyteidl.admin.ProjectAttributesUpdateRequest + 35, // 42: flyteidl.service.AdminService.GetProjectAttributes:input_type -> flyteidl.admin.ProjectAttributesGetRequest + 36, // 43: flyteidl.service.AdminService.DeleteProjectAttributes:input_type -> flyteidl.admin.ProjectAttributesDeleteRequest + 37, // 44: flyteidl.service.AdminService.UpdateWorkflowAttributes:input_type -> flyteidl.admin.WorkflowAttributesUpdateRequest + 38, // 45: flyteidl.service.AdminService.GetWorkflowAttributes:input_type -> flyteidl.admin.WorkflowAttributesGetRequest + 39, // 46: flyteidl.service.AdminService.DeleteWorkflowAttributes:input_type -> flyteidl.admin.WorkflowAttributesDeleteRequest + 40, // 47: flyteidl.service.AdminService.ListMatchableAttributes:input_type -> flyteidl.admin.ListMatchableAttributesRequest + 41, // 48: flyteidl.service.AdminService.ListNamedEntities:input_type -> flyteidl.admin.NamedEntityListRequest + 42, // 49: flyteidl.service.AdminService.GetNamedEntity:input_type -> flyteidl.admin.NamedEntityGetRequest + 43, // 50: flyteidl.service.AdminService.UpdateNamedEntity:input_type -> flyteidl.admin.NamedEntityUpdateRequest + 44, // 51: flyteidl.service.AdminService.GetVersion:input_type -> flyteidl.admin.GetVersionRequest + 1, // 52: flyteidl.service.AdminService.GetDescriptionEntity:input_type -> flyteidl.admin.ObjectGetRequest + 45, // 53: flyteidl.service.AdminService.ListDescriptionEntities:input_type -> flyteidl.admin.DescriptionEntityListRequest + 46, // 54: flyteidl.service.AdminService.GetExecutionMetrics:input_type -> flyteidl.admin.WorkflowExecutionGetMetricsRequest + 47, // 55: flyteidl.service.AdminService.CreateTask:output_type -> flyteidl.admin.TaskCreateResponse + 48, // 56: flyteidl.service.AdminService.GetTask:output_type -> flyteidl.admin.Task + 49, // 57: flyteidl.service.AdminService.ListTaskIds:output_type -> flyteidl.admin.NamedEntityIdentifierList + 50, // 58: flyteidl.service.AdminService.ListTasks:output_type -> flyteidl.admin.TaskList + 51, // 59: flyteidl.service.AdminService.CreateWorkflow:output_type -> flyteidl.admin.WorkflowCreateResponse + 52, // 60: flyteidl.service.AdminService.GetWorkflow:output_type -> flyteidl.admin.Workflow + 49, // 61: flyteidl.service.AdminService.ListWorkflowIds:output_type -> flyteidl.admin.NamedEntityIdentifierList + 53, // 62: flyteidl.service.AdminService.ListWorkflows:output_type -> flyteidl.admin.WorkflowList + 54, // 63: flyteidl.service.AdminService.CreateLaunchPlan:output_type -> flyteidl.admin.LaunchPlanCreateResponse + 55, // 64: flyteidl.service.AdminService.GetLaunchPlan:output_type -> flyteidl.admin.LaunchPlan + 55, // 65: flyteidl.service.AdminService.GetActiveLaunchPlan:output_type -> flyteidl.admin.LaunchPlan + 56, // 66: flyteidl.service.AdminService.ListActiveLaunchPlans:output_type -> flyteidl.admin.LaunchPlanList + 49, // 67: flyteidl.service.AdminService.ListLaunchPlanIds:output_type -> flyteidl.admin.NamedEntityIdentifierList + 56, // 68: flyteidl.service.AdminService.ListLaunchPlans:output_type -> flyteidl.admin.LaunchPlanList + 57, // 69: flyteidl.service.AdminService.UpdateLaunchPlan:output_type -> flyteidl.admin.LaunchPlanUpdateResponse + 58, // 70: flyteidl.service.AdminService.CreateExecution:output_type -> flyteidl.admin.ExecutionCreateResponse + 58, // 71: flyteidl.service.AdminService.RelaunchExecution:output_type -> flyteidl.admin.ExecutionCreateResponse + 58, // 72: flyteidl.service.AdminService.RecoverExecution:output_type -> flyteidl.admin.ExecutionCreateResponse + 59, // 73: flyteidl.service.AdminService.GetExecution:output_type -> flyteidl.admin.Execution + 60, // 74: flyteidl.service.AdminService.UpdateExecution:output_type -> flyteidl.admin.ExecutionUpdateResponse + 61, // 75: flyteidl.service.AdminService.GetExecutionData:output_type -> flyteidl.admin.WorkflowExecutionGetDataResponse + 62, // 76: flyteidl.service.AdminService.ListExecutions:output_type -> flyteidl.admin.ExecutionList + 63, // 77: flyteidl.service.AdminService.TerminateExecution:output_type -> flyteidl.admin.ExecutionTerminateResponse + 64, // 78: flyteidl.service.AdminService.GetNodeExecution:output_type -> flyteidl.admin.NodeExecution + 65, // 79: flyteidl.service.AdminService.GetDynamicNodeWorkflow:output_type -> flyteidl.admin.DynamicNodeWorkflowResponse + 66, // 80: flyteidl.service.AdminService.ListNodeExecutions:output_type -> flyteidl.admin.NodeExecutionList + 66, // 81: flyteidl.service.AdminService.ListNodeExecutionsForTask:output_type -> flyteidl.admin.NodeExecutionList + 67, // 82: flyteidl.service.AdminService.GetNodeExecutionData:output_type -> flyteidl.admin.NodeExecutionGetDataResponse + 68, // 83: flyteidl.service.AdminService.RegisterProject:output_type -> flyteidl.admin.ProjectRegisterResponse + 69, // 84: flyteidl.service.AdminService.UpdateProject:output_type -> flyteidl.admin.ProjectUpdateResponse + 22, // 85: flyteidl.service.AdminService.GetProject:output_type -> flyteidl.admin.Project + 70, // 86: flyteidl.service.AdminService.ListProjects:output_type -> flyteidl.admin.Projects + 71, // 87: flyteidl.service.AdminService.CreateWorkflowEvent:output_type -> flyteidl.admin.WorkflowExecutionEventResponse + 72, // 88: flyteidl.service.AdminService.CreateNodeEvent:output_type -> flyteidl.admin.NodeExecutionEventResponse + 73, // 89: flyteidl.service.AdminService.CreateTaskEvent:output_type -> flyteidl.admin.TaskExecutionEventResponse + 74, // 90: flyteidl.service.AdminService.GetTaskExecution:output_type -> flyteidl.admin.TaskExecution + 75, // 91: flyteidl.service.AdminService.ListTaskExecutions:output_type -> flyteidl.admin.TaskExecutionList + 76, // 92: flyteidl.service.AdminService.GetTaskExecutionData:output_type -> flyteidl.admin.TaskExecutionGetDataResponse + 77, // 93: flyteidl.service.AdminService.UpdateProjectDomainAttributes:output_type -> flyteidl.admin.ProjectDomainAttributesUpdateResponse + 78, // 94: flyteidl.service.AdminService.GetProjectDomainAttributes:output_type -> flyteidl.admin.ProjectDomainAttributesGetResponse + 79, // 95: flyteidl.service.AdminService.DeleteProjectDomainAttributes:output_type -> flyteidl.admin.ProjectDomainAttributesDeleteResponse + 80, // 96: flyteidl.service.AdminService.UpdateProjectAttributes:output_type -> flyteidl.admin.ProjectAttributesUpdateResponse + 81, // 97: flyteidl.service.AdminService.GetProjectAttributes:output_type -> flyteidl.admin.ProjectAttributesGetResponse + 82, // 98: flyteidl.service.AdminService.DeleteProjectAttributes:output_type -> flyteidl.admin.ProjectAttributesDeleteResponse + 83, // 99: flyteidl.service.AdminService.UpdateWorkflowAttributes:output_type -> flyteidl.admin.WorkflowAttributesUpdateResponse + 84, // 100: flyteidl.service.AdminService.GetWorkflowAttributes:output_type -> flyteidl.admin.WorkflowAttributesGetResponse + 85, // 101: flyteidl.service.AdminService.DeleteWorkflowAttributes:output_type -> flyteidl.admin.WorkflowAttributesDeleteResponse + 86, // 102: flyteidl.service.AdminService.ListMatchableAttributes:output_type -> flyteidl.admin.ListMatchableAttributesResponse + 87, // 103: flyteidl.service.AdminService.ListNamedEntities:output_type -> flyteidl.admin.NamedEntityList + 88, // 104: flyteidl.service.AdminService.GetNamedEntity:output_type -> flyteidl.admin.NamedEntity + 89, // 105: flyteidl.service.AdminService.UpdateNamedEntity:output_type -> flyteidl.admin.NamedEntityUpdateResponse + 90, // 106: flyteidl.service.AdminService.GetVersion:output_type -> flyteidl.admin.GetVersionResponse + 91, // 107: flyteidl.service.AdminService.GetDescriptionEntity:output_type -> flyteidl.admin.DescriptionEntity + 92, // 108: flyteidl.service.AdminService.ListDescriptionEntities:output_type -> flyteidl.admin.DescriptionEntityList + 93, // 109: flyteidl.service.AdminService.GetExecutionMetrics:output_type -> flyteidl.admin.WorkflowExecutionGetMetricsResponse + 55, // [55:110] is the sub-list for method output_type + 0, // [0:55] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/flyteidl/gen/pb-go/flyteidl/service/admin_grpc.pb.go b/flyteidl/gen/pb-go/flyteidl/service/admin_grpc.pb.go index 2f96e962f90..9ca6ebd75c4 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/admin_grpc.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/admin_grpc.pb.go @@ -50,6 +50,7 @@ const ( AdminService_GetNodeExecutionData_FullMethodName = "/flyteidl.service.AdminService/GetNodeExecutionData" AdminService_RegisterProject_FullMethodName = "/flyteidl.service.AdminService/RegisterProject" AdminService_UpdateProject_FullMethodName = "/flyteidl.service.AdminService/UpdateProject" + AdminService_GetProject_FullMethodName = "/flyteidl.service.AdminService/GetProject" AdminService_ListProjects_FullMethodName = "/flyteidl.service.AdminService/ListProjects" AdminService_CreateWorkflowEvent_FullMethodName = "/flyteidl.service.AdminService/CreateWorkflowEvent" AdminService_CreateNodeEvent_FullMethodName = "/flyteidl.service.AdminService/CreateNodeEvent" @@ -146,6 +147,8 @@ type AdminServiceClient interface { // flyteidl.admin.Project should be passed but the domains property should be empty; // it will be ignored in the handler as domains cannot be updated via this API. UpdateProject(ctx context.Context, in *admin.Project, opts ...grpc.CallOption) (*admin.ProjectUpdateResponse, error) + // Fetches a :ref:`ref_flyteidl.admin.Project` + GetProject(ctx context.Context, in *admin.ProjectGetRequest, opts ...grpc.CallOption) (*admin.Project, error) // Fetches a list of :ref:`ref_flyteidl.admin.Project` ListProjects(ctx context.Context, in *admin.ProjectListRequest, opts ...grpc.CallOption) (*admin.Projects, error) // Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred. @@ -473,6 +476,15 @@ func (c *adminServiceClient) UpdateProject(ctx context.Context, in *admin.Projec return out, nil } +func (c *adminServiceClient) GetProject(ctx context.Context, in *admin.ProjectGetRequest, opts ...grpc.CallOption) (*admin.Project, error) { + out := new(admin.Project) + err := c.cc.Invoke(ctx, AdminService_GetProject_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *adminServiceClient) ListProjects(ctx context.Context, in *admin.ProjectListRequest, opts ...grpc.CallOption) (*admin.Projects, error) { out := new(admin.Projects) err := c.cc.Invoke(ctx, AdminService_ListProjects_FullMethodName, in, out, opts...) @@ -759,6 +771,8 @@ type AdminServiceServer interface { // flyteidl.admin.Project should be passed but the domains property should be empty; // it will be ignored in the handler as domains cannot be updated via this API. UpdateProject(context.Context, *admin.Project) (*admin.ProjectUpdateResponse, error) + // Fetches a :ref:`ref_flyteidl.admin.Project` + GetProject(context.Context, *admin.ProjectGetRequest) (*admin.Project, error) // Fetches a list of :ref:`ref_flyteidl.admin.Project` ListProjects(context.Context, *admin.ProjectListRequest) (*admin.Projects, error) // Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred. @@ -902,6 +916,9 @@ func (UnimplementedAdminServiceServer) RegisterProject(context.Context, *admin.P func (UnimplementedAdminServiceServer) UpdateProject(context.Context, *admin.Project) (*admin.ProjectUpdateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateProject not implemented") } +func (UnimplementedAdminServiceServer) GetProject(context.Context, *admin.ProjectGetRequest) (*admin.Project, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetProject not implemented") +} func (UnimplementedAdminServiceServer) ListProjects(context.Context, *admin.ProjectListRequest) (*admin.Projects, error) { return nil, status.Errorf(codes.Unimplemented, "method ListProjects not implemented") } @@ -1526,6 +1543,24 @@ func _AdminService_UpdateProject_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } +func _AdminService_GetProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(admin.ProjectGetRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).GetProject(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_GetProject_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).GetProject(ctx, req.(*admin.ProjectGetRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _AdminService_ListProjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(admin.ProjectListRequest) if err := dec(in); err != nil { @@ -2085,6 +2120,10 @@ var AdminService_ServiceDesc = grpc.ServiceDesc{ MethodName: "UpdateProject", Handler: _AdminService_UpdateProject_Handler, }, + { + MethodName: "GetProject", + Handler: _AdminService_GetProject_Handler, + }, { MethodName: "ListProjects", Handler: _AdminService_ListProjects_Handler, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.pb.gw.go b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.pb.gw.go index 38a2f65f316..d6e056d029d 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.pb.gw.go +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.pb.gw.go @@ -3184,6 +3184,58 @@ func local_request_AdminService_UpdateProject_0(ctx context.Context, marshaler r } +func request_AdminService_GetProject_0(ctx context.Context, marshaler runtime.Marshaler, client extService.AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectGetRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.GetProject(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_GetProject_0(ctx context.Context, marshaler runtime.Marshaler, server extService.AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extAdmin.ProjectGetRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := server.GetProject(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_AdminService_ListProjects_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) @@ -6509,6 +6561,31 @@ func RegisterAdminServiceHandlerServer(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("GET", pattern_AdminService_GetProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProject", runtime.WithHTTPPathPattern("/api/v1/projects/{id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_GetProject_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_GetProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_AdminService_ListProjects_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -7901,6 +7978,28 @@ func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("GET", pattern_AdminService_GetProject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flyteidl.service.AdminService/GetProject", runtime.WithHTTPPathPattern("/api/v1/projects/{id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_GetProject_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_GetProject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_AdminService_ListProjects_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -8521,6 +8620,8 @@ var ( pattern_AdminService_UpdateProject_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "projects", "id"}, "")) + pattern_AdminService_GetProject_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "projects", "id"}, "")) + pattern_AdminService_ListProjects_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "projects"}, "")) pattern_AdminService_CreateWorkflowEvent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "events", "workflows"}, "")) @@ -8639,6 +8740,8 @@ var ( forward_AdminService_UpdateProject_0 = runtime.ForwardResponseMessage + forward_AdminService_GetProject_0 = runtime.ForwardResponseMessage + forward_AdminService_ListProjects_0 = runtime.ForwardResponseMessage forward_AdminService_CreateWorkflowEvent_0 = runtime.ForwardResponseMessage 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 64a6af5899b..226588a131b 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -2720,6 +2720,37 @@ } }, "/api/v1/projects/{id}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.Project`", + "description": "Fetch a registered project.", + "operationId": "AdminService_GetProject", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProject" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "description": "Indicates a unique project.\n+required", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + }, "put": { "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", "description": "Update a project.", diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 1d1f77b57ec..8c1034865ba 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -17812,6 +17812,58 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a ProjectGetRequest. */ + interface IProjectGetRequest { + + /** ProjectGetRequest id */ + id?: (string|null); + } + + /** Represents a ProjectGetRequest. */ + class ProjectGetRequest implements IProjectGetRequest { + + /** + * Constructs a new ProjectGetRequest. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.IProjectGetRequest); + + /** ProjectGetRequest id. */ + public id: string; + + /** + * Creates a new ProjectGetRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ProjectGetRequest instance + */ + public static create(properties?: flyteidl.admin.IProjectGetRequest): flyteidl.admin.ProjectGetRequest; + + /** + * Encodes the specified ProjectGetRequest message. Does not implicitly {@link flyteidl.admin.ProjectGetRequest.verify|verify} messages. + * @param message ProjectGetRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.IProjectGetRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ProjectGetRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ProjectGetRequest + * @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.admin.ProjectGetRequest; + + /** + * Verifies a ProjectGetRequest 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 ProjectAttributes. */ interface IProjectAttributes { @@ -21432,6 +21484,20 @@ export namespace flyteidl { */ public updateProject(request: flyteidl.admin.IProject): Promise; + /** + * Calls GetProject. + * @param request ProjectGetRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Project + */ + public getProject(request: flyteidl.admin.IProjectGetRequest, callback: flyteidl.service.AdminService.GetProjectCallback): void; + + /** + * Calls GetProject. + * @param request ProjectGetRequest message or plain object + * @returns Promise + */ + public getProject(request: flyteidl.admin.IProjectGetRequest): Promise; + /** * Calls ListProjects. * @param request ProjectListRequest message or plain object @@ -21981,6 +22047,13 @@ export namespace flyteidl { */ type UpdateProjectCallback = (error: (Error|null), response?: flyteidl.admin.ProjectUpdateResponse) => void; + /** + * Callback as used by {@link flyteidl.service.AdminService#getProject}. + * @param error Error, if any + * @param [response] Project + */ + type GetProjectCallback = (error: (Error|null), response?: flyteidl.admin.Project) => void; + /** * Callback as used by {@link flyteidl.service.AdminService#listProjects}. * @param error Error, if any diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 95ac3ce6ea2..680cf11ee26 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -43012,6 +43012,116 @@ return ProjectUpdateResponse; })(); + admin.ProjectGetRequest = (function() { + + /** + * Properties of a ProjectGetRequest. + * @memberof flyteidl.admin + * @interface IProjectGetRequest + * @property {string|null} [id] ProjectGetRequest id + */ + + /** + * Constructs a new ProjectGetRequest. + * @memberof flyteidl.admin + * @classdesc Represents a ProjectGetRequest. + * @implements IProjectGetRequest + * @constructor + * @param {flyteidl.admin.IProjectGetRequest=} [properties] Properties to set + */ + function ProjectGetRequest(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]]; + } + + /** + * ProjectGetRequest id. + * @member {string} id + * @memberof flyteidl.admin.ProjectGetRequest + * @instance + */ + ProjectGetRequest.prototype.id = ""; + + /** + * Creates a new ProjectGetRequest instance using the specified properties. + * @function create + * @memberof flyteidl.admin.ProjectGetRequest + * @static + * @param {flyteidl.admin.IProjectGetRequest=} [properties] Properties to set + * @returns {flyteidl.admin.ProjectGetRequest} ProjectGetRequest instance + */ + ProjectGetRequest.create = function create(properties) { + return new ProjectGetRequest(properties); + }; + + /** + * Encodes the specified ProjectGetRequest message. Does not implicitly {@link flyteidl.admin.ProjectGetRequest.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.ProjectGetRequest + * @static + * @param {flyteidl.admin.IProjectGetRequest} message ProjectGetRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ProjectGetRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.id); + return writer; + }; + + /** + * Decodes a ProjectGetRequest message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.ProjectGetRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.ProjectGetRequest} ProjectGetRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ProjectGetRequest.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.admin.ProjectGetRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a ProjectGetRequest message. + * @function verify + * @memberof flyteidl.admin.ProjectGetRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ProjectGetRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isString(message.id)) + return "id: string expected"; + return null; + }; + + return ProjectGetRequest; + })(); + admin.ProjectAttributes = (function() { /** @@ -51364,6 +51474,39 @@ * @variation 2 */ + /** + * Callback as used by {@link flyteidl.service.AdminService#getProject}. + * @memberof flyteidl.service.AdminService + * @typedef GetProjectCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.admin.Project} [response] Project + */ + + /** + * Calls GetProject. + * @function getProject + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IProjectGetRequest} request ProjectGetRequest message or plain object + * @param {flyteidl.service.AdminService.GetProjectCallback} callback Node-style callback called with the error, if any, and Project + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(AdminService.prototype.getProject = function getProject(request, callback) { + return this.rpcCall(getProject, $root.flyteidl.admin.ProjectGetRequest, $root.flyteidl.admin.Project, request, callback); + }, "name", { value: "GetProject" }); + + /** + * Calls GetProject. + * @function getProject + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IProjectGetRequest} request ProjectGetRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + /** * Callback as used by {@link flyteidl.service.AdminService#listProjects}. * @memberof flyteidl.service.AdminService diff --git a/flyteidl/gen/pb_python/flyteidl/admin/project_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/project_pb2.py index d0b442e3a5a..38d97f2ebe7 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/project_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/project_pb2.py @@ -14,7 +14,7 @@ from flyteidl.admin import common_pb2 as flyteidl_dot_admin_dot_common__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/admin/project.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\",\n\x06\x44omain\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"\xbf\x02\n\x07Project\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x30\n\x07\x64omains\x18\x03 \x03(\x0b\x32\x16.flyteidl.admin.DomainR\x07\x64omains\x12 \n\x0b\x64\x65scription\x18\x04 \x01(\tR\x0b\x64\x65scription\x12.\n\x06labels\x18\x05 \x01(\x0b\x32\x16.flyteidl.admin.LabelsR\x06labels\x12:\n\x05state\x18\x06 \x01(\x0e\x32$.flyteidl.admin.Project.ProjectStateR\x05state\x12\x10\n\x03org\x18\x07 \x01(\tR\x03org\">\n\x0cProjectState\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08\x41RCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\"U\n\x08Projects\x12\x33\n\x08projects\x18\x01 \x03(\x0b\x32\x17.flyteidl.admin.ProjectR\x08projects\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x9b\x01\n\x12ProjectListRequest\x12\x14\n\x05limit\x18\x01 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x03 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x04 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x10\n\x03org\x18\x05 \x01(\tR\x03org\"K\n\x16ProjectRegisterRequest\x12\x31\n\x07project\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.ProjectR\x07project\"\x19\n\x17ProjectRegisterResponse\"\x17\n\x15ProjectUpdateResponseB\xb8\x01\n\x12\x63om.flyteidl.adminB\x0cProjectProtoP\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\x1c\x66lyteidl/admin/project.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\",\n\x06\x44omain\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"\xbf\x02\n\x07Project\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x30\n\x07\x64omains\x18\x03 \x03(\x0b\x32\x16.flyteidl.admin.DomainR\x07\x64omains\x12 \n\x0b\x64\x65scription\x18\x04 \x01(\tR\x0b\x64\x65scription\x12.\n\x06labels\x18\x05 \x01(\x0b\x32\x16.flyteidl.admin.LabelsR\x06labels\x12:\n\x05state\x18\x06 \x01(\x0e\x32$.flyteidl.admin.Project.ProjectStateR\x05state\x12\x10\n\x03org\x18\x07 \x01(\tR\x03org\">\n\x0cProjectState\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08\x41RCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\"U\n\x08Projects\x12\x33\n\x08projects\x18\x01 \x03(\x0b\x32\x17.flyteidl.admin.ProjectR\x08projects\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x9b\x01\n\x12ProjectListRequest\x12\x14\n\x05limit\x18\x01 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x03 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x04 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x10\n\x03org\x18\x05 \x01(\tR\x03org\"K\n\x16ProjectRegisterRequest\x12\x31\n\x07project\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.ProjectR\x07project\"\x19\n\x17ProjectRegisterResponse\"\x17\n\x15ProjectUpdateResponse\"#\n\x11ProjectGetRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02idB\xb8\x01\n\x12\x63om.flyteidl.adminB\x0cProjectProtoP\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) @@ -39,4 +39,6 @@ _globals['_PROJECTREGISTERRESPONSE']._serialized_end=792 _globals['_PROJECTUPDATERESPONSE']._serialized_start=794 _globals['_PROJECTUPDATERESPONSE']._serialized_end=817 + _globals['_PROJECTGETREQUEST']._serialized_start=819 + _globals['_PROJECTGETREQUEST']._serialized_end=854 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/admin/project_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/admin/project_pb2.pyi index 1379fa3c0cc..ddb3f617ffd 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/project_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/project_pb2.pyi @@ -76,3 +76,9 @@ class ProjectRegisterResponse(_message.Message): class ProjectUpdateResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... + +class ProjectGetRequest(_message.Message): + __slots__ = ["id"] + ID_FIELD_NUMBER: _ClassVar[int] + id: str + def __init__(self, id: _Optional[str] = ...) -> None: ... diff --git a/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py b/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py index f2b5a55db6a..c205a119f5b 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/service/admin_pb2.py @@ -30,7 +30,7 @@ from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/service/admin.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1c\x66lyteidl/admin/project.proto\x1a.flyteidl/admin/project_domain_attributes.proto\x1a\'flyteidl/admin/project_attributes.proto\x1a\x19\x66lyteidl/admin/task.proto\x1a\x1d\x66lyteidl/admin/workflow.proto\x1a(flyteidl/admin/workflow_attributes.proto\x1a flyteidl/admin/launch_plan.proto\x1a\x1a\x66lyteidl/admin/event.proto\x1a\x1e\x66lyteidl/admin/execution.proto\x1a\'flyteidl/admin/matchable_resource.proto\x1a#flyteidl/admin/node_execution.proto\x1a#flyteidl/admin/task_execution.proto\x1a\x1c\x66lyteidl/admin/version.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\'flyteidl/admin/description_entity.proto\x1a.protoc-gen-openapiv2/options/annotations.proto2\x89r\n\x0c\x41\x64minService\x12\xc5\x02\n\nCreateTask\x12!.flyteidl.admin.TaskCreateRequest\x1a\".flyteidl.admin.TaskCreateResponse\"\xef\x01\x92\x41\xd3\x01\x1a&Create and register a task definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/api/v1/tasks\x12\xb2\x01\n\x07GetTask\x12 .flyteidl.admin.ObjectGetRequest\x1a\x14.flyteidl.admin.Task\"o\x92\x41\'\x1a%Retrieve an existing task definition.\x82\xd3\xe4\x93\x02?\x12=/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xde\x01\n\x0bListTaskIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"r\x92\x41\x44\x1a\x42\x46\x65tch existing task definition identifiers matching input filters.\x82\xd3\xe4\x93\x02%\x12#/api/v1/task_ids/{project}/{domain}\x12\xeb\x01\n\tListTasks\x12#.flyteidl.admin.ResourceListRequest\x1a\x18.flyteidl.admin.TaskList\"\x9e\x01\x92\x41\x39\x1a\x37\x46\x65tch existing task definitions matching input filters.\x82\xd3\xe4\x93\x02\\Z(\x12&/api/v1/tasks/{id.project}/{id.domain}\x12\x30/api/v1/tasks/{id.project}/{id.domain}/{id.name}\x12\xd9\x02\n\x0e\x43reateWorkflow\x12%.flyteidl.admin.WorkflowCreateRequest\x1a&.flyteidl.admin.WorkflowCreateResponse\"\xf7\x01\x92\x41\xd7\x01\x1a*Create and register a workflow definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/v1/workflows\x12\xc2\x01\n\x0bGetWorkflow\x12 .flyteidl.admin.ObjectGetRequest\x1a\x18.flyteidl.admin.Workflow\"w\x92\x41+\x1a)Retrieve an existing workflow definition.\x82\xd3\xe4\x93\x02\x43\x12\x41/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x9f\x01\n\x0fListWorkflowIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"/\x82\xd3\xe4\x93\x02)\x12\'/api/v1/workflow_ids/{project}/{domain}\x12\xff\x01\n\rListWorkflows\x12#.flyteidl.admin.ResourceListRequest\x1a\x1c.flyteidl.admin.WorkflowList\"\xaa\x01\x92\x41=\x1a;Fetch existing workflow definitions matching input filters.\x82\xd3\xe4\x93\x02\x64Z,\x12*/api/v1/workflows/{id.project}/{id.domain}\x12\x34/api/v1/workflows/{id.project}/{id.domain}/{id.name}\x12\xe5\x02\n\x10\x43reateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanCreateRequest\x1a(.flyteidl.admin.LaunchPlanCreateResponse\"\xfd\x01\x92\x41\xda\x01\x1a-Create and register a launch plan definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/launch_plans\x12\xcc\x01\n\rGetLaunchPlan\x12 .flyteidl.admin.ObjectGetRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"}\x92\x41.\x1a,Retrieve an existing launch plan definition.\x82\xd3\xe4\x93\x02\x46\x12\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xf3\x01\n\x13GetActiveLaunchPlan\x12\'.flyteidl.admin.ActiveLaunchPlanRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"\x96\x01\x92\x41M\x1aKRetrieve the active launch plan version specified by input request filters.\x82\xd3\xe4\x93\x02@\x12>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x12\xeb\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\x84\x01\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x12\xf3\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\x80\x01\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x12\x8c\x02\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xb3\x01\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x82\xd3\xe4\x93\x02jZ/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}\x12\xc0\x06\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xd8\x05\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x82\xd3\xe4\x93\x02I:\x01*\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xa2\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\">\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/executions\x12\xb1\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"I\x92\x41 \x1a\x1eRelaunch a workflow execution.\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/executions/relaunch\x12\x9d\x05\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\xb6\x04\x92\x41\x8d\x04\x1a\x8a\x04Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/v1/executions/recover\x12\xc2\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"j\x92\x41*\x1a(Retrieve an existing workflow execution.\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xa4\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"@\x82\xd3\xe4\x93\x02::\x01*\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xb9\x01\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"B\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x12\x89\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x12\xad\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"@\x82\xd3\xe4\x93\x02::\x01**5/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xd2\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"v\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\xff\x01\n\x16GetDynamicNodeWorkflow\x12-.flyteidl.admin.GetDynamicNodeWorkflowRequest\x1a+.flyteidl.admin.DynamicNodeWorkflowResponse\"\x88\x01\x82\xd3\xe4\x93\x02\x81\x01\x12\x7f/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow\x12\xde\x01\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x12\xa5\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb3\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x12\xee\x01\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\x7f\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/api/v1/projects\x12\x87\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"6\x92\x41\x13\x1a\x11Update a project.\x82\xd3\xe4\x93\x02\x1a:\x01*\x1a\x15/api/v1/projects/{id}\x12\x85\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"7\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x12\xdd\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"g\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/v1/events/workflows\x12\xc9\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"_\x92\x41=\x1a;Create a node execution event recording a phase transition.\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/nodes\x12\xc9\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"_\x92\x41=\x1a;Create a task execution event recording a phase transition.\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/tasks\x12\xa9\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xcc\x02\x92\x41&\x1a$Retrieve an existing task execution.\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xd3\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xef\x01\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x12\xe0\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xec\x02\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xbf\x02\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\xb0\x01\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02O:\x01*\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}\x12\x9f\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\x99\x01\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x12\xa9\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\x9a\x01\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02\x39:\x01**4/api/v1/project_domain_attributes/{project}/{domain}\x12\xff\x01\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\"\x82\x01\x92\x41\x45\x1a\x43Update the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02\x34:\x01*\x1a//api/v1/project_attributes/{attributes.project}\x12\xe9\x01\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\"v\x92\x41G\x1a\x45Retrieve the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02&\x12$/api/v1/project_attributes/{project}\x12\xf3\x01\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"w\x92\x41\x45\x1a\x43\x44\x65lete the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02):\x01**$/api/v1/project_attributes/{project}\x12\xce\x02\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xce\x01\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02_:\x01*\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}\x12\xa3\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xac\x01\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xad\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xad\x01\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02>:\x01**9/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xe1\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"e\x92\x41>\x1a/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x12\xeb\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\x84\x01\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x12\xf3\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\x80\x01\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x12\x8c\x02\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xb3\x01\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x82\xd3\xe4\x93\x02jZ/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}\x12\xc0\x06\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xd8\x05\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x82\xd3\xe4\x93\x02I:\x01*\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xa2\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\">\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/executions\x12\xb1\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"I\x92\x41 \x1a\x1eRelaunch a workflow execution.\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/executions/relaunch\x12\x9d\x05\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\xb6\x04\x92\x41\x8d\x04\x1a\x8a\x04Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/v1/executions/recover\x12\xc2\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"j\x92\x41*\x1a(Retrieve an existing workflow execution.\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xa4\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"@\x82\xd3\xe4\x93\x02::\x01*\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xb9\x01\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"B\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x12\x89\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x12\xad\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"@\x82\xd3\xe4\x93\x02::\x01**5/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xd2\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"v\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\xff\x01\n\x16GetDynamicNodeWorkflow\x12-.flyteidl.admin.GetDynamicNodeWorkflowRequest\x1a+.flyteidl.admin.DynamicNodeWorkflowResponse\"\x88\x01\x82\xd3\xe4\x93\x02\x81\x01\x12\x7f/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow\x12\xde\x01\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x12\xa5\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb3\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x12\xee\x01\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\x7f\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/api/v1/projects\x12\x87\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"6\x92\x41\x13\x1a\x11Update a project.\x82\xd3\xe4\x93\x02\x1a:\x01*\x1a\x15/api/v1/projects/{id}\x12\x87\x01\n\nGetProject\x12!.flyteidl.admin.ProjectGetRequest\x1a\x17.flyteidl.admin.Project\"=\x92\x41\x1d\x1a\x1b\x46\x65tch a registered project.\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/projects/{id}\x12\x85\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"7\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x12\xdd\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"g\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/v1/events/workflows\x12\xc9\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"_\x92\x41=\x1a;Create a node execution event recording a phase transition.\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/nodes\x12\xc9\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"_\x92\x41=\x1a;Create a task execution event recording a phase transition.\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/tasks\x12\xa9\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xcc\x02\x92\x41&\x1a$Retrieve an existing task execution.\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xd3\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xef\x01\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x12\xe0\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xec\x02\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xbf\x02\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\xb0\x01\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02O:\x01*\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}\x12\x9f\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\x99\x01\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x12\xa9\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\x9a\x01\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x82\xd3\xe4\x93\x02\x39:\x01**4/api/v1/project_domain_attributes/{project}/{domain}\x12\xff\x01\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\"\x82\x01\x92\x41\x45\x1a\x43Update the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02\x34:\x01*\x1a//api/v1/project_attributes/{attributes.project}\x12\xe9\x01\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\"v\x92\x41G\x1a\x45Retrieve the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02&\x12$/api/v1/project_attributes/{project}\x12\xf3\x01\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"w\x92\x41\x45\x1a\x43\x44\x65lete the customized resource attributes associated with a project\x82\xd3\xe4\x93\x02):\x01**$/api/v1/project_attributes/{project}\x12\xce\x02\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xce\x01\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02_:\x01*\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}\x12\xa3\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xac\x01\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xad\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xad\x01\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x82\xd3\xe4\x93\x02>:\x01**9/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xe1\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"e\x92\x41>\x1a Date: Wed, 20 Mar 2024 17:01:16 -0500 Subject: [PATCH 097/107] Prepopulate ArrayNode output literals with TaskNode interface output variables (#5080) * prepopulate output literals with TaskNode interface output variables Signed-off-by: Daniel Rammer * added unit test Signed-off-by: Daniel Rammer * docs Signed-off-by: Daniel Rammer --------- Signed-off-by: Daniel Rammer --- .../pkg/controller/nodes/array/handler.go | 32 +++++++++++++++++++ .../controller/nodes/array/handler_test.go | 9 ++++++ 2 files changed, 41 insertions(+) diff --git a/flytepropeller/pkg/controller/nodes/array/handler.go b/flytepropeller/pkg/controller/nodes/array/handler.go index 72b2c511ebb..991a28c1c3e 100644 --- a/flytepropeller/pkg/controller/nodes/array/handler.go +++ b/flytepropeller/pkg/controller/nodes/array/handler.go @@ -478,7 +478,39 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu gatherOutputsRequests = append(gatherOutputsRequests, gatherOutputsRequest) } + // attempt best effort at initializing outputLiterals with output variable names. currently + // only TaskNode and WorkflowNode contain node interfaces. outputLiterals := make(map[string]*idlcore.Literal) + + switch arrayNode.GetSubNodeSpec().GetKind() { + case v1alpha1.NodeKindTask: + taskID := *arrayNode.GetSubNodeSpec().TaskRef + taskNode, err := nCtx.ExecutionContext().GetTask(taskID) + if err != nil { + return handler.DoTransition(handler.TransitionTypeEphemeral, handler.PhaseInfoFailure(idlcore.ExecutionError_SYSTEM, + errors.BadSpecificationError, fmt.Sprintf("failed to find ArrayNode subNode task with id: '%s'", taskID), nil)), nil + } + + if outputs := taskNode.CoreTask().GetInterface().GetOutputs(); outputs != nil { + for name := range outputs.Variables { + outputLiteral := &idlcore.Literal{ + Value: &idlcore.Literal_Collection{ + Collection: &idlcore.LiteralCollection{ + Literals: make([]*idlcore.Literal, 0, len(arrayNodeState.SubNodePhases.GetItems())), + }, + }, + } + + outputLiterals[name] = outputLiteral + } + } + case v1alpha1.NodeKindWorkflow: + // TODO - to support launchplans we will need to process the output interface variables here + fallthrough + default: + logger.Warnf(ctx, "ArrayNode does not support pre-populating outputLiteral collections for node kind '%s'", arrayNode.GetSubNodeSpec().GetKind()) + } + workerErrorCollector := errorcollector.NewErrorMessageCollector() for i, gatherOutputsRequest := range gatherOutputsRequests { outputResponse := <-gatherOutputsRequest.responseChannel diff --git a/flytepropeller/pkg/controller/nodes/array/handler_test.go b/flytepropeller/pkg/controller/nodes/array/handler_test.go index f4107c1f118..f0b91217e09 100644 --- a/flytepropeller/pkg/controller/nodes/array/handler_test.go +++ b/flytepropeller/pkg/controller/nodes/array/handler_test.go @@ -38,6 +38,7 @@ var ( ID: "foo", ArrayNode: &v1alpha1.ArrayNodeSpec{ SubNodeSpec: &v1alpha1.NodeSpec{ + Kind: v1alpha1.NodeKindTask, TaskRef: &taskRef, }, }, @@ -830,6 +831,14 @@ func TestHandleArrayNodePhaseSucceeding(t *testing.T) { expectedArrayNodePhase: v1alpha1.ArrayNodePhaseSucceeding, expectedTransitionPhase: handler.EPhaseSuccess, }, + { + name: "SuccessEmptyInput", + outputValues: []*int{}, + outputVariable: "foo", + subNodePhases: []v1alpha1.NodePhase{}, + expectedArrayNodePhase: v1alpha1.ArrayNodePhaseSucceeding, + expectedTransitionPhase: handler.EPhaseSuccess, + }, } for _, test := range tests { From 2db8eedba1998190b8d6b8b0c224cbd956621d38 Mon Sep 17 00:00:00 2001 From: Paul Dittamo <37558497+pvditt@users.noreply.github.com> Date: Thu, 21 Mar 2024 11:22:40 -0700 Subject: [PATCH 098/107] [House Keeping] deprecate MaxDatasetSizeBytes propeller config in favor of GetLimitMegabytes storage config (#4852) * deprecate MaxDatasetSizeBytes propeller config in favor of GetLimitMegabytes storage config Signed-off-by: Paul Dittamo * update config docs Signed-off-by: Paul Dittamo * update deprecation message Signed-off-by: Paul Dittamo * oof Signed-off-by: Paul Dittamo --------- Signed-off-by: Paul Dittamo --- docs/deployment/configuration/generated/flyteadmin_config.rst | 4 ++-- .../configuration/generated/flytepropeller_config.rst | 4 ++-- docs/deployment/configuration/generated/scheduler_config.rst | 4 ++-- flytepropeller/pkg/controller/config/config.go | 4 ++-- flytepropeller/pkg/controller/config/config_flags.go | 2 +- flytepropeller/pkg/controller/controller.go | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/deployment/configuration/generated/flyteadmin_config.rst b/docs/deployment/configuration/generated/flyteadmin_config.rst index 492b5f4d890..e8464b1512c 100644 --- a/docs/deployment/configuration/generated/flyteadmin_config.rst +++ b/docs/deployment/configuration/generated/flyteadmin_config.rst @@ -3522,13 +3522,13 @@ Enable events publishing to K8s events API. max-output-size-bytes (int64) ------------------------------------------------------------------------------------------------------------------------ -Maximum size of outputs per task +Deprecated! Use storage.limits.maxDownloadMBs instead **Default Value**: .. code-block:: yaml - "10485760" + "-1" enable-grpc-latency-metrics (bool) diff --git a/docs/deployment/configuration/generated/flytepropeller_config.rst b/docs/deployment/configuration/generated/flytepropeller_config.rst index db4f9a543e7..f9473afffda 100644 --- a/docs/deployment/configuration/generated/flytepropeller_config.rst +++ b/docs/deployment/configuration/generated/flytepropeller_config.rst @@ -4166,13 +4166,13 @@ Enable events publishing to K8s events API. max-output-size-bytes (int64) ------------------------------------------------------------------------------------------------------------------------ -Maximum size of outputs per task +Deprecated! Use storage.limits.maxDownloadMBs instead **Default Value**: .. code-block:: yaml - "10485760" + "-1" enable-grpc-latency-metrics (bool) diff --git a/docs/deployment/configuration/generated/scheduler_config.rst b/docs/deployment/configuration/generated/scheduler_config.rst index 467d5f5d4e9..47e4ee870ad 100644 --- a/docs/deployment/configuration/generated/scheduler_config.rst +++ b/docs/deployment/configuration/generated/scheduler_config.rst @@ -3522,13 +3522,13 @@ Enable events publishing to K8s events API. max-output-size-bytes (int64) ------------------------------------------------------------------------------------------------------------------------ -Maximum size of outputs per task +Deprecated! Use storage.limits.maxDownloadMBs instead **Default Value**: .. code-block:: yaml - "10485760" + "-1" enable-grpc-latency-metrics (bool) diff --git a/flytepropeller/pkg/controller/config/config.go b/flytepropeller/pkg/controller/config/config.go index 698883fb48b..89122da3ed5 100644 --- a/flytepropeller/pkg/controller/config/config.go +++ b/flytepropeller/pkg/controller/config/config.go @@ -62,7 +62,7 @@ var ( GCInterval: config.Duration{ Duration: 30 * time.Minute, }, - MaxDatasetSizeBytes: 10 * 1024 * 1024, + MaxDatasetSizeBytes: -1, Queue: CompositeQueueConfig{ Type: CompositeQueueBatch, BatchingInterval: config.Duration{ @@ -142,7 +142,7 @@ type Config struct { GCInterval config.Duration `json:"gc-interval" pflag:"Run periodic GC every 30 minutes"` LeaderElection LeaderElectionConfig `json:"leader-election,omitempty" pflag:",Config for leader election."` PublishK8sEvents bool `json:"publish-k8s-events" pflag:",Enable events publishing to K8s events API."` - MaxDatasetSizeBytes int64 `json:"max-output-size-bytes" pflag:",Maximum size of outputs per task"` + MaxDatasetSizeBytes int64 `json:"max-output-size-bytes" pflag:",Deprecated! Use storage.limits.maxDownloadMBs instead"` EnableGrpcLatencyMetrics bool `json:"enable-grpc-latency-metrics" pflag:",Enable grpc latency metrics. Note Histograms metrics can be expensive on Prometheus servers."` KubeConfig KubeClientConfig `json:"kube-client-config" pflag:",Configuration to control the Kubernetes client"` NodeConfig NodeConfig `json:"node-config,omitempty" pflag:",config for a workflow node"` diff --git a/flytepropeller/pkg/controller/config/config_flags.go b/flytepropeller/pkg/controller/config/config_flags.go index c60f724ee25..b055aad5584 100755 --- a/flytepropeller/pkg/controller/config/config_flags.go +++ b/flytepropeller/pkg/controller/config/config_flags.go @@ -85,7 +85,7 @@ func (cfg Config) GetPFlagSet(prefix string) *pflag.FlagSet { cmdFlags.String(fmt.Sprintf("%v%v", prefix, "leader-election.renew-deadline"), defaultConfig.LeaderElection.RenewDeadline.String(), "Duration that the acting master will retry refreshing leadership before giving up.") cmdFlags.String(fmt.Sprintf("%v%v", prefix, "leader-election.retry-period"), defaultConfig.LeaderElection.RetryPeriod.String(), "Duration the LeaderElector clients should wait between tries of actions.") cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "publish-k8s-events"), defaultConfig.PublishK8sEvents, "Enable events publishing to K8s events API.") - cmdFlags.Int64(fmt.Sprintf("%v%v", prefix, "max-output-size-bytes"), defaultConfig.MaxDatasetSizeBytes, "Maximum size of outputs per task") + cmdFlags.Int64(fmt.Sprintf("%v%v", prefix, "max-output-size-bytes"), defaultConfig.MaxDatasetSizeBytes, "Deprecated! Use storage.limits.maxDownloadMBs instead") cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "enable-grpc-latency-metrics"), defaultConfig.EnableGrpcLatencyMetrics, "Enable grpc latency metrics. Note Histograms metrics can be expensive on Prometheus servers.") cmdFlags.Int(fmt.Sprintf("%v%v", prefix, "kube-client-config.burst"), defaultConfig.KubeConfig.Burst, "Max burst rate for throttle. 0 defaults to 10") cmdFlags.String(fmt.Sprintf("%v%v", prefix, "kube-client-config.timeout"), defaultConfig.KubeConfig.Timeout.String(), "Max duration allowed for every request to KubeAPI before giving up. 0 implies no timeout.") diff --git a/flytepropeller/pkg/controller/controller.go b/flytepropeller/pkg/controller/controller.go index de28612c54b..acd7747d3f7 100644 --- a/flytepropeller/pkg/controller/controller.go +++ b/flytepropeller/pkg/controller/controller.go @@ -439,7 +439,7 @@ func New(ctx context.Context, cfg *config.Config, kubeClientset kubernetes.Inter } nodeExecutor, err := nodes.NewExecutor(ctx, cfg.NodeConfig, store, controller.enqueueWorkflowForNodeUpdates, eventSink, - launchPlanActor, launchPlanActor, cfg.MaxDatasetSizeBytes, storage.DataReference(cfg.DefaultRawOutputPrefix), kubeClient, + launchPlanActor, launchPlanActor, sCfg.Limits.GetLimitMegabytes*1024*1024, storage.DataReference(cfg.DefaultRawOutputPrefix), kubeClient, catalogClient, recoveryClient, &cfg.EventConfig, cfg.ClusterID, signalClient, nodeHandlerFactory, scope) if err != nil { return nil, errors.Wrapf(err, "Failed to create Controller.") From 049d99b26eaed7ca77848686c94ad425fc9fa804 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Thu, 21 Mar 2024 12:37:43 -0700 Subject: [PATCH 099/107] Fix lint errors caught by `chart-testing` (#5072) --- .github/workflows/validate-helm-charts.yaml | 22 +++++++++------ Makefile | 5 ++++ charts/event.json | 5 ++++ charts/flyte-binary/Chart.yaml | 6 ++-- charts/flyte-binary/values.yaml | 8 +++--- charts/flyte-core/Chart.yaml | 6 ++-- charts/flyte-core/values.yaml | 26 ++++++++--------- charts/flyte-deps/Chart.yaml | 2 +- charts/flyte/Chart.yaml | 6 ++-- charts/flyte/values.yaml | 23 ++++++++------- charts/flyteagent/Chart.yaml | 2 +- charts/flyteagent/values.yaml | 2 +- .../manifests/complete-agent.yaml | 4 +-- .../sandbox-bundled/manifests/complete.yaml | 4 +-- docker/sandbox-bundled/manifests/dev.yaml | 4 +-- script/release.sh | 28 +++++++++---------- 16 files changed, 83 insertions(+), 70 deletions(-) create mode 100644 charts/event.json diff --git a/.github/workflows/validate-helm-charts.yaml b/.github/workflows/validate-helm-charts.yaml index 36247b43da5..7b4ee9cce6d 100644 --- a/.github/workflows/validate-helm-charts.yaml +++ b/.github/workflows/validate-helm-charts.yaml @@ -28,6 +28,9 @@ jobs: python-version: "3.10" check-latest: true + - uses: unionai/flytectl-setup-action@v0.0.1 + name: Setup flytectl + - name: Set up chart-testing uses: helm/chart-testing-action@v2 @@ -41,15 +44,16 @@ jobs: - name: Run chart-testing (lint) if: steps.charts-changed.outputs.changed == 'true' - run: ct lint --target-branch ${{ github.event.repository.default_branch }} - - - name: Create KinD cluster - if: steps.charts-changed.outputs.changed == 'true' - uses: helm/kind-action@v1 - - - name: Run chart-testing (install) - if: steps.charts-changed.outputs.changed == 'true' - run: ct install --target-branch ${{ github.event.repository.default_branch }} + run: | + ct lint \ + --target-branch ${{ github.event.repository.default_branch }} \ + --validate-maintainers=false \ + --check-version-increment=false \ + --chart-repos spark-operator=https://kubeflow.github.io/spark-operator \ + --chart-repos dask=https://helm.dask.org \ + --chart-repos bitnami=https://charts.bitnami.com/bitnami \ + --chart-repos twuni=https://helm.twun.io \ + --chart-repos kubernetes-dashboard=https://kubernetes.github.io/dashboard validate-manifests: needs: diff --git a/Makefile b/Makefile index 3f351392894..072fdf8efb0 100644 --- a/Makefile +++ b/Makefile @@ -112,3 +112,8 @@ go-tidy: make -C flyteplugins go-tidy make -C flytestdlib go-tidy make -C flytecopilot go-tidy + +.PHONY: lint-helm-charts +lint-helm-charts: + # This pressuposes that you have act installed + act pull_request -W .github/workflows/validate-helm-charts.yaml --container-architecture linux/amd64 -e charts/event.json diff --git a/charts/event.json b/charts/event.json new file mode 100644 index 00000000000..d5e82399e52 --- /dev/null +++ b/charts/event.json @@ -0,0 +1,5 @@ +{ + "repository": { + "default_branch": "master" + } +} diff --git a/charts/flyte-binary/Chart.yaml b/charts/flyte-binary/Chart.yaml index b237b9f2447..730b109d0de 100644 --- a/charts/flyte-binary/Chart.yaml +++ b/charts/flyte-binary/Chart.yaml @@ -7,7 +7,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: v0.1.10 # VERSION +version: v0.1.10 # VERSION # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to @@ -18,5 +18,5 @@ dependencies: - name: flyteagent condition: flyteagent.enabled alias: flyteagent - version: v0.1.10 # VERSION - repository: file://../flyteagent # REPOSITORY \ No newline at end of file + version: v0.1.10 # VERSION + repository: file://../flyteagent # REPOSITORY diff --git a/charts/flyte-binary/values.yaml b/charts/flyte-binary/values.yaml index e84b1c54f49..7d16c553780 100644 --- a/charts/flyte-binary/values.yaml +++ b/charts/flyte-binary/values.yaml @@ -157,9 +157,9 @@ configuration: # image Configure image to use for CoPilot sidecar image: # repository CoPilot sidecar image repository - repository: cr.flyte.org/flyteorg/flytecopilot # FLYTECOPILOT_IMAGE + repository: cr.flyte.org/flyteorg/flytecopilot # FLYTECOPILOT_IMAGE # tag CoPilot sidecar image tag - tag: v1.11.0 # FLYTECOPILOT_TAG + tag: v1.11.0 # FLYTECOPILOT_TAG # agentService Flyte Agent configuration agentService: defaultAgent: @@ -209,9 +209,9 @@ deployment: # image Configure image to use for Flyte image: # repository Flyte image repository - repository: cr.flyte.org/flyteorg/flyte-binary # FLYTE_IMAGE + repository: cr.flyte.org/flyteorg/flyte-binary # FLYTE_IMAGE # tag Flyte image tag - tag: latest # FLYTE_TAG + tag: latest # FLYTE_TAG # pullPolicy Flyte image pull policy pullPolicy: IfNotPresent # extraEnvVars Array with extra environment variables to add to Flyte diff --git a/charts/flyte-core/Chart.yaml b/charts/flyte-core/Chart.yaml index 47d0817a6d3..117e07e1632 100644 --- a/charts/flyte-core/Chart.yaml +++ b/charts/flyte-core/Chart.yaml @@ -2,10 +2,10 @@ apiVersion: v2 name: flyte-core description: A Helm chart for Flyte core type: application -version: v0.1.10 # VERSION +version: v0.1.10 # VERSION dependencies: - name: flyteagent condition: flyteagent.enabled alias: flyteagent - version: v0.1.10 # VERSION - repository: file://../flyteagent # REPOSITORY \ No newline at end of file + version: v0.1.10 # VERSION + repository: file://../flyteagent # REPOSITORY diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index 0319b3bacae..5498664f679 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -15,8 +15,8 @@ flyteadmin: replicaCount: 1 image: # -- Docker image for Flyteadmin deployment - repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE - tag: v1.11.0 # FLYTEADMIN_TAG + repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE + tag: v1.11.0 # FLYTEADMIN_TAG pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables # @@ -140,9 +140,9 @@ flytescheduler: runPrecheck: true image: # -- Docker image for Flytescheduler deployment - repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE + repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.11.0 # FLYTESCHEDULER_TAG + tag: v1.11.0 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -206,9 +206,9 @@ datacatalog: replicaCount: 1 image: # -- Docker image for Datacatalog deployment - repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE + repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.11.0 # DATACATALOG_TAG + tag: v1.11.0 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -295,8 +295,8 @@ flytepropeller: replicaCount: 1 image: # -- Docker image for Flytepropeller deployment - repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE - tag: v1.11.0 # FLYTEPROPELLER_TAG + repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE + tag: v1.11.0 # FLYTEPROPELLER_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment resources: @@ -378,8 +378,8 @@ flyteconsole: replicaCount: 1 image: # -- Docker image for Flyteconsole deployment - repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE - tag: v1.10.3 # FLYTECONSOLE_TAG + repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE + tag: v1.10.3 # FLYTECONSOLE_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flyteconsole deployment resources: @@ -731,7 +731,7 @@ configmap: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration @@ -869,7 +869,7 @@ external_events: # writing to fifo sns topics. topicName: "arn:aws:sns:us-east-2:123456:123-my-topic" eventTypes: - - all # Or workflow, node, task. Or "*" + - all # Or workflow, node, task. Or "*" # Cloud events are used to send events (unprocessed, as Admin see them) in cloud event format to # an SNS topic (or gcp equivalent) @@ -883,7 +883,7 @@ cloud_events: # writing to fifo sns topics. topicName: "arn:aws:sns:us-east-2:123456:123-my-topic" eventTypes: - - all # Or workflow, node, task. Or "*" + - all # Or workflow, node, task. Or "*" # -- Configuration for the Cluster resource manager component. This is an optional component, that enables automatic # cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain diff --git a/charts/flyte-deps/Chart.yaml b/charts/flyte-deps/Chart.yaml index ea84c798e77..471e3e87a5c 100644 --- a/charts/flyte-deps/Chart.yaml +++ b/charts/flyte-deps/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: flyte-deps description: A Helm chart for Flyte dependency type: application -version: v0.1.10 # VERSION +version: v0.1.10 # VERSION dependencies: - name: contour version: 7.10.1 diff --git a/charts/flyte/Chart.yaml b/charts/flyte/Chart.yaml index daed727185a..60e6c8a1df1 100644 --- a/charts/flyte/Chart.yaml +++ b/charts/flyte/Chart.yaml @@ -2,12 +2,12 @@ apiVersion: v2 name: flyte description: A Helm chart for Flyte Sandbox type: application -version: v0.1.10 # VERSION +version: v0.1.10 # VERSION dependencies: - name: flyte-core alias: flyte - version: v0.1.10 # VERSION - repository: file://../flyte-core # REPOSITORY + version: v0.1.10 # VERSION + repository: file://../flyte-core # REPOSITORY - name: contour version: 7.10.1 repository: https://charts.bitnami.com/bitnami diff --git a/charts/flyte/values.yaml b/charts/flyte/values.yaml index 2f19498dd48..d8bf56ccfa3 100755 --- a/charts/flyte/values.yaml +++ b/charts/flyte/values.yaml @@ -1,4 +1,3 @@ ---- # --------------------------------------------------------------------- # --------------------------------------------------------------------- # Core System settings # This section consists of Core components of Flyte and their deployment @@ -14,9 +13,9 @@ flyte: replicaCount: 1 image: # -- Docker image for Flyteadmin deployment - repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE + repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE # -- Docker image tag - tag: v1.11.0 # FLYTEADMIN_TAG + tag: v1.11.0 # FLYTEADMIN_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables @@ -82,9 +81,9 @@ flyte: flytescheduler: image: # -- Docker image for Flytescheduler deployment - repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE + repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.11.0 # FLYTESCHEDULER_TAG + tag: v1.11.0 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -127,9 +126,9 @@ flyte: replicaCount: 1 image: # -- Docker image for Datacatalog deployment - repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE + repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.11.0 # DATACATALOG_TAG + tag: v1.11.0 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -176,9 +175,9 @@ flyte: manager: false image: # -- Docker image for Flytepropeller deployment - repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE + repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE # -- Docker image tag - tag: v1.11.0 # FLYTEPROPELLER_TAG + tag: v1.11.0 # FLYTEPROPELLER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment @@ -221,9 +220,9 @@ flyte: replicaCount: 1 image: # -- Docker image for Flyteconsole deployment - repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE + repository: cr.flyte.org/flyteorg/flyteconsole # FLYTECONSOLE_IMAGE # -- Docker image tag - tag: v1.10.3 # FLYTECONSOLE_TAG + tag: v1.10.3 # FLYTECONSOLE_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flyteconsole deployment @@ -471,7 +470,7 @@ flyte: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/charts/flyteagent/Chart.yaml b/charts/flyteagent/Chart.yaml index 33c2ec4b023..b78df49878c 100644 --- a/charts/flyteagent/Chart.yaml +++ b/charts/flyteagent/Chart.yaml @@ -2,4 +2,4 @@ apiVersion: v2 name: flyteagent description: A Helm chart for Flyte agent type: application -version: v0.1.10 # VERSION +version: v0.1.10 # VERSION diff --git a/charts/flyteagent/values.yaml b/charts/flyteagent/values.yaml index 266ec9c0eb7..3b6b252aecf 100755 --- a/charts/flyteagent/values.yaml +++ b/charts/flyteagent/values.yaml @@ -23,7 +23,7 @@ image: # -- Docker image for flyteagent deployment repository: ghcr.io/flyteorg/flyteagent # -- Docker image tag - tag: 1.10.8b4 # FLYTEAGENT_TAG + tag: 1.10.8b4 # FLYTEAGENT_TAG # -- Docker image pull policy pullPolicy: IfNotPresent ports: diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index da45fdc06ee..a74f840058d 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: U0tNSVV0aUwzZzYxNVZnVQ== + haSharedSecret: cXlqVDl3WXZzQkdNakZYMQ== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: e0d4db2f1f52d2e4d16959b463e9470d657899ab22db5d8eb2fbc605cdcda0a2 + checksum/secret: e8771c5d0e150ac22e8f1e40a0d9bcd0ebe566f4d103895b57453c2265a1eb3f labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index d0872c7a63b..c451e945e5b 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: bmNtdzJkQ0l2Rm5BS3VZSg== + haSharedSecret: RUcxZW8xZ1JDUzE1YWZ3cw== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: b1ca10c95becb2e7214c9ece8101acc322ecde650f1e70bdb1bbb37323c948f6 + checksum/secret: b811e69f9269eac2e23e99932ddee4f60da5e159b77380a2f172d53015ffce9d labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index 828a53d4ef3..a9b6cd0abd0 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: S2hmRkxmVjdKZUpoTkR6OQ== + haSharedSecret: b01yOG9RRDI2SzNUNFdaRg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 446da9acad72026ea6684e9f0cf3e47f8a458fa10d29d61ac3f8bc509afc7c11 + checksum/secret: 13d5e62f1350c3c3a73b6a42bf1ec1ee492fe4d34ed050b66907368f5cd502ce labels: app: docker-registry release: flyte-sandbox diff --git a/script/release.sh b/script/release.sh index c6773e30407..faa397ce9be 100755 --- a/script/release.sh +++ b/script/release.sh @@ -9,23 +9,23 @@ FLYTEKIT_TAG=$(curl --silent "https://api.github.com/repos/flyteorg/flytekit/rel FLYTECONSOLE_TAG=v1.10.3 # bump latest release of flyte component in helm -sed -i "s,tag:[^P]*# FLYTEADMIN_TAG,tag: ${VERSION} # FLYTEADMIN_TAG," ./charts/flyte/values.yaml -sed -i "s,tag:[^P]*# FLYTEADMIN_TAG,tag: ${VERSION} # FLYTEADMIN_TAG," ./charts/flyte-core/values.yaml +sed -i "s,tag:[^P]*# FLYTEADMIN_TAG,tag: ${VERSION} # FLYTEADMIN_TAG," ./charts/flyte/values.yaml +sed -i "s,tag:[^P]*# FLYTEADMIN_TAG,tag: ${VERSION} # FLYTEADMIN_TAG," ./charts/flyte-core/values.yaml -sed -i "s,tag:[^P]*# FLYTESCHEDULER_TAG,tag: ${VERSION} # FLYTESCHEDULER_TAG," ./charts/flyte/values.yaml -sed -i "s,tag:[^P]*# FLYTESCHEDULER_TAG,tag: ${VERSION} # FLYTESCHEDULER_TAG," ./charts/flyte-core/values.yaml +sed -i "s,tag:[^P]*# FLYTESCHEDULER_TAG,tag: ${VERSION} # FLYTESCHEDULER_TAG," ./charts/flyte/values.yaml +sed -i "s,tag:[^P]*# FLYTESCHEDULER_TAG,tag: ${VERSION} # FLYTESCHEDULER_TAG," ./charts/flyte-core/values.yaml -sed -i "s,tag:[^P]*# DATACATALOG_TAG,tag: ${VERSION} # DATACATALOG_TAG," ./charts/flyte/values.yaml -sed -i "s,tag:[^P]*# DATACATALOG_TAG,tag: ${VERSION} # DATACATALOG_TAG," ./charts/flyte-core/values.yaml +sed -i "s,tag:[^P]*# DATACATALOG_TAG,tag: ${VERSION} # DATACATALOG_TAG," ./charts/flyte/values.yaml +sed -i "s,tag:[^P]*# DATACATALOG_TAG,tag: ${VERSION} # DATACATALOG_TAG," ./charts/flyte-core/values.yaml -sed -i "s,tag:[^P]*# FLYTECONSOLE_TAG,tag: ${FLYTECONSOLE_TAG} # FLYTECONSOLE_TAG," ./charts/flyte/values.yaml -sed -i "s,tag:[^P]*# FLYTECONSOLE_TAG,tag: ${FLYTECONSOLE_TAG} # FLYTECONSOLE_TAG," ./charts/flyte-core/values.yaml +sed -i "s,tag:[^P]*# FLYTECONSOLE_TAG,tag: ${FLYTECONSOLE_TAG} # FLYTECONSOLE_TAG," ./charts/flyte/values.yaml +sed -i "s,tag:[^P]*# FLYTECONSOLE_TAG,tag: ${FLYTECONSOLE_TAG} # FLYTECONSOLE_TAG," ./charts/flyte-core/values.yaml -sed -i "s,tag:[^P]*# FLYTEPROPELLER_TAG,tag: ${VERSION} # FLYTEPROPELLER_TAG," ./charts/flyte/values.yaml -sed -i "s,tag:[^P]*# FLYTEPROPELLER_TAG,tag: ${VERSION} # FLYTEPROPELLER_TAG," ./charts/flyte-core/values.yaml +sed -i "s,tag:[^P]*# FLYTEPROPELLER_TAG,tag: ${VERSION} # FLYTEPROPELLER_TAG," ./charts/flyte/values.yaml +sed -i "s,tag:[^P]*# FLYTEPROPELLER_TAG,tag: ${VERSION} # FLYTEPROPELLER_TAG," ./charts/flyte-core/values.yaml -sed -i "s,image:[^P]*# FLYTECOPILOT_IMAGE,image: cr.flyte.org/flyteorg/flytecopilot:${VERSION} # FLYTECOPILOT_IMAGE," ./charts/flyte/values.yaml -sed -i "s,image:[^P]*# FLYTECOPILOT_IMAGE,image: cr.flyte.org/flyteorg/flytecopilot:${VERSION} # FLYTECOPILOT_IMAGE," ./charts/flyte-core/values.yaml -sed -i "s,tag:[^P]*# FLYTECOPILOT_TAG,tag: ${VERSION} # FLYTECOPILOT_TAG," ./charts/flyte-binary/values.yaml +sed -i "s,image:[^P]*# FLYTECOPILOT_IMAGE,image: cr.flyte.org/flyteorg/flytecopilot:${VERSION} # FLYTECOPILOT_IMAGE," ./charts/flyte/values.yaml +sed -i "s,image:[^P]*# FLYTECOPILOT_IMAGE,image: cr.flyte.org/flyteorg/flytecopilot:${VERSION} # FLYTECOPILOT_IMAGE," ./charts/flyte-core/values.yaml +sed -i "s,tag:[^P]*# FLYTECOPILOT_TAG,tag: ${VERSION} # FLYTECOPILOT_TAG," ./charts/flyte-binary/values.yaml -sed -i "s,tag:[^P]*# FLYTEAGENT_TAG,tag: ${FLYTEKIT_TAG} # FLYTEAGENT_TAG," ./charts/flyteagent/values.yaml +sed -i "s,tag:[^P]*# FLYTEAGENT_TAG,tag: ${FLYTEKIT_TAG} # FLYTEAGENT_TAG," ./charts/flyteagent/values.yaml From 5fc57fa5968c1c10747d6fe57ae7159f5b09fa52 Mon Sep 17 00:00:00 2001 From: Flyte Bot Date: Thu, 21 Mar 2024 13:21:26 -0700 Subject: [PATCH 100/107] Update Flyte components (#5093) Signed-off-by: Flyte-Bot --- CHANGELOG/CHANGELOG-v1.11.1-b0.md | 2 ++ charts/flyte-binary/README.md | 2 +- charts/flyte-binary/values.yaml | 2 +- charts/flyte-core/README.md | 12 +++---- charts/flyte-core/values.yaml | 10 +++--- charts/flyte/README.md | 16 ++++----- charts/flyte/values.yaml | 10 +++--- charts/flyteagent/README.md | 2 +- charts/flyteagent/values.yaml | 2 +- .../agent/flyte_agent_helm_generated.yaml | 2 +- .../flyte_aws_scheduler_helm_generated.yaml | 30 ++++++++-------- .../flyte_helm_controlplane_generated.yaml | 20 +++++------ .../eks/flyte_helm_dataplane_generated.yaml | 14 ++++---- deployment/eks/flyte_helm_generated.yaml | 34 +++++++++---------- .../flyte_helm_controlplane_generated.yaml | 20 +++++------ .../gcp/flyte_helm_dataplane_generated.yaml | 14 ++++---- deployment/gcp/flyte_helm_generated.yaml | 34 +++++++++---------- .../flyte_sandbox_binary_helm_generated.yaml | 4 +-- deployment/sandbox/flyte_helm_generated.yaml | 34 +++++++++---------- .../manifests/complete-agent.yaml | 10 +++--- .../sandbox-bundled/manifests/complete.yaml | 8 ++--- docker/sandbox-bundled/manifests/dev.yaml | 4 +-- docs/conf.py | 2 +- .../generated/flyteadmin_config.rst | 22 ++++++++++++ .../generated/flytepropeller_config.rst | 22 ++++++++++++ .../generated/scheduler_config.rst | 22 ++++++++++++ 26 files changed, 211 insertions(+), 143 deletions(-) create mode 100644 CHANGELOG/CHANGELOG-v1.11.1-b0.md diff --git a/CHANGELOG/CHANGELOG-v1.11.1-b0.md b/CHANGELOG/CHANGELOG-v1.11.1-b0.md new file mode 100644 index 00000000000..beac63ff0ff --- /dev/null +++ b/CHANGELOG/CHANGELOG-v1.11.1-b0.md @@ -0,0 +1,2 @@ +# Flyte v1.11.1-b0 + diff --git a/charts/flyte-binary/README.md b/charts/flyte-binary/README.md index fcd66f3186b..99aa1c40b13 100644 --- a/charts/flyte-binary/README.md +++ b/charts/flyte-binary/README.md @@ -42,7 +42,7 @@ Chart for basic single Flyte executable deployment | configuration.auth.oidc.clientId | string | `""` | | | configuration.auth.oidc.clientSecret | string | `""` | | | configuration.co-pilot.image.repository | string | `"cr.flyte.org/flyteorg/flytecopilot"` | | -| configuration.co-pilot.image.tag | string | `"v1.11.0"` | | +| configuration.co-pilot.image.tag | string | `"v1.11.0-b0"` | | | configuration.database.dbname | string | `"flyte"` | | | configuration.database.host | string | `"127.0.0.1"` | | | configuration.database.options | string | `"sslmode=disable"` | | diff --git a/charts/flyte-binary/values.yaml b/charts/flyte-binary/values.yaml index 7d16c553780..f3f8e79528d 100644 --- a/charts/flyte-binary/values.yaml +++ b/charts/flyte-binary/values.yaml @@ -159,7 +159,7 @@ configuration: # repository CoPilot sidecar image repository repository: cr.flyte.org/flyteorg/flytecopilot # FLYTECOPILOT_IMAGE # tag CoPilot sidecar image tag - tag: v1.11.0 # FLYTECOPILOT_TAG + tag: v1.11.0-b0 # FLYTECOPILOT_TAG # agentService Flyte Agent configuration agentService: defaultAgent: diff --git a/charts/flyte-core/README.md b/charts/flyte-core/README.md index 5a18f902cba..33901da7be3 100644 --- a/charts/flyte-core/README.md +++ b/charts/flyte-core/README.md @@ -95,8 +95,8 @@ helm install gateway bitnami/contour -n flyte | configmap.clusters.clusterConfigs | list | `[]` | | | configmap.clusters.labelClusterMap | object | `{}` | | | configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | configmap.core | object | `{"manager":{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"},"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | configmap.core.manager | object | `{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/manager/config#Config). | | configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | @@ -130,7 +130,7 @@ helm install gateway bitnami/contour -n flyte | datacatalog.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| datacatalog.image.tag | string | `"v1.11.0"` | Docker image tag | +| datacatalog.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | datacatalog.podEnv | object | `{}` | Additional Datacatalog container environment variables | @@ -165,7 +165,7 @@ helm install gateway bitnami/contour -n flyte | flyteadmin.extraArgs | object | `{}` | Appends extra command line arguments to the serve command | | flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | | | flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyteadmin.image.tag | string | `"v1.11.0"` | | +| flyteadmin.image.tag | string | `"v1.11.0-b0"` | | | flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -226,7 +226,7 @@ helm install gateway bitnami/contour -n flyte | flytepropeller.extraArgs | object | `{}` | Appends extra command line arguments to the main command | | flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | | | flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flytepropeller.image.tag | string | `"v1.11.0"` | | +| flytepropeller.image.tag | string | `"v1.11.0-b0"` | | | flytepropeller.manager | bool | `false` | | | flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | @@ -256,7 +256,7 @@ helm install gateway bitnami/contour -n flyte | flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flytescheduler.image.tag | string | `"v1.11.0"` | Docker image tag | +| flytescheduler.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flytescheduler.podEnv | object | `{}` | Additional Flytescheduler container environment variables | diff --git a/charts/flyte-core/values.yaml b/charts/flyte-core/values.yaml index 5498664f679..b8d4431e78b 100755 --- a/charts/flyte-core/values.yaml +++ b/charts/flyte-core/values.yaml @@ -16,7 +16,7 @@ flyteadmin: image: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE - tag: v1.11.0 # FLYTEADMIN_TAG + tag: v1.11.0-b0 # FLYTEADMIN_TAG pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables # @@ -142,7 +142,7 @@ flytescheduler: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.11.0 # FLYTESCHEDULER_TAG + tag: v1.11.0-b0 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -208,7 +208,7 @@ datacatalog: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.11.0 # DATACATALOG_TAG + tag: v1.11.0-b0 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -296,7 +296,7 @@ flytepropeller: image: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE - tag: v1.11.0 # FLYTEPROPELLER_TAG + tag: v1.11.0-b0 # FLYTEPROPELLER_TAG pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment resources: @@ -731,7 +731,7 @@ configmap: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/charts/flyte/README.md b/charts/flyte/README.md index ab32ec9460a..4accdb711c6 100644 --- a/charts/flyte/README.md +++ b/charts/flyte/README.md @@ -71,7 +71,7 @@ helm upgrade -f values-sandbox.yaml flyte . | contour.tolerations | list | `[]` | tolerations for Contour deployment | | daskoperator | object | `{"enabled":false}` | Optional: Dask Plugin using the Dask Operator | | daskoperator.enabled | bool | `false` | - enable or disable the dask operator deployment installation | -| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.11.0"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.3"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.11.0"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.11.0"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | +| flyte | object | `{"cluster_resource_manager":{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]},"common":{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{"nginx.ingress.kubernetes.io/app-root":"/console"},"enabled":true,"host":"","separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":true}},"configmap":{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}},"datacatalog":{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v1.11.0-b0"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"db":{"admin":{"database":{"dbname":"flyteadmin","host":"postgres","port":5432,"username":"postgres"}},"datacatalog":{"database":{"dbname":"datacatalog","host":"postgres","port":5432,"username":"postgres"}}},"deployRedoc":true,"flyteadmin":{"additionalVolumeMounts":[],"additionalVolumes":[],"affinity":{},"configPath":"/etc/flyte/config/*.yaml","env":[],"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteadmin","tag":"v1.11.0-b0"},"initialProjects":["flytesnacks","flytetester","flyteexamples"],"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"loadBalancerSourceRanges":[],"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flyteconsole":{"affinity":{},"ga":{"enabled":true,"tracking_id":"G-0QW4DJWJ20"},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v1.10.3"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"275Mi"},"requests":{"cpu":"10m","memory":"250Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]},"flytepropeller":{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v1.11.0-b0"},"manager":false,"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"flytescheduler":{"affinity":{},"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytescheduler","tag":"v1.11.0-b0"},"nodeSelector":{},"podAnnotations":{},"resources":{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"secrets":{},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]},"tolerations":[]},"storage":{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"},"webhook":{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":[]}},"workflow_notifications":{"config":{},"enabled":false},"workflow_scheduler":{"enabled":true,"type":"native"}}` | ------------------------------------------------------------------- Core System settings This section consists of Core components of Flyte and their deployment settings. This includes FlyteAdmin service, Datacatalog, FlytePropeller and Flyteconsole | | flyte.cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"service_account_name":"flyteadmin","templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | | flyte.cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}}]}],"refresh":"5m","refreshInterval":"5m","standaloneDeployment":false,"templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. | | flyte.cluster_resource_manager.config.cluster_resources.standaloneDeployment | bool | `false` | Starts the cluster resource manager in standalone mode with requisite auth credentials to call flyteadmin service endpoints | @@ -91,15 +91,15 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.common.ingress.separateGrpcIngressAnnotations | object | `{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"}` | - Extra Ingress annotations applied only to the GRPC ingress. Only makes sense if `separateGrpcIngress` is enabled. | | flyte.common.ingress.tls | object | `{"enabled":false}` | - TLS Settings | | flyte.common.ingress.webpackHMR | bool | `true` | - Enable or disable HMR route to flyteconsole. This is useful only for frontend development. | -| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | +| flyte.configmap | object | `{"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"bigquery_query_job_task":"agent-service","container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-from-configmaps":[],"default-env-from-secrets":[],"default-env-vars":[{"FLYTE_AWS_ENDPOINT":"http://minio.flyte:9000"},{"FLYTE_AWS_ACCESS_KEY_ID":"minio"},{"FLYTE_AWS_SECRET_ACCESS_KEY":"miniostorage"}],"default-memory":"200Mi"}}},"logger":{"logger":{"level":5,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":null,"type":"noop"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":true,"kubernetes-template-uri":"http://localhost:30082/#/log/{{ \"{{\" }} .namespace {{ \"}}\" }}/{{ \"{{\" }} .podName {{ \"}}\" }}/pod?namespace={{ \"{{\" }} .namespace {{ \"}}\" }}"}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"200Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"1Gi","storage":"20Mi"}}}}` | ----------------------------------------------------------------- CONFIGMAPS SETTINGS | | flyte.configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":2,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration | | flyte.configmap.adminServer.auth | object | `{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}}` | Authentication configuration | | flyte.configmap.adminServer.server.security.secure | bool | `false` | Controls whether to serve requests over SSL/TLS. | | flyte.configmap.adminServer.server.security.useAuth | bool | `false` | Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication. | | flyte.configmap.catalog | object | `{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}}` | Catalog Client configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/catalog#Config) Additional advanced Catalog configuration [here](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/catalog#Config) | | flyte.configmap.console | object | `{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config"}` | Configuration for Flyte console UI | -| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | -| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | +| flyte.configmap.copilot | object | `{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}}}}` | Copilot configuration | +| flyte.configmap.copilot.plugins.k8s.co-pilot | object | `{"image":"cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0","name":"flyte-copilot-","start-timeout":"30s"}` | Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) | | flyte.configmap.core | object | `{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration | | flyte.configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). | | flyte.configmap.datacatalogServer | object | `{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config | @@ -120,7 +120,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.datacatalog.configPath | string | `"/etc/datacatalog/config/*.yaml"` | Default regex string for searching configuration files | | flyte.datacatalog.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| flyte.datacatalog.image.tag | string | `"v1.11.0"` | Docker image tag | +| flyte.datacatalog.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flyte.datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | flyte.datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | flyte.datacatalog.replicaCount | int | `1` | Replicas count for Datacatalog deployment | @@ -136,7 +136,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flyteadmin.env | list | `[]` | Additional flyteadmin container environment variables e.g. SendGrid's API key - name: SENDGRID_API_KEY value: "" e.g. secret environment variable (you can combine it with .additionalVolumes): - name: SENDGRID_API_KEY valueFrom: secretKeyRef: name: sendgrid-secret key: api_key | | flyte.flyteadmin.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flyteadmin.image.repository | string | `"cr.flyte.org/flyteorg/flyteadmin"` | Docker image for Flyteadmin deployment | -| flyte.flyteadmin.image.tag | string | `"v1.11.0"` | Docker image tag | +| flyte.flyteadmin.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flyte.flyteadmin.initialProjects | list | `["flytesnacks","flytetester","flyteexamples"]` | Initial projects to create | | flyte.flyteadmin.nodeSelector | object | `{}` | nodeSelector for Flyteadmin deployment | | flyte.flyteadmin.podAnnotations | object | `{}` | Annotations for Flyteadmin pods | @@ -162,7 +162,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytepropeller.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flyte.flytepropeller.image.tag | string | `"v1.11.0"` | Docker image tag | +| flyte.flytepropeller.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flyte.flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flyte.flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | | flyte.flytepropeller.replicaCount | int | `1` | Replicas count for Flytepropeller deployment | @@ -176,7 +176,7 @@ helm upgrade -f values-sandbox.yaml flyte . | flyte.flytescheduler.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | | flyte.flytescheduler.image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | flyte.flytescheduler.image.repository | string | `"cr.flyte.org/flyteorg/flytescheduler"` | Docker image for Flytescheduler deployment | -| flyte.flytescheduler.image.tag | string | `"v1.11.0"` | Docker image tag | +| flyte.flytescheduler.image.tag | string | `"v1.11.0-b0"` | Docker image tag | | flyte.flytescheduler.nodeSelector | object | `{}` | nodeSelector for Flytescheduler deployment | | flyte.flytescheduler.podAnnotations | object | `{}` | Annotations for Flytescheduler pods | | flyte.flytescheduler.resources | object | `{"limits":{"cpu":"250m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}}` | Default resources requests and limits for Flytescheduler deployment | diff --git a/charts/flyte/values.yaml b/charts/flyte/values.yaml index d8bf56ccfa3..71069a73181 100755 --- a/charts/flyte/values.yaml +++ b/charts/flyte/values.yaml @@ -15,7 +15,7 @@ flyte: # -- Docker image for Flyteadmin deployment repository: cr.flyte.org/flyteorg/flyteadmin # FLYTEADMIN_IMAGE # -- Docker image tag - tag: v1.11.0 # FLYTEADMIN_TAG + tag: v1.11.0-b0 # FLYTEADMIN_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Additional flyteadmin container environment variables @@ -83,7 +83,7 @@ flyte: # -- Docker image for Flytescheduler deployment repository: cr.flyte.org/flyteorg/flytescheduler # FLYTESCHEDULER_IMAGE # -- Docker image tag - tag: v1.11.0 # FLYTESCHEDULER_TAG + tag: v1.11.0-b0 # FLYTESCHEDULER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytescheduler deployment @@ -128,7 +128,7 @@ flyte: # -- Docker image for Datacatalog deployment repository: cr.flyte.org/flyteorg/datacatalog # DATACATALOG_IMAGE # -- Docker image tag - tag: v1.11.0 # DATACATALOG_TAG + tag: v1.11.0-b0 # DATACATALOG_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Datacatalog deployment @@ -177,7 +177,7 @@ flyte: # -- Docker image for Flytepropeller deployment repository: cr.flyte.org/flyteorg/flytepropeller # FLYTEPROPELLER_IMAGE # -- Docker image tag - tag: v1.11.0 # FLYTEPROPELLER_TAG + tag: v1.11.0-b0 # FLYTEPROPELLER_TAG # -- Docker image pull policy pullPolicy: IfNotPresent # -- Default resources requests and limits for Flytepropeller deployment @@ -470,7 +470,7 @@ flyte: # -- Structure documented [here](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.28/go/tasks/pluginmachinery/flytek8s/config#FlyteCoPilotConfig) co-pilot: name: flyte-copilot- - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 # FLYTECOPILOT_IMAGE + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 # FLYTECOPILOT_IMAGE start-timeout: 30s # -- Core propeller configuration diff --git a/charts/flyteagent/README.md b/charts/flyteagent/README.md index d8627166733..18cc0a9ef97 100644 --- a/charts/flyteagent/README.md +++ b/charts/flyteagent/README.md @@ -20,7 +20,7 @@ A Helm chart for Flyte agent | fullnameOverride | string | `""` | | | image.pullPolicy | string | `"IfNotPresent"` | Docker image pull policy | | image.repository | string | `"ghcr.io/flyteorg/flyteagent"` | Docker image for flyteagent deployment | -| image.tag | string | `"1.10.8b4"` | Docker image tag | +| image.tag | string | `"1.11.0"` | Docker image tag | | nameOverride | string | `""` | | | nodeSelector | object | `{}` | nodeSelector for flyteagent deployment | | podAnnotations | object | `{}` | Annotations for flyteagent pods | diff --git a/charts/flyteagent/values.yaml b/charts/flyteagent/values.yaml index 3b6b252aecf..ecfc08e40ae 100755 --- a/charts/flyteagent/values.yaml +++ b/charts/flyteagent/values.yaml @@ -23,7 +23,7 @@ image: # -- Docker image for flyteagent deployment repository: ghcr.io/flyteorg/flyteagent # -- Docker image tag - tag: 1.10.8b4 # FLYTEAGENT_TAG + tag: 1.11.0 # FLYTEAGENT_TAG # -- Docker image pull policy pullPolicy: IfNotPresent ports: diff --git a/deployment/agent/flyte_agent_helm_generated.yaml b/deployment/agent/flyte_agent_helm_generated.yaml index 4e78b991ac3..01f6f4fa86b 100644 --- a/deployment/agent/flyte_agent_helm_generated.yaml +++ b/deployment/agent/flyte_agent_helm_generated.yaml @@ -78,7 +78,7 @@ spec: - pyflyte - serve - agent - image: "ghcr.io/flyteorg/flyteagent:1.10.8b4" + image: "ghcr.io/flyteorg/flyteagent:1.11.0" imagePullPolicy: "IfNotPresent" name: flyteagent volumeMounts: diff --git a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml index a5b9e0081fc..3ae88a9b8fc 100644 --- a/deployment/eks/flyte_aws_scheduler_helm_generated.yaml +++ b/deployment/eks/flyte_aws_scheduler_helm_generated.yaml @@ -429,7 +429,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -869,7 +869,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -890,7 +890,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -908,7 +908,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -925,7 +925,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -952,7 +952,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1057,7 +1057,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1187,7 +1187,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1205,7 +1205,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1268,7 +1268,7 @@ spec: template: metadata: annotations: - configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" + configChecksum: "6b3ace0186a0b36f4d87ebd8ef0b7114608b9ad0b63d9c1af3bb84d4d2da857" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1294,7 +1294,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1348,9 +1348,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" + configChecksum: "6b3ace0186a0b36f4d87ebd8ef0b7114608b9ad0b63d9c1af3bb84d4d2da857" spec: securityContext: fsGroup: 65534 @@ -1362,7 +1362,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1389,7 +1389,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_helm_controlplane_generated.yaml b/deployment/eks/flyte_helm_controlplane_generated.yaml index 9e813c42753..1ae984cf69f 100644 --- a/deployment/eks/flyte_helm_controlplane_generated.yaml +++ b/deployment/eks/flyte_helm_controlplane_generated.yaml @@ -574,7 +574,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -595,7 +595,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -613,7 +613,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -630,7 +630,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -657,7 +657,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -762,7 +762,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -892,7 +892,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -910,7 +910,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -993,7 +993,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1013,7 +1013,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/eks/flyte_helm_dataplane_generated.yaml b/deployment/eks/flyte_helm_dataplane_generated.yaml index 865b72da243..cada767856f 100644 --- a/deployment/eks/flyte_helm_dataplane_generated.yaml +++ b/deployment/eks/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -428,7 +428,7 @@ spec: template: metadata: annotations: - configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" + configChecksum: "6b3ace0186a0b36f4d87ebd8ef0b7114608b9ad0b63d9c1af3bb84d4d2da857" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -454,7 +454,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -508,9 +508,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" + configChecksum: "6b3ace0186a0b36f4d87ebd8ef0b7114608b9ad0b63d9c1af3bb84d4d2da857" spec: securityContext: fsGroup: 65534 @@ -522,7 +522,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -549,7 +549,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index bb0b5e966c3..1d4c79874fd 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -460,7 +460,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -900,7 +900,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -921,7 +921,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -939,7 +939,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -956,7 +956,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -983,7 +983,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1088,7 +1088,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1218,7 +1218,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1236,7 +1236,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1319,7 +1319,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1339,7 +1339,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1398,7 +1398,7 @@ spec: template: metadata: annotations: - configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" + configChecksum: "6b3ace0186a0b36f4d87ebd8ef0b7114608b9ad0b63d9c1af3bb84d4d2da857" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1424,7 +1424,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1478,9 +1478,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "64a0a51a13929685cf9e74444b216f25bfc9dbdb542d6d491db345519111197" + configChecksum: "6b3ace0186a0b36f4d87ebd8ef0b7114608b9ad0b63d9c1af3bb84d4d2da857" spec: securityContext: fsGroup: 65534 @@ -1492,7 +1492,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1519,7 +1519,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_controlplane_generated.yaml b/deployment/gcp/flyte_helm_controlplane_generated.yaml index 281fcf87a1e..0f1ebf13814 100644 --- a/deployment/gcp/flyte_helm_controlplane_generated.yaml +++ b/deployment/gcp/flyte_helm_controlplane_generated.yaml @@ -589,7 +589,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -610,7 +610,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -628,7 +628,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -645,7 +645,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -672,7 +672,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -777,7 +777,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -907,7 +907,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -925,7 +925,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1008,7 +1008,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1028,7 +1028,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: diff --git a/deployment/gcp/flyte_helm_dataplane_generated.yaml b/deployment/gcp/flyte_helm_dataplane_generated.yaml index a0349f78c41..86c6f100146 100644 --- a/deployment/gcp/flyte_helm_dataplane_generated.yaml +++ b/deployment/gcp/flyte_helm_dataplane_generated.yaml @@ -94,7 +94,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -436,7 +436,7 @@ spec: template: metadata: annotations: - configChecksum: "cc8b6585fb0703724b6418fea14f52893fdd6913d5aee513867e84d66e23d72" + configChecksum: "264352d1a15b63cdaca7bb2eb3a63e415d89e01d75a81be6afba718c241a441" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -461,7 +461,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -515,9 +515,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "cc8b6585fb0703724b6418fea14f52893fdd6913d5aee513867e84d66e23d72" + configChecksum: "264352d1a15b63cdaca7bb2eb3a63e415d89e01d75a81be6afba718c241a441" spec: securityContext: fsGroup: 65534 @@ -529,7 +529,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -556,7 +556,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index 165712c85d3..ac527c47a7b 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -473,7 +473,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -923,7 +923,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -944,7 +944,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -962,7 +962,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -979,7 +979,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -1006,7 +1006,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -1111,7 +1111,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -1241,7 +1241,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -1259,7 +1259,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -1342,7 +1342,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -1362,7 +1362,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -1421,7 +1421,7 @@ spec: template: metadata: annotations: - configChecksum: "cc8b6585fb0703724b6418fea14f52893fdd6913d5aee513867e84d66e23d72" + configChecksum: "264352d1a15b63cdaca7bb2eb3a63e415d89e01d75a81be6afba718c241a441" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -1446,7 +1446,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -1500,9 +1500,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "cc8b6585fb0703724b6418fea14f52893fdd6913d5aee513867e84d66e23d72" + configChecksum: "264352d1a15b63cdaca7bb2eb3a63e415d89e01d75a81be6afba718c241a441" spec: securityContext: fsGroup: 65534 @@ -1514,7 +1514,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -1541,7 +1541,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml index b3b130b3a04..2d93910a5c4 100644 --- a/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml +++ b/deployment/sandbox-binary/flyte_sandbox_binary_helm_generated.yaml @@ -116,7 +116,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0" k8s-array: logs: config: @@ -358,7 +358,7 @@ spec: app.kubernetes.io/instance: flyte app.kubernetes.io/component: flyte-binary annotations: - checksum/configuration: 8d7f2229ae4d345e158f32f67615656d9a8d7590cef80a4c1b6f8eb333fcd896 + checksum/configuration: 882c31ec18bdac7aa4f1a9057f9e549b1307b60b5d76839dfb6bc526958bee57 checksum/configuration-secret: d5d93f4e67780b21593dc3799f0f6682aab0765e708e4020939975d14d44f929 checksum/cluster-resource-templates: 7dfa59f3d447e9c099b8f8ffad3af466fecbc9cf9f8c97295d9634254a55d4ae spec: diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index 12705dd8ac8..80d94504778 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -585,7 +585,7 @@ data: plugins: k8s: co-pilot: - image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0 + image: cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0 name: flyte-copilot- start-timeout: 30s core.yaml: | @@ -6707,7 +6707,7 @@ spec: - /etc/flyte/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations securityContext: @@ -6727,7 +6727,7 @@ spec: - flytesnacks - flytetester - flyteexamples - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: seed-projects securityContext: @@ -6744,7 +6744,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - sync - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources securityContext: @@ -6760,7 +6760,7 @@ spec: - mountPath: /etc/secrets/ name: admin-secrets - name: generate-secrets - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: ["/bin/sh", "-c"] args: @@ -6787,7 +6787,7 @@ spec: - --config - /etc/flyte/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flyteadmin ports: @@ -6882,7 +6882,7 @@ spec: - /etc/flyte/config/*.yaml - clusterresource - run - image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0" + image: "cr.flyte.org/flyteorg/flyteadmin:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: sync-cluster-resources volumeMounts: @@ -7007,7 +7007,7 @@ spec: - /etc/datacatalog/config/*.yaml - migrate - run - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: run-migrations volumeMounts: @@ -7024,7 +7024,7 @@ spec: - --config - /etc/datacatalog/config/*.yaml - serve - image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0" + image: "cr.flyte.org/flyteorg/datacatalog:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: datacatalog ports: @@ -7097,7 +7097,7 @@ spec: - precheck - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler-check securityContext: @@ -7116,7 +7116,7 @@ spec: - run - --config - /etc/flyte/config/*.yaml - image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0" + image: "cr.flyte.org/flyteorg/flytescheduler:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytescheduler ports: @@ -7172,7 +7172,7 @@ spec: template: metadata: annotations: - configChecksum: "3500386bee9f0763c6f14460f607cea4e6e24be4224a806c0673db71e13e287" + configChecksum: "08d1c92032d4eeaac312ca0cf651f72aa1f214a2de469b49b93ecdfb129b8af" labels: app.kubernetes.io/name: flytepropeller app.kubernetes.io/instance: flyte @@ -7197,7 +7197,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" name: flytepropeller ports: @@ -7244,9 +7244,9 @@ spec: labels: app: flyte-pod-webhook app.kubernetes.io/name: flyte-pod-webhook - app.kubernetes.io/version: v1.11.0 + app.kubernetes.io/version: v1.11.0-b0 annotations: - configChecksum: "3500386bee9f0763c6f14460f607cea4e6e24be4224a806c0673db71e13e287" + configChecksum: "08d1c92032d4eeaac312ca0cf651f72aa1f214a2de469b49b93ecdfb129b8af" spec: securityContext: fsGroup: 65534 @@ -7258,7 +7258,7 @@ spec: serviceAccountName: flyte-pod-webhook initContainers: - name: generate-secrets - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller @@ -7285,7 +7285,7 @@ spec: mountPath: /etc/flyte/config containers: - name: webhook - image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0" + image: "cr.flyte.org/flyteorg/flytepropeller:v1.11.0-b0" imagePullPolicy: "IfNotPresent" command: - flytepropeller diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index a74f840058d..1779389183e 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -468,7 +468,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0" k8s-array: logs: config: @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: cXlqVDl3WXZzQkdNakZYMQ== + haSharedSecret: allvNmJ4bUxTcVo2Z0lObw== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1246,7 +1246,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: 2aaf6d07c01e76a5e97b2c5aa1e581ee7e2e9929d3690e71eceb6b0bdfb7b646 + checksum/configuration: 9ab632fe7ac69bcf63d6965a44986a05e23798beda4a3175d1601e61057a9832 checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: e8771c5d0e150ac22e8f1e40a0d9bcd0ebe566f4d103895b57453c2265a1eb3f + checksum/secret: 7e2eea3d2c604971389c67f39e7d553b6329ea37af5254119febf0a125e55e64 labels: app: docker-registry release: flyte-sandbox @@ -1755,7 +1755,7 @@ spec: value: minio - name: FLYTE_AWS_SECRET_ACCESS_KEY value: miniostorage - image: ghcr.io/flyteorg/flyteagent:1.10.8b4 + image: ghcr.io/flyteorg/flyteagent:1.11.0 imagePullPolicy: IfNotPresent name: flyteagent ports: diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index c451e945e5b..05e557ad962 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -457,7 +457,7 @@ data: stackdriver-enabled: false k8s: co-pilot: - image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0" + image: "cr.flyte.org/flyteorg/flytecopilot:v1.11.0-b0" k8s-array: logs: config: @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: RUcxZW8xZ1JDUzE1YWZ3cw== + haSharedSecret: d2Fqb3NpcVh5a1JUaGR4Vg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1194,7 +1194,7 @@ spec: metadata: annotations: checksum/cluster-resource-templates: 6fd9b172465e3089fcc59f738b92b8dc4d8939360c19de8ee65f68b0e7422035 - checksum/configuration: cd9caceec9bd91bdf1eedb10aee289a53786fc70df8c3f4951881abb9f937c49 + checksum/configuration: 11cd65708fd872839c6e561e84c30e045567486f06757f4549c69cc22aea5697 checksum/configuration-secret: 09216ffaa3d29e14f88b1f30af580d02a2a5e014de4d750b7f275cc07ed4e914 labels: app.kubernetes.io/component: flyte-binary @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: b811e69f9269eac2e23e99932ddee4f60da5e159b77380a2f172d53015ffce9d + checksum/secret: 087a8de1fb03ba21b367df5aa3a47d77ec2acbdeb9b6d2fa66c0caa04c304246 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index a9b6cd0abd0..71a34f8bed1 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: b01yOG9RRDI2SzNUNFdaRg== + haSharedSecret: WGtoeXNQV2FrV0lGeWJMeg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 13d5e62f1350c3c3a73b6a42bf1ec1ee492fe4d34ed050b66907368f5cd502ce + checksum/secret: 63c7525d8f4e16616715d985d9581611a83fe095e65b51cc25c61f9009f595da labels: app: docker-registry release: flyte-sandbox diff --git a/docs/conf.py b/docs/conf.py index cca6cc266ae..eca3047f258 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -35,7 +35,7 @@ # The short X.Y version version = "" # The full version, including alpha/beta/rc tags -release = "1.11.0" +release = "1.11.1-b0" # -- General configuration --------------------------------------------------- diff --git a/docs/deployment/configuration/generated/flyteadmin_config.rst b/docs/deployment/configuration/generated/flyteadmin_config.rst index e8464b1512c..0a698b635ad 100644 --- a/docs/deployment/configuration/generated/flyteadmin_config.rst +++ b/docs/deployment/configuration/generated/flyteadmin_config.rst @@ -2609,6 +2609,8 @@ k8s (`config.K8sPluginConfig`_) default-annotations: cluster-autoscaler.kubernetes.io/safe-to-evict: "false" default-cpus: "1" + default-env-from-configmaps: null + default-env-from-secrets: null default-env-vars: null default-env-vars-from-env: null default-labels: null @@ -2764,6 +2766,26 @@ default-env-vars-from-env (map[string]string) null +default-env-from-configmaps ([]string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +**Default Value**: + +.. code-block:: yaml + + null + + +default-env-from-secrets ([]string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +**Default Value**: + +.. code-block:: yaml + + null + + default-cpus (`resource.Quantity`_) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" diff --git a/docs/deployment/configuration/generated/flytepropeller_config.rst b/docs/deployment/configuration/generated/flytepropeller_config.rst index f9473afffda..4d26b0578c3 100644 --- a/docs/deployment/configuration/generated/flytepropeller_config.rst +++ b/docs/deployment/configuration/generated/flytepropeller_config.rst @@ -1015,6 +1015,8 @@ k8s (`config.K8sPluginConfig`_) default-annotations: cluster-autoscaler.kubernetes.io/safe-to-evict: "false" default-cpus: "1" + default-env-from-configmaps: null + default-env-from-secrets: null default-env-vars: null default-env-vars-from-env: null default-labels: null @@ -2188,6 +2190,26 @@ default-env-vars-from-env (map[string]string) null +default-env-from-configmaps ([]string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +**Default Value**: + +.. code-block:: yaml + + null + + +default-env-from-secrets ([]string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +**Default Value**: + +.. code-block:: yaml + + null + + default-cpus (`resource.Quantity`_) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" diff --git a/docs/deployment/configuration/generated/scheduler_config.rst b/docs/deployment/configuration/generated/scheduler_config.rst index 47e4ee870ad..1735f3db7b4 100644 --- a/docs/deployment/configuration/generated/scheduler_config.rst +++ b/docs/deployment/configuration/generated/scheduler_config.rst @@ -2609,6 +2609,8 @@ k8s (`config.K8sPluginConfig`_) default-annotations: cluster-autoscaler.kubernetes.io/safe-to-evict: "false" default-cpus: "1" + default-env-from-configmaps: null + default-env-from-secrets: null default-env-vars: null default-env-vars-from-env: null default-labels: null @@ -2764,6 +2766,26 @@ default-env-vars-from-env (map[string]string) null +default-env-from-configmaps ([]string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +**Default Value**: + +.. code-block:: yaml + + null + + +default-env-from-secrets ([]string) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +**Default Value**: + +.. code-block:: yaml + + null + + default-cpus (`resource.Quantity`_) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" From c13d601a79a13c495c912ecedd53bac91e6a3372 Mon Sep 17 00:00:00 2001 From: Samhita Alla Date: Fri, 22 Mar 2024 11:47:10 +0530 Subject: [PATCH 101/107] sagemaker agent backend setup documentation (#5064) * sagemaker agent backend setup doc Signed-off-by: Samhita Alla * update requirement and remove debugging code Signed-off-by: Samhita Alla * add python-kubernetes Signed-off-by: Samhita Alla * incorporate suggestions by Nikki Signed-off-by: Samhita Alla --------- Signed-off-by: Samhita Alla --- docs/_ext/import_projects.py | 24 +- docs/core_use_cases/machine_learning.md | 5 +- docs/deployment/agents/index.md | 3 + .../deployment/agents/sagemaker_inference.rst | 126 + docs/flyte_fundamentals/extending_flyte.md | 2 +- docs/flyte_fundamentals/optimizing_tasks.md | 3 +- docs/user_guide/basics/workflows.md | 5 +- docs/user_guide/extending/backend_plugins.md | 7 +- .../configuring_logging_links_in_the_ui.md | 4 +- monodocs-environment.lock.yaml | 4887 ++++++++++------- monodocs-environment.yaml | 3 +- 11 files changed, 2955 insertions(+), 2114 deletions(-) create mode 100644 docs/deployment/agents/sagemaker_inference.rst diff --git a/docs/_ext/import_projects.py b/docs/_ext/import_projects.py index 1e32aa0d8ce..da551ae3748 100644 --- a/docs/_ext/import_projects.py +++ b/docs/_ext/import_projects.py @@ -84,10 +84,11 @@ def parse(self): def update_sys_path_for_flytekit(import_project_config: ImportProjectsConfig): # create flytekit/_version.py file manually - with open(f"{import_project_config.flytekit_api_dir}/flytekit/_version.py", "w") as f: + with open( + f"{import_project_config.flytekit_api_dir}/flytekit/_version.py", "w" + ) as f: f.write(f'__version__ = "dev"') - # add flytekit to python path flytekit_dir = os.path.abspath(import_project_config.flytekit_api_dir) flytekit_src_dir = os.path.abspath(os.path.join(flytekit_dir, "flytekit")) @@ -151,7 +152,7 @@ def import_projects(app: Sphinx, config: Config): if repo: tags = sorted( [t for t in repo.tags if re.match(VERSION_PATTERN, t.name)], - key=lambda t: t.commit.committed_datetime + key=lambda t: t.commit.committed_datetime, ) if not tags or import_projects_config.dev_build: # If dev_build is specified or the tags don't exist just use the @@ -187,7 +188,9 @@ def import_projects(app: Sphinx, config: Config): update_sys_path_for_flytekit(import_projects_config) # add functions to clean up source and docstring refs - for i, (patt, repl) in enumerate(import_projects_config.source_regex_mapping.items()): + for i, (patt, repl) in enumerate( + import_projects_config.source_regex_mapping.items() + ): app.connect( "source-read", partial(replace_refs_in_files, patt, repl), @@ -200,7 +203,9 @@ def import_projects(app: Sphinx, config: Config): ) -def replace_refs_in_files(patt: str, repl: str, app: Sphinx, docname: str, source: List[str]): +def replace_refs_in_files( + patt: str, repl: str, app: Sphinx, docname: str, source: List[str] +): text = source[0] if re.search(patt, text): @@ -211,7 +216,14 @@ def replace_refs_in_files(patt: str, repl: str, app: Sphinx, docname: str, sourc def replace_refs_in_docstrings( - patt: str, repl: str, app: Sphinx, what: str, name: str, obj: str, options: dict, lines: List[str], + patt: str, + repl: str, + app: Sphinx, + what: str, + name: str, + obj: str, + options: dict, + lines: List[str], ): replace = {} for i, text in enumerate(lines): diff --git a/docs/core_use_cases/machine_learning.md b/docs/core_use_cases/machine_learning.md index 78925af26f5..489b8b05f95 100644 --- a/docs/core_use_cases/machine_learning.md +++ b/docs/core_use_cases/machine_learning.md @@ -108,9 +108,8 @@ There are many ways to extend your workloads: [Ray Tune](https://docs.ray.io/en/latest/tune/index.html) for hyperparameter optimization, all orchestrated by Flyte as ephemerally-provisioned Ray clusters. * - **📦 Ephemeral Cluster Resources** - - Use the {ref}`MPI Operator `, {ref}`Sagemaker `, - {ref}`Kubeflow Tensorflow `, {ref}`Kubeflow Pytorch` - and {doc}`more <_tags/DistributedComputing>` to do distributed training. + - Use the {ref}`MPI Operator `, {ref}`Kubeflow Tensorflow `, + {ref}`Kubeflow Pytorch` and {doc}`more <_tags/DistributedComputing>` to do distributed training. * - **🔎 Experiment Tracking** - Auto-capture training logs with the {py:func}`~flytekitplugins.mlflow.mlflow_autolog` decorator, which can be viewed as Flyte Decks with `@task(disable_decks=False)`. diff --git a/docs/deployment/agents/index.md b/docs/deployment/agents/index.md index 7c7f3db92d8..c79a5ecd532 100644 --- a/docs/deployment/agents/index.md +++ b/docs/deployment/agents/index.md @@ -27,6 +27,8 @@ If you are using a managed deployment of Flyte, you will need to contact your de - Configuring your Flyte deployment for the MMCloud agent. * - {ref}`Sensor Agent ` - Configuring your Flyte deployment for the sensor agent. +* - {ref}`SageMaker Inference ` + - Deploy models and create, as well as trigger inference endpoints on SageMaker. ``` ```{toctree} @@ -39,6 +41,7 @@ chatgpt databricks bigquery mmcloud +sagemaker_inference sensor snowflake ``` diff --git a/docs/deployment/agents/sagemaker_inference.rst b/docs/deployment/agents/sagemaker_inference.rst new file mode 100644 index 00000000000..be9188d8734 --- /dev/null +++ b/docs/deployment/agents/sagemaker_inference.rst @@ -0,0 +1,126 @@ +.. _deployment-agent-setup-sagemaker-inference: + +SageMaker Inference Agent +========================= + +This guide provides an overview of how to set up the SageMaker inference agent in your Flyte deployment. + +Specify agent configuration +--------------------------- + +.. tabs:: + + .. group-tab:: Flyte binary + + Edit the relevant YAML file to specify the agent. + + .. code-block:: bash + + kubectl edit configmap flyte-sandbox-config -n flyte + + .. code-block:: yaml + :emphasize-lines: 7,11-12,16-17 + + tasks: + task-plugins: + enabled-plugins: + - container + - sidecar + - k8s-array + - agent-service + default-for-task-types: + - container: container + - container_array: k8s-array + - boto: agent-service + - sagemaker-endpoint: agent-service + plugins: + agent-service: + supportedTaskTypes: + - boto + - sagemaker-endpoint + + .. group-tab:: Flyte core + + Create a file named ``values-override.yaml`` and add the following configuration to it: + + .. code-block:: yaml + :emphasize-lines: 9,14-15,19-20 + + configmap: + enabled_plugins: + tasks: + task-plugins: + enabled-plugins: + - container + - sidecar + - k8s-array + - agent-service + default-for-task-types: + container: container + sidecar: sidecar + container_array: k8s-array + boto: agent-service + sagemaker-endpoint: agent-service + plugins: + agent-service: + supportedTaskTypes: + - boto + - sagemaker-endpoint + +Add the AWS credentials +----------------------- + +1. Install the flyteagent pod using helm: + +.. code-block:: + + helm repo add flyteorg https://flyteorg.github.io/flyte + helm install flyteagent flyteorg/flyteagent --namespace flyte + +2. Get the base64 value of your AWS credentials: + +.. code-block:: + + echo -n "" | base64 + +3. Edit the flyteagent secret: + +.. code-block:: bash + + kubectl edit secret flyteagent -n flyte + +.. code-block:: yaml + :emphasize-lines: 3-5 + + apiVersion: v1 + data: + aws-access-key: + aws-secret-access-key: + aws-session-token: + kind: Secret + +Upgrade the Flyte Helm release +------------------------------ + +.. tabs:: + + .. group-tab:: Flyte binary + + .. code-block:: bash + + helm upgrade flyteorg/flyte-binary -n --values + + Replace ```` with the name of your release (e.g., ``flyte-backend``), + ```` with the name of your namespace (e.g., ``flyte``), + and ```` with the name of your YAML file. + + .. group-tab:: Flyte core + + .. code-block:: bash + + helm upgrade flyte/flyte-core -n --values values-override.yaml + + Replace ```` with the name of your release (e.g., ``flyte``) + and ```` with the name of your namespace (e.g., ``flyte``). + +You can refer to the documentation `here `__. diff --git a/docs/flyte_fundamentals/extending_flyte.md b/docs/flyte_fundamentals/extending_flyte.md index 4977e6ae25c..7f0d7e475b9 100644 --- a/docs/flyte_fundamentals/extending_flyte.md +++ b/docs/flyte_fundamentals/extending_flyte.md @@ -151,7 +151,7 @@ many more ways to customize Flyte tasks: in other languages outside of the `flytekit` SDK language. * - {ref}`Backend Plugins ` - These tasks plugins require implementing a backend plugin to leverage - external services like Sagemaker, Snowflake, BigQuery, etc. + external services like SageMaker, Snowflake, BigQuery, etc. ``` ## What's next? diff --git a/docs/flyte_fundamentals/optimizing_tasks.md b/docs/flyte_fundamentals/optimizing_tasks.md index 00c27c881f3..9f3124e2700 100644 --- a/docs/flyte_fundamentals/optimizing_tasks.md +++ b/docs/flyte_fundamentals/optimizing_tasks.md @@ -242,8 +242,7 @@ at the most granular level of your workflow! When this task is executed on a Flyte cluster, it automatically provisions all of the resources that you need. In this case, that need is distributed training, but Flyte also provides integrations for {ref}`Spark `, -{ref}`Ray `, {ref}`MPI `, {ref}`Sagemaker `, -{ref}`Snowflake `, and more. +{ref}`Ray `, {ref}`MPI `, {ref}`Snowflake `, and more. Even though Flyte itself is a powerful compute engine and orchestrator for data engineering, machine learning, and analytics, perhaps you have existing diff --git a/docs/user_guide/basics/workflows.md b/docs/user_guide/basics/workflows.md index 1f750c9da8c..d5f46be04ef 100644 --- a/docs/user_guide/basics/workflows.md +++ b/docs/user_guide/basics/workflows.md @@ -29,7 +29,7 @@ Workflows link multiple tasks together. They can be written as Python functions, but it's important to distinguish tasks and workflows. A task's body executes at run-time on a Kubernetes cluster, in a Query Engine like BigQuery, -or on hosted services like AWS Batch or Sagemaker. +or on hosted services like AWS Batch or SageMaker. In contrast, a workflow's body doesn't perform computations; it's used to structure tasks. A workflow's body executes at registration time, during the workflow's registration process. @@ -116,6 +116,7 @@ if __name__ == "__main__": +++ {"lines_to_next_cell": 0} To run the workflow locally, you can use the following `pyflyte run` command: + ``` pyflyte run \ https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/workflow.py \ @@ -124,6 +125,7 @@ pyflyte run \ If you want to run it remotely on the Flyte cluster, simply add the `--remote flag` to the `pyflyte run` command: + ``` pyflyte run --remote \ https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/workflow.py \ @@ -138,6 +140,7 @@ However, {ref}`executing an individual task ` independent without the confines of a workflow, offers a convenient approach for iterating on task logic effortlessly. ## Use `partial` to provide default arguments to tasks + You can use the {py:func}`functools.partial` function to assign default or constant values to the parameters of your tasks. ```{code-cell} diff --git a/docs/user_guide/extending/backend_plugins.md b/docs/user_guide/extending/backend_plugins.md index 876ef8019e9..bbee56ea46b 100644 --- a/docs/user_guide/extending/backend_plugins.md +++ b/docs/user_guide/extending/backend_plugins.md @@ -30,15 +30,15 @@ Flyte. To recap, here are a few examples of why you would want to implement a backend plugin: 1. We want to add a new capability to the Flyte Platform, for example we might want to: - - Talk to a new service like AWS Sagemaker, Snowflake, Redshift, Athena, BigQuery, etc. + - Talk to a new service like AWS SageMaker, Snowflake, Redshift, Athena, BigQuery, etc. - Orchestrate a set of containers in a new way like Spark, Flink, Distributed training on Kubernetes (usually using a Kubernetes operator). - Use a new container orchestration engine like AWS Batch/ECS, Hashicorp' Nomad - Use a completely new runtime like AWS Lambda, KNative, etc. -3. You want to retain the capability to update the plugin implementation and roll +2. You want to retain the capability to update the plugin implementation and roll out new changes and fixes without affecting the users code or requiring them to update versions of their plugins. -4. You want the same plugin to be accessible across multiple language SDK's. +3. You want the same plugin to be accessible across multiple language SDK's. ```{note} Talking to a new service can be done using flytekit extensions and usually is the better way to get started. But, once matured, most of these extensions are better to be migrated to the backend. For the rest of the cases, it is possible to extend flytekit to achieve these scenarios, but this is less desirable, because of the associated overhead of first launching a container that launches these jobs downstream. @@ -85,6 +85,7 @@ The backend plugin is where the actual logic of the execution is implemented. Th 1. [Kubernetes operator Plugin](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.26/go/tasks/pluginmachinery/k8s#Plugin): The demo in the video below shows two examples of K8s backend plugins: flytekit `Athena` & `Spark`, and Flyte K8s `Pod` & `Spark`. ```{youtube} oK2RGQuP94k + ``` 2. **A Web API plugin:** [Async](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.26/go/tasks/pluginmachinery/webapi#AsyncPlugin) or [Sync](https://pkg.go.dev/github.com/lyft/flyteplugins@v0.5.26/go/tasks/pluginmachinery/webapi#SyncPlugin). diff --git a/docs/user_guide/productionizing/configuring_logging_links_in_the_ui.md b/docs/user_guide/productionizing/configuring_logging_links_in_the_ui.md index 57502a8c773..3091e1bc829 100644 --- a/docs/user_guide/productionizing/configuring_logging_links_in_the_ui.md +++ b/docs/user_guide/productionizing/configuring_logging_links_in_the_ui.md @@ -105,7 +105,7 @@ Flytepropeller pod would be created as: ::: This code snippet will output two logs per task that use the log plugin. -However, not all task types use the log plugin; for example, the SageMaker plugin uses the log output provided by Sagemaker, and the Snowflake plugin will use a link to the snowflake console. +However, not all task types use the log plugin; for example, the Snowflake plugin will use a link to the Snowflake console. ## Datadog integration @@ -128,7 +128,7 @@ If you're using environment variables, use the following config: DD_LOGS_ENABLED: "false" DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL: "true" DD_LOGS_CONFIG_K8S_CONTAINER_USE_FILE: "true" -DD_CONTAINER_EXCLUDE_LOGS: "name:datadog-agent" # This is to avoid tracking logs produced by the datadog agent itself +DD_CONTAINER_EXCLUDE_LOGS: "name:datadog-agent" # This is to avoid tracking logs produced by the datadog agent itself ``` :::{warning} diff --git a/monodocs-environment.lock.yaml b/monodocs-environment.lock.yaml index 9348bb40f66..d6e0f711def 100644 --- a/monodocs-environment.lock.yaml +++ b/monodocs-environment.lock.yaml @@ -5,7 +5,7 @@ # available, unless you explicitly update the lock file. # # Install this environment as "YOURENV" with: -# conda-lock install -n YOURENV --file monodocs-environment.lock.yaml +# conda-lock install -n YOURENV monodocs-environment.lock.yaml # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile monodocs-environment.lock.yaml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: @@ -13,8 +13,8 @@ version: 1 metadata: content_hash: - linux-64: d7f2c35c010c56be614943ce1c7e2871212c591ee4953bc98af94615065ae822 - osx-arm64: 69cc7e73f7010c435bc8ef17121afd80cfadb5b3aa1df21d7850a6fd04bbff8e + linux-64: 32d4de5273d85a0237eda3bf606d0faaff506dac029d80b303bdf7ed5245ad2a + osx-arm64: e58daa2c17c4401600ecf9a4e1039741eb1d186d902acfad0e7f254968ee3732 channels: - url: conda-forge used_env_vars: [] @@ -93,11 +93,11 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' - requests: '>=2.0.0' - pyjwt: '>=1.0.0' cryptography: '>=1.1.0' + pyjwt: '>=1.0.0' + python: '>=3.6' python-dateutil: '>=2.1.0' + requests: '>=2.0.0' url: https://conda.anaconda.org/conda-forge/noarch/adal-1.2.7-pyhd8ed1ab_0.tar.bz2 hash: md5: 1a0f134d22bad81e93f1e130b35afb35 @@ -105,75 +105,75 @@ package: category: main optional: false - name: adlfs - version: 2023.10.0 + version: 2024.2.0 manager: conda platform: linux-64 dependencies: aiohttp: '>=3.7.0' - azure-core: '>=1.23.1,<2.0' + azure-core: '>=1.23.1,<2.0.0' azure-datalake-store: '>=0.0.46,<0.1' azure-identity: '' azure-storage-blob: '>=12.12.0' - fsspec: '>=2023.9.0' + fsspec: '>=2023.12.0' python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/adlfs-2023.10.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/adlfs-2024.2.0-pyhd8ed1ab_1.conda hash: - md5: 8549734dc1b3c3a8d99d7993fe35996c - sha256: a2df0742c398cbb586e30d4be1ea35ead6f36ca0b6b69dead48503a0424abb69 + md5: 4dfa76ae23a7c27f4ccaf64945b71871 + sha256: b9ae4843b862ee69a1bfdcbb4604db817dd4f220d598fcbe64987c700b4e4cf4 category: main optional: false - name: adlfs - version: 2023.10.0 + version: 2024.2.0 manager: conda platform: osx-arm64 dependencies: - azure-identity: '' - python: '>=3.8' - azure-datalake-store: '>=0.0.46,<0.1' aiohttp: '>=3.7.0' + azure-core: '>=1.23.1,<2.0.0' + azure-datalake-store: '>=0.0.46,<0.1' + azure-identity: '' azure-storage-blob: '>=12.12.0' - azure-core: '>=1.23.1,<2.0' - fsspec: '>=2023.9.0' - url: https://conda.anaconda.org/conda-forge/noarch/adlfs-2023.10.0-pyhd8ed1ab_0.conda + fsspec: '>=2023.12.0' + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/adlfs-2024.2.0-pyhd8ed1ab_1.conda hash: - md5: 8549734dc1b3c3a8d99d7993fe35996c - sha256: a2df0742c398cbb586e30d4be1ea35ead6f36ca0b6b69dead48503a0424abb69 + md5: 4dfa76ae23a7c27f4ccaf64945b71871 + sha256: b9ae4843b862ee69a1bfdcbb4604db817dd4f220d598fcbe64987c700b4e4cf4 category: main optional: false - name: aiobotocore - version: 2.11.1 + version: 2.12.1 manager: conda platform: linux-64 dependencies: aiohttp: '>=3.7.4.post0,<4.0.0' aioitertools: '>=0.5.1,<1.0.0' - botocore: '>=1.33.2,<1.34.28' + botocore: '>=1.34.41,<1.34.52' python: '>=3.8' wrapt: '>=1.10.10,<2.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.11.1-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.12.1-pyhd8ed1ab_0.conda hash: - md5: 9f219d2e85fcb24a70961f1e4671e194 - sha256: 3a9b915c992ec4b7b95abdbc7392c4be38ee7a51983d11aabd1cbdad29bc33c6 + md5: 045560daef58c75a759c2638fbdb5c6a + sha256: e7d43681c7c2957b535aac2b3ad90013bcb39ed5514cea3cec52302f624d457a category: main optional: false - name: aiobotocore - version: 2.11.1 + version: 2.12.1 manager: conda platform: osx-arm64 dependencies: + aiohttp: '>=3.7.4.post0,<4.0.0' + aioitertools: '>=0.5.1,<1.0.0' + botocore: '>=1.34.41,<1.34.52' python: '>=3.8' wrapt: '>=1.10.10,<2.0.0' - aioitertools: '>=0.5.1,<1.0.0' - aiohttp: '>=3.7.4.post0,<4.0.0' - botocore: '>=1.33.2,<1.34.28' - url: https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.11.1-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.12.1-pyhd8ed1ab_0.conda hash: - md5: 9f219d2e85fcb24a70961f1e4671e194 - sha256: 3a9b915c992ec4b7b95abdbc7392c4be38ee7a51983d11aabd1cbdad29bc33c6 + md5: 045560daef58c75a759c2638fbdb5c6a + sha256: e7d43681c7c2957b535aac2b3ad90013bcb39ed5514cea3cec52302f624d457a category: main optional: false - name: aiohttp - version: 3.9.1 + version: 3.9.3 manager: conda platform: linux-64 dependencies: @@ -186,14 +186,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* yarl: '>=1.0,<2.0' - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.1-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.3-py39hd1e30aa_1.conda hash: - md5: c94f6e40db7d4828430ac0d8efe6a3d7 - sha256: 9ef3be4aed65d22f29a03a1bbc5b36ecab14b279efbe729241270831ff5f17b4 + md5: 437936123de28b9bf81d35b943170c4f + sha256: 0fcc6c976dc7dd7592cfd584cacbc121190513ddeff9d7ab386ef67146808c0c category: main optional: false - name: aiohttp - version: 3.9.1 + version: 3.9.3 manager: conda platform: osx-arm64 dependencies: @@ -205,10 +205,10 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* yarl: '>=1.0,<2.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.9.1-py39h17cfd9d_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.9.3-py39h17cfd9d_1.conda hash: - md5: f6fc543795790782846e7f69404293a1 - sha256: d43c95aa1a91ba65454ff246daca6697aaca17b674a179bd232c8e3360bb48c1 + md5: 5885b2faa60d882ce3f2362006ed0aa4 + sha256: b7cca849455a49c07de91c7285984dcfa8236d1dfd10039ad263d76702659326 category: main optional: false - name: aioitertools @@ -255,8 +255,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' frozenlist: '>=1.1.0' + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 hash: md5: d1e1eb7e21a9e2c74279d87dafb68156 @@ -344,13 +344,13 @@ package: manager: conda platform: osx-arm64 dependencies: - jinja2: '' - toolz: '' entrypoints: '' - python: '>=3.7' - pandas: '>=0.18' + jinja2: '' jsonschema: '>=3.0' numpy: '>=0.18' + pandas: '>=0.18' + python: '>=3.7' + toolz: '' url: https://conda.anaconda.org/conda-forge/noarch/altair-4.2.2-pyhd8ed1ab_0.conda hash: md5: afca9c6a93335c55bbc84072011e86dc @@ -375,8 +375,8 @@ package: manager: conda platform: osx-arm64 dependencies: - textwrap3: '' python: <3.12.0a0 + textwrap3: '' url: https://conda.anaconda.org/conda-forge/noarch/ansiwrap-0.8.4-py_0.tar.bz2 hash: md5: f09557e2a7cbd2470a2ab6353000cebd @@ -384,7 +384,7 @@ package: category: main optional: false - name: anyio - version: 4.2.0 + version: 4.3.0 manager: conda platform: linux-64 dependencies: @@ -393,26 +393,26 @@ package: python: '>=3.8' sniffio: '>=1.1' typing_extensions: '>=4.1' - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.2.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.3.0-pyhd8ed1ab_0.conda hash: - md5: 81ce9f3d9697b534d95118bb86c8a07e - sha256: 68458e31bdf3334f0e85f08767718ca9bc35bc2a79a6c503942ac99da98e510a + md5: ac95aa8ed65adfdde51132595c79aade + sha256: 86aca4a31c09f9b4dbdb332cd9a6a7dbab62ca734d3f832651c0ab59c6a7f52e category: main optional: false - name: anyio - version: 4.2.0 + version: 4.3.0 manager: conda platform: osx-arm64 dependencies: + exceptiongroup: '>=1.0.2' + idna: '>=2.8' python: '>=3.8' sniffio: '>=1.1' typing_extensions: '>=4.1' - idna: '>=2.8' - exceptiongroup: '>=1.0.2' - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.2.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.3.0-pyhd8ed1ab_0.conda hash: - md5: 81ce9f3d9697b534d95118bb86c8a07e - sha256: 68458e31bdf3334f0e85f08767718ca9bc35bc2a79a6c503942ac99da98e510a + md5: ac95aa8ed65adfdde51132595c79aade + sha256: 86aca4a31c09f9b4dbdb332cd9a6a7dbab62ca734d3f832651c0ab59c6a7f52e category: main optional: false - name: aplus @@ -440,15 +440,15 @@ package: category: main optional: false - name: appnope - version: 0.1.3 + version: 0.1.4 manager: conda platform: osx-arm64 dependencies: - python: '>=2.7' - url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.3-pyhd8ed1ab_0.tar.bz2 + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda hash: - md5: 54ac328d703bff191256ffa1183126d1 - sha256: b209a68ac55eb9ecad7042f0d4eedef5da924699f6cdf54ac1826869cfdae742 + md5: cc4834a9ee7cc49ce8d25177c47b10d8 + sha256: 45ae2d41f4a4dcf8707633d3d7ae376fc62f0c09b1d063c3049c3f6f8c911670 category: main optional: false - name: argon2-cffi @@ -470,9 +470,9 @@ package: manager: conda platform: osx-arm64 dependencies: - typing-extensions: '' argon2-cffi-bindings: '' python: '>=3.7' + typing-extensions: '' url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda hash: md5: 3afef1f55a1366b4d3b6a0d92e2235e4 @@ -561,31 +561,31 @@ package: category: main optional: false - name: astroid - version: 3.0.2 + version: 3.1.0 manager: conda platform: linux-64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* typing-extensions: '>=4.0.0' - url: https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.2-py39hf3d152e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/astroid-3.1.0-py39hf3d152e_0.conda hash: - md5: 49a16bb769befaa4ad2d06a92b802de1 - sha256: 9a03dce692e9c61b6cdedaeaab9d9cc931ae94caeb22a35a7545a978e2fb5693 + md5: 8206a0bfae8514702fba15aff6669f9b + sha256: b73df723ff5fc3446b8d416e10e99a48cff3be668113b94a36a3154e9b495c7d category: main optional: false - name: astroid - version: 3.0.2 + version: 3.1.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* typing-extensions: '>=4.0.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-3.0.2-py39h2804cbe_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-3.1.0-py39h2804cbe_0.conda hash: - md5: 165561609d96e5dfbb58ef495a37b084 - sha256: ff39f43cb1dda0738a3b83044e70b5d4e32cee816591e2603be9b9a078823219 + md5: 02d0db34f4814a73abe60e1973096ac9 + sha256: 22aa7b2152398278d2ab03c9be28b3fd330b3d589103bbfaf30c6785600d86b4 category: main optional: false - name: asttokens @@ -1138,7 +1138,7 @@ package: category: main optional: false - name: azure-core - version: 1.29.7 + version: 1.30.1 manager: conda platform: linux-64 dependencies: @@ -1146,29 +1146,29 @@ package: requests: '>=2.21.0' six: '>=1.11.0' typing-extensions: '>=4.6.0' - url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.29.7-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.30.1-pyhd8ed1ab_0.conda hash: - md5: 64d436079b1422e0483b0fbb326622a2 - sha256: 9a9ea330870d2655348fcb8c87a5fa421f3b6c3e347653131d7104f04daad5b8 + md5: 690b51eb2dbc703e8f9ba2f7ce298363 + sha256: c70bef5f28ee9efead58f5a4992e2b1dc120c66d24e4c9678356c123e031553f category: main optional: false - name: azure-core - version: 1.29.7 + version: 1.30.1 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - six: '>=1.11.0' requests: '>=2.21.0' + six: '>=1.11.0' typing-extensions: '>=4.6.0' - url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.29.7-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.30.1-pyhd8ed1ab_0.conda hash: - md5: 64d436079b1422e0483b0fbb326622a2 - sha256: 9a9ea330870d2655348fcb8c87a5fa421f3b6c3e347653131d7104f04daad5b8 + md5: 690b51eb2dbc703e8f9ba2f7ce298363 + sha256: c70bef5f28ee9efead58f5a4992e2b1dc120c66d24e4c9678356c123e031553f category: main optional: false - name: azure-core-cpp - version: 1.11.0 + version: 1.10.3 manager: conda platform: linux-64 dependencies: @@ -1176,24 +1176,24 @@ package: libgcc-ng: '>=12' libstdcxx-ng: '>=12' openssl: '>=3.2.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.11.0-h91d86a7_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.10.3-h91d86a7_1.conda hash: - md5: 0babb92c299af923d2cc98f88bbc6539 - sha256: d92e9aa5c8069bd3c934c8bbe8563d5e20f6cb7d688b493929d3d69d3e24934c + md5: c05a913b8203d14b4a91c54d57b52282 + sha256: 8740ccf0a22b13ddc7e6b0b577398fc3ec82aa8e020428aa13d69cf4c02bd0b6 category: main optional: false - name: azure-core-cpp - version: 1.11.0 + version: 1.10.3 manager: conda platform: osx-arm64 dependencies: libcurl: '>=8.5.0,<9.0a0' libcxx: '>=15' openssl: '>=3.2.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.11.0-he231e37_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.10.3-he231e37_1.conda hash: - md5: c2f26fc5c955973b823b5c6c514d9cea - sha256: a73be81148ad13abbd28c2fd9cf3d122016d14e1d14df66c106d5f0e387d4122 + md5: f51b5c4b5c19c5127f0649555d841aa7 + sha256: 94707b5b6ba45ff8de32c494d88b42dc1bde395f8bada49d4f0a170861149aec category: main optional: false - name: azure-datalake-store @@ -1216,10 +1216,10 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '' + adal: '>=0.4.2' cffi: '' + python: '' requests: '>=2.20.0' - adal: '>=0.4.2' url: https://conda.anaconda.org/conda-forge/noarch/azure-datalake-store-0.0.51-pyh9f0ad1d_0.tar.bz2 hash: md5: 0a6d240a3a8198dce8508a5409b4737e @@ -1247,11 +1247,11 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' - cryptography: '>=2.5' azure-core: <2.0.0,>=1.23.0 - msal_extensions: <2.0.0,>=0.3.0 + cryptography: '>=2.5' msal: <2.0.0,>=1.24.0 + msal_extensions: <2.0.0,>=0.3.0 + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/azure-identity-1.15.0-pyhd8ed1ab_0.conda hash: md5: d1ef208ae2a355e5bb9cdce337644ce9 @@ -1259,7 +1259,7 @@ package: category: main optional: false - name: azure-storage-blob - version: 12.19.0 + version: 12.19.1 manager: conda platform: linux-64 dependencies: @@ -1268,26 +1268,26 @@ package: isodate: '>=0.6.1' python: '>=3.7' typing-extensions: '>=4.3.0' - url: https://conda.anaconda.org/conda-forge/noarch/azure-storage-blob-12.19.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/azure-storage-blob-12.19.1-pyhd8ed1ab_0.conda hash: - md5: a3ea5120c342b4c956022340ace5c0f8 - sha256: 385c2a82fd5183d2cc791747f63d81e8bda11e068ee0e29e945fe7cdfe20a817 + md5: 57fdaf60fb362bb31c685b0f5e2b1f3a + sha256: fe43dcceec8cea87f1c5fcf3c155fb0e5c0c1a9d3656112ec4da232c053edaca category: main optional: false - name: azure-storage-blob - version: 12.19.0 + version: 12.19.1 manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' + azure-core: <2.0.0,>=1.28.0 cryptography: '>=2.1.4' - typing-extensions: '>=4.3.0' isodate: '>=0.6.1' - azure-core: <2.0.0,>=1.28.0 - url: https://conda.anaconda.org/conda-forge/noarch/azure-storage-blob-12.19.0-pyhd8ed1ab_0.conda + python: '>=3.7' + typing-extensions: '>=4.3.0' + url: https://conda.anaconda.org/conda-forge/noarch/azure-storage-blob-12.19.1-pyhd8ed1ab_0.conda hash: - md5: a3ea5120c342b4c956022340ace5c0f8 - sha256: 385c2a82fd5183d2cc791747f63d81e8bda11e068ee0e29e945fe7cdfe20a817 + md5: 57fdaf60fb362bb31c685b0f5e2b1f3a + sha256: fe43dcceec8cea87f1c5fcf3c155fb0e5c0c1a9d3656112ec4da232c053edaca category: main optional: false - name: azure-storage-blobs-cpp @@ -1295,8 +1295,8 @@ package: manager: conda platform: linux-64 dependencies: - azure-core-cpp: '>=1.10.3,<2.0a0' - azure-storage-common-cpp: '>=12.5.0,<13.0a0' + azure-core-cpp: '>=1.10.3,<1.10.4.0a0' + azure-storage-common-cpp: '>=12.5.0,<12.5.1.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.10.0-h00ab1b0_0.conda @@ -1311,8 +1311,8 @@ package: platform: osx-arm64 dependencies: __osx: '>=10.9' - azure-core-cpp: '>=1.10.3,<2.0a0' - azure-storage-common-cpp: '>=12.5.0,<13.0a0' + azure-core-cpp: '>=1.10.3,<1.10.4.0a0' + azure-storage-common-cpp: '>=12.5.0,<12.5.1.0a0' libcxx: '>=16.0.6' url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.10.0-h6aa02a4_0.conda hash: @@ -1325,15 +1325,15 @@ package: manager: conda platform: linux-64 dependencies: - azure-core-cpp: '>=1.11.0,<1.12.0a0' + azure-core-cpp: '>=1.10.3,<1.10.4.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' - libxml2: '>=2.12.4,<3.0a0' - openssl: '>=3.2.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.5.0-h94269e2_3.conda + libxml2: '>=2.12.1,<3.0.0a0' + openssl: '>=3.2.0,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.5.0-hb858b4b_2.conda hash: - md5: 2862966bef50f0f91f528f23b1270e52 - sha256: 839f9ea01ad1a6acbe9c55073ca7ef677809f8d366a8500dae50e0a91da71a0e + md5: 19f23b45d1925a9a8f701a3f6f9cce4f + sha256: 68e177ae983d63323b9bd1c1528776bb0e03d5d5aef0addba97aed4537e649a6 category: main optional: false - name: azure-storage-common-cpp @@ -1341,14 +1341,15 @@ package: manager: conda platform: osx-arm64 dependencies: - azure-core-cpp: '>=1.11.0,<1.12.0a0' - libcxx: '>=15' - libxml2: '>=2.12.4,<3.0a0' - openssl: '>=3.2.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.5.0-h09a5875_3.conda + __osx: '>=10.9' + azure-core-cpp: '>=1.10.3,<1.10.4.0a0' + libcxx: '>=16.0.6' + libxml2: '>=2.12.1,<3.0.0a0' + openssl: '>=3.2.0,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.5.0-h607ffeb_2.conda hash: - md5: 6f2341a820fab6c06cf0bd5ff086246c - sha256: e90f836807f253d448dfe59270ed1ed426ebbb9cde32db796d19698bd84baf68 + md5: 457b5b7cfda7d6bec46e95cbe6554bc5 + sha256: 1c020b792916289eec5b203e6cb301e80d434dc74de3ad9269ffa5b3fb9fa8c3 category: main optional: false - name: babel @@ -1370,9 +1371,9 @@ package: manager: conda platform: osx-arm64 dependencies: - setuptools: '' - pytz: '' python: '>=3.7' + pytz: '' + setuptools: '' url: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda hash: md5: 9669586875baeced8fc30c0826c3270e @@ -1450,8 +1451,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '' chardet: '' + python: '' url: https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-py_1.tar.bz2 hash: md5: a556fa60840fcb9dd739d186bfd252f7 @@ -1459,7 +1460,7 @@ package: category: main optional: false - name: black - version: 24.1.1 + version: 24.2.0 manager: conda platform: linux-64 dependencies: @@ -1472,14 +1473,14 @@ package: python_abi: 3.9.* tomli: '>=1.1.0' typing_extensions: '>=4.0.1' - url: https://conda.anaconda.org/conda-forge/linux-64/black-24.1.1-py39hf3d152e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/black-24.2.0-py39hf3d152e_0.conda hash: - md5: 582902a25ef7296b10c31d9ab863c984 - sha256: ae96483fafc4fd60322dea340d3668d787dc5fe4c9e3ea8f53729a4be46004dd + md5: 8060f38a7e9ced7e0ff82adfa5c01b65 + sha256: 71539f1f61a9a3c0ceceae79ed7460e901bf0294599dbcd170496e8671e5d3b8 category: main optional: false - name: black - version: 24.1.1 + version: 24.2.0 manager: conda platform: osx-arm64 dependencies: @@ -1492,10 +1493,10 @@ package: python_abi: 3.9.* tomli: '>=1.1.0' typing_extensions: '>=4.0.1' - url: https://conda.anaconda.org/conda-forge/osx-arm64/black-24.1.1-py39h2804cbe_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/black-24.2.0-py39h2804cbe_0.conda hash: - md5: 24664c80cbd8b600563e138017d5da78 - sha256: 3b540a94354f9c154bd708242c7fe8ba39c62a5499aa23d4826e4a0d776f041c + md5: ea3b2d9d3b5d32361056e8c0eed7153c + sha256: 07397f3989ee6c50538f9c98b8b5ab7256ded48bfebe513c7c831945f0689364 category: main optional: false - name: blake3 @@ -1548,11 +1549,11 @@ package: manager: conda platform: osx-arm64 dependencies: - setuptools: '' packaging: '' - webencodings: '' python: '>=3.6' + setuptools: '' six: '>=1.9.0' + webencodings: '' url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda hash: md5: 0ed9d7c0e9afa7c025807a9a8136ea3e @@ -1617,11 +1618,11 @@ package: category: main optional: false - name: bokeh - version: 3.3.4 + version: 3.4.0 manager: conda platform: linux-64 dependencies: - contourpy: '>=1' + contourpy: '>=1.2' jinja2: '>=2.9' numpy: '>=1.16' packaging: '>=16.8' @@ -1629,35 +1630,37 @@ package: pillow: '>=7.1.0' python: '>=3.9' pyyaml: '>=3.10' - tornado: '>=5.1' + tornado: '>=6.2' xyzservices: '>=2021.09.1' - url: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.3.4-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.4.0-pyhd8ed1ab_0.conda hash: - md5: 6cc92bba68b7bb5a3b180e96508f9480 - sha256: b9cf3b2d136ecdd32dfb97776c97ea92915caab759179ee94c6c1abbab806a62 + md5: eebbbfdb7eb885ddc751c790c3d0ad64 + sha256: a980687100456202425af0936185ef95c53309044e271daa60d2eeb009410f73 category: main optional: false - name: bokeh - version: 2.4.3 + version: 3.4.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' - pyyaml: '>=3.10' - tornado: '>=5.1' - typing_extensions: '>=3.10.0' - pillow: '>=7.1.0' - numpy: '>=1.11.3' - packaging: '>=16.8' + contourpy: '>=1.2' jinja2: '>=2.9' - url: https://conda.anaconda.org/conda-forge/noarch/bokeh-2.4.3-pyhd8ed1ab_3.tar.bz2 + numpy: '>=1.16' + packaging: '>=16.8' + pandas: '>=1.2' + pillow: '>=7.1.0' + python: '>=3.9' + pyyaml: '>=3.10' + tornado: '>=6.2' + xyzservices: '>=2021.09.1' + url: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.4.0-pyhd8ed1ab_0.conda hash: - md5: e4c6e6d99add99cede5328d811cacb21 - sha256: f37e33fb11ae76ff07ce726a3dbdf4cd26ffff1b52c126d2d2d136669d6b919f + md5: eebbbfdb7eb885ddc751c790c3d0ad64 + sha256: a980687100456202425af0936185ef95c53309044e271daa60d2eeb009410f73 category: main optional: false - name: botocore - version: 1.34.27 + version: 1.34.51 manager: conda platform: linux-64 dependencies: @@ -1665,25 +1668,25 @@ package: python: '>=3.8' python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.27-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.51-pyge38_1234567_0.conda hash: - md5: 43ecc8130f9581ce52eeb31eef7261e5 - sha256: 3526e91ae310efee035a5c458f87a80b2aafe0faa15eb1cf815b726e789999d5 + md5: 79fc60a0a40d6254f67da7ce274c30a8 + sha256: b264cf2547f0730a4c3efaa771533be790a76b35e3dd5f0c19cc7f7a6aad6151 category: main optional: false - name: botocore - version: 1.34.27 + version: 1.34.51 manager: conda platform: osx-arm64 dependencies: + jmespath: '>=0.7.1,<2.0.0' python: '>=3.8' python-dateutil: '>=2.1,<3.0.0' - jmespath: '>=0.7.1,<2.0.0' urllib3: '>=1.25.4,<1.27' - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.27-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.51-pyge38_1234567_0.conda hash: - md5: 43ecc8130f9581ce52eeb31eef7261e5 - sha256: 3526e91ae310efee035a5c458f87a80b2aafe0faa15eb1cf815b726e789999d5 + md5: 79fc60a0a40d6254f67da7ce274c30a8 + sha256: b264cf2547f0730a4c3efaa771533be790a76b35e3dd5f0c19cc7f7a6aad6151 category: main optional: false - name: branca @@ -1704,8 +1707,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' jinja2: '>=3' + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/branca-0.7.1-pyhd8ed1ab_0.conda hash: md5: 35fa1bfd27c4d4c3cd46501a9ca7bd78 @@ -1821,48 +1824,48 @@ package: category: main optional: false - name: c-ares - version: 1.26.0 + version: 1.27.0 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.26.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.27.0-hd590300_0.conda hash: - md5: a86d90025198fd411845fc245ebc06c8 - sha256: 3771589a91303710a59d1d40bbcdca43743969fe993ea576538ba375ac8ab0fa + md5: f6afff0e9ee08d2f1b897881a4f38cdb + sha256: 2a5866b19d28cb963fab291a62ff1c884291b9d6f59de14643e52f103e255749 category: main optional: false - name: c-ares - version: 1.26.0 + version: 1.27.0 manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.26.0-h93a5062_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.27.0-h93a5062_0.conda hash: - md5: 58b9187431de0a2ffebc907f4590e2e5 - sha256: 1dfdbac985a74a905f2bcf62f13ce758a8356e50d4b28ddbc2027df8580717d8 + md5: d3579ba506791b1f8f8a16cfc2885326 + sha256: a168e53ee462980cd78b324e055afdd00080ded378ca974969a0917eb4ae1ccb category: main optional: false - name: ca-certificates - version: 2023.11.17 + version: 2024.2.2 manager: conda platform: linux-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.11.17-hbcca054_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda hash: - md5: 01ffc8d36f9eba0ce0b3c1955fa780ee - sha256: fb4b9f4b7d885002db0b93e22f44b5b03791ef3d4efdc9d0662185a0faafd6b6 + md5: 2f4327a1cbe7f022401b236e915a5fef + sha256: 91d81bfecdbb142c15066df70cc952590ae8991670198f92c66b62019b251aeb category: main optional: false - name: ca-certificates - version: 2023.11.17 + version: 2024.2.2 manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2023.11.17-hf0a4a13_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.2.2-hf0a4a13_0.conda hash: - md5: c01da7c77cfcba2107174e25c1d47384 - sha256: 75f4762a55f7e9453a603c967d549bfa0a7a9669d502d103cb6fbf8c86d993c6 + md5: fb416a1795f18dcc5a038bc2dc54edf9 + sha256: 49bc3439816ac72d0c0e0f144b8cc870fdcc4adec2e861407ec818d8116b2204 category: main optional: false - name: cached-property @@ -1914,27 +1917,27 @@ package: category: main optional: false - name: cachetools - version: 5.3.2 + version: 5.3.3 manager: conda platform: linux-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.3-pyhd8ed1ab_0.conda hash: - md5: 185cc1bf1d5af90020292888a3c7eb5d - sha256: cb8a6688d5650e4546a5f3c5b825bfe3c82594f1f588a93817f1bdb23e74baad + md5: cd4c26c702a9bcdc70ff05b609ddacbe + sha256: 561b860cba68da76cab8c6504bb5bfb4756ecb2ec9f124d0c17e76caad4f6dfd category: main optional: false - name: cachetools - version: 5.3.2 + version: 5.3.3 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.3-pyhd8ed1ab_0.conda hash: - md5: 185cc1bf1d5af90020292888a3c7eb5d - sha256: cb8a6688d5650e4546a5f3c5b825bfe3c82594f1f588a93817f1bdb23e74baad + md5: cd4c26c702a9bcdc70ff05b609ddacbe + sha256: 561b860cba68da76cab8c6504bb5bfb4756ecb2ec9f124d0c17e76caad4f6dfd category: main optional: false - name: cairo @@ -1988,27 +1991,27 @@ package: category: main optional: false - name: certifi - version: 2023.11.17 + version: 2024.2.2 manager: conda platform: linux-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda hash: - md5: 2011bcf45376341dd1d690263fdbc789 - sha256: afa22b77128a812cb57bc707c297d926561bd225a3d9dd74205d87a3b2d14a96 + md5: 0876280e409658fc6f9e75d035960333 + sha256: f1faca020f988696e6b6ee47c82524c7806380b37cfdd1def32f92c326caca54 category: main optional: false - name: certifi - version: 2023.11.17 + version: 2024.2.2 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda hash: - md5: 2011bcf45376341dd1d690263fdbc789 - sha256: afa22b77128a812cb57bc707c297d926561bd225a3d9dd74205d87a3b2d14a96 + md5: 0876280e409658fc6f9e75d035960333 + sha256: f1faca020f988696e6b6ee47c82524c7806380b37cfdd1def32f92c326caca54 category: main optional: false - name: cffi @@ -2193,8 +2196,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '' click: '>=3.0' + python: '' url: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2 hash: md5: 4fd2c6b53934bd7d96d1f3fdaf99b79f @@ -2219,8 +2222,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: <4.0 click: '>=4.0' + python: <4.0 url: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2 hash: md5: a29b7c141d6b2de4bb67788a5f107734 @@ -2300,29 +2303,29 @@ package: category: main optional: false - name: comm - version: 0.2.1 + version: 0.2.2 manager: conda platform: linux-64 dependencies: python: '>=3.6' traitlets: '>=5.3' - url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda hash: - md5: f4385072f4909bc974f6675a36e76796 - sha256: bd90a200e6f7092a89f02c4800729a4a6d2b2de49d70a9706aeb083a635308c1 + md5: 948d84721b578d426294e17a02e24cbb + sha256: e923acf02708a8a0b591f3bce4bdc11c8e63b73198b99b35fe6cd96bfb6a0dbe category: main optional: false - name: comm - version: 0.2.1 + version: 0.2.2 manager: conda platform: osx-arm64 dependencies: python: '>=3.6' traitlets: '>=5.3' - url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda hash: - md5: f4385072f4909bc974f6675a36e76796 - sha256: bd90a200e6f7092a89f02c4800729a4a6d2b2de49d70a9706aeb083a635308c1 + md5: 948d84721b578d426294e17a02e24cbb + sha256: e923acf02708a8a0b591f3bce4bdc11c8e63b73198b99b35fe6cd96bfb6a0dbe category: main optional: false - name: commonmark @@ -2343,8 +2346,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '' future: '>=0.14.0' + python: '' url: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 hash: md5: 6aa0173c14befcd577ded130cf6f22f5 @@ -2352,27 +2355,27 @@ package: category: main optional: false - name: configparser - version: 5.3.0 + version: 6.0.1 manager: conda platform: linux-64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/configparser-5.3.0-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/configparser-6.0.1-pyhd8ed1ab_0.conda hash: - md5: c99fd5916160900dc5ff64204da99c4d - sha256: ce6ce9ee08437b46c284d52b076fb091cf6f2a9e12860d4a37546adbd5f53b28 + md5: 2a24e68637e51e2adf001e9d0af848b1 + sha256: e01107b458dd21f1915dcd9901f5ecc7d918a8157d9a9802020286ed83f9847e category: main optional: false - name: configparser - version: 5.3.0 + version: 6.0.1 manager: conda platform: osx-arm64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/configparser-5.3.0-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/configparser-6.0.1-pyhd8ed1ab_0.conda hash: - md5: c99fd5916160900dc5ff64204da99c4d - sha256: ce6ce9ee08437b46c284d52b076fb091cf6f2a9e12860d4a37546adbd5f53b28 + md5: 2a24e68637e51e2adf001e9d0af848b1 + sha256: e01107b458dd21f1915dcd9901f5ecc7d918a8157d9a9802020286ed83f9847e category: main optional: false - name: contourpy @@ -2408,7 +2411,7 @@ package: category: main optional: false - name: cookiecutter - version: 2.5.0 + version: 2.6.0 manager: conda platform: linux-64 dependencies: @@ -2421,89 +2424,131 @@ package: pyyaml: '>=5.3.1' requests: '>=2.23.0' rich: '' - url: https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.5.0-pyhca7485f_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhca7485f_0.conda hash: - md5: dd441f5f8ccf8d277ea2731b9523d341 - sha256: 7a58c9025e713e0227bfb9c8248cd40e116d84d17420e6ed23b916ee763230ee + md5: d6260b53b9db90017321af0b45cc00da + sha256: 5bed5805127757a4f03231eb7fe971cfe3c3411eeef036e670c41bfd8a42d91d category: main optional: false - name: cookiecutter - version: 2.5.0 + version: 2.6.0 manager: conda platform: osx-arm64 dependencies: - rich: '' arrow: '' + binaryornot: '>=0.4.4' + click: '>=7.0,<9.0.0' + jinja2: '>=2.7,<4.0.0' python: '>=3.7' + python-slugify: '>=4.0.0' pyyaml: '>=5.3.1' requests: '>=2.23.0' - python-slugify: '>=4.0.0' - binaryornot: '>=0.4.4' - jinja2: '>=2.7,<4.0.0' - click: '>=7.0,<9.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.5.0-pyhca7485f_0.conda + rich: '' + url: https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhca7485f_0.conda hash: - md5: dd441f5f8ccf8d277ea2731b9523d341 - sha256: 7a58c9025e713e0227bfb9c8248cd40e116d84d17420e6ed23b916ee763230ee + md5: d6260b53b9db90017321af0b45cc00da + sha256: 5bed5805127757a4f03231eb7fe971cfe3c3411eeef036e670c41bfd8a42d91d category: main optional: false - name: croniter - version: 2.0.1 + version: 2.0.2 manager: conda platform: linux-64 dependencies: python: '>=3.7' python-dateutil: '' pytz: '>2021.1' - url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.2-pyhd8ed1ab_0.conda hash: - md5: f67f52c1f555785b86c3bd8e5de4c66f - sha256: 0a39004b6e4ddff1a323432c0790d61a8885f35af9e60cc7e76ad8f6d43e3f34 + md5: 81e82a2922ee960cc5e324b0102174d0 + sha256: e235c57e6070f5d2b161f7b496d00cb9e75796c5234cf62aff9e04258302940e category: main optional: false - name: croniter - version: 2.0.1 + version: 2.0.2 manager: conda platform: osx-arm64 dependencies: - python-dateutil: '' python: '>=3.7' + python-dateutil: '' pytz: '>2021.1' - url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.2-pyhd8ed1ab_0.conda hash: - md5: f67f52c1f555785b86c3bd8e5de4c66f - sha256: 0a39004b6e4ddff1a323432c0790d61a8885f35af9e60cc7e76ad8f6d43e3f34 + md5: 81e82a2922ee960cc5e324b0102174d0 + sha256: e235c57e6070f5d2b161f7b496d00cb9e75796c5234cf62aff9e04258302940e category: main optional: false - name: cryptography - version: 41.0.7 + version: 42.0.5 manager: conda platform: linux-64 dependencies: cffi: '>=1.12' libgcc-ng: '>=12' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.1,<4.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.7-py39he6105cc_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.5-py39hd4f0224_0.conda hash: - md5: c2503c6b2505714dd30d50717efe1826 - sha256: 704b189699c8eae0dff8b3d0886fb3ef5316b221676ee5d79d44575073bc9296 + md5: 74adeac31d6368a9dcf1a867a052cffa + sha256: dbde9bd3cc0400cdefbdfe7a41ddb7cb33efc472dbd291485308eb5f5830f1a9 category: main optional: false - name: cryptography - version: 41.0.7 + version: 42.0.5 manager: conda platform: osx-arm64 dependencies: cffi: '>=1.12' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.1,<4.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-41.0.7-py39hbc7c26c_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-42.0.5-py39h4720a30_0.conda + hash: + md5: 3640aac83789d76e083447489790a157 + sha256: 4ce400c11245a79feb9fea93e8179379c48af6e755347f3c91181c5fd54423e9 + category: main + optional: false +- name: cuda-version + version: '11.8' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/cuda-version-11.8-h70ddcb2_3.conda + hash: + md5: 670f0e1593b8c1d84f57ad5fe5256799 + sha256: 53e0ffc14ea2f2b8c12320fd2aa38b01112763eba851336ff5953b436ae61259 + category: main + optional: false +- name: cudatoolkit + version: 11.8.0 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/cudatoolkit-11.8.0-h4ba93d1_13.conda + hash: + md5: eb43f5f1f16e2fad2eba22219c3e499b + sha256: 1797bacaf5350f272413c7f50787c01aef0e8eb955df0f0db144b10be2819752 + category: main + optional: false +- name: cudnn + version: 8.9.7.29 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + cuda-version: '>=11.0,<12.0a0' + cudatoolkit: 11.* + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/cudnn-8.9.7.29-hbc23b4c_3.conda hash: - md5: 0511a9f0e97e23bf28fe345f92849237 - sha256: 291cf98d177a933b9ec6c35dc7630b181a73497c0fe9840e90c7a728716b5061 + md5: 4a2d5fab2871d95544de4e1752948d0f + sha256: c553234d447d9938556f067aba7a4686c8e5427e03e740e67199da3782cc420c category: main optional: false - name: cycler @@ -2531,7 +2576,7 @@ package: category: main optional: false - name: cytoolz - version: 0.12.2 + version: 0.12.3 manager: conda platform: linux-64 dependencies: @@ -2539,35 +2584,36 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* toolz: '>=0.10.0' - url: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.2-py39hd1e30aa_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py39hd1e30aa_0.conda hash: - md5: e5b62f0c1f96413116f16d33973f1a44 - sha256: dc9b9ddb29d61463e8c5c5098b7f8d8a370d6d1a65830029000ff9c2299495e0 + md5: dc0fb8e157c7caba4c98f1e1f9d2e5f4 + sha256: bbc7069221cb5ff29dd8f10f2ae32a6caa72394459a7c67ec2e19d9b9f42cd78 category: main optional: false - name: cytoolz - version: 0.12.2 + version: 0.12.3 manager: conda platform: osx-arm64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* toolz: '>=0.10.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-0.12.2-py39h0f82c59_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-0.12.3-py39h17cfd9d_0.conda hash: - md5: 55150781bf8d18e4df223e47abc4f1d7 - sha256: 4709ec855331b50230fbf09bec3fc833c744e2505e454c3513bdad18cbc0100c + md5: 819e2f7dc92fefbf1eb90c542d550259 + sha256: 2eb3a30850b04d63dfc8c0b15e276a1791ac6b0e87a6b34205118b12ce14def7 category: main optional: false - name: dask - version: 2024.1.1 + version: 2024.3.0 manager: conda platform: linux-64 dependencies: bokeh: '>=2.4.2,!=3.0.*' cytoolz: '>=0.11.0' - dask-core: '>=2024.1.1,<2024.1.2.0a0' - distributed: '>=2024.1.1,<2024.1.2.0a0' + dask-core: '>=2024.3.0,<2024.3.1.0a0' + dask-expr: '>=1.0,<1.1' + distributed: '>=2024.3.0,<2024.3.1.0a0' jinja2: '>=2.10.3' lz4: '>=4.3.2' numpy: '>=1.21' @@ -2575,34 +2621,37 @@ package: pyarrow: '>=7.0' pyarrow-hotfix: '' python: '>=3.9' - url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.1.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.3.0-pyhd8ed1ab_1.conda hash: - md5: c319bdbcfa9952e246f9d35e7c13a927 - sha256: 8f3d605b2d89eb0a9792576b385098ce7f9bdb827b88c6d5e2c9517914895bd0 + md5: 271447895d7d7f1bd28a74e6afc51be3 + sha256: 666cd081c8a33164aa2f20177cd2e3c952746936390f38558898269cf80cf8ed category: main optional: false - name: dask - version: 2023.2.0 + version: 2024.3.0 manager: conda platform: osx-arm64 dependencies: - jinja2: '' - lz4: '' - python: '>=3.8' - pandas: '>=1.0' - numpy: '>=1.18' - cytoolz: '>=0.8.2' - bokeh: '>=2.4.2,<3' - dask-core: '>=2023.2.0,<2023.2.1.0a0' - distributed: '>=2023.2.0,<2023.2.1.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/dask-2023.2.0-pyhd8ed1ab_0.conda + bokeh: '>=2.4.2,!=3.0.*' + cytoolz: '>=0.11.0' + dask-core: '>=2024.3.0,<2024.3.1.0a0' + dask-expr: '>=1.0,<1.1' + distributed: '>=2024.3.0,<2024.3.1.0a0' + jinja2: '>=2.10.3' + lz4: '>=4.3.2' + numpy: '>=1.21' + pandas: '>=1.3' + pyarrow: '>=7.0' + pyarrow-hotfix: '' + python: '>=3.9' + url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.3.0-pyhd8ed1ab_1.conda hash: - md5: c64c58bf99a686d8bdff8f9c4d33d615 - sha256: 8a0864a7ef94584f43be468d92f32a0f8a4ccab108b34168748c293847c51e67 + md5: 271447895d7d7f1bd28a74e6afc51be3 + sha256: 666cd081c8a33164aa2f20177cd2e3c952746936390f38558898269cf80cf8ed category: main optional: false - name: dask-core - version: 2024.1.1 + version: 2024.3.0 manager: conda platform: linux-64 dependencies: @@ -2615,29 +2664,60 @@ package: python: '>=3.9' pyyaml: '>=5.3.1' toolz: '>=0.10.0' - url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.1.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.3.0-pyhd8ed1ab_0.conda hash: - md5: 1a92a5bd77b2430796696e25c3d8dbcb - sha256: b9521f5fe75ec73b2be9227abd6d27e51d7d2698c614f46d4977e7135b003bef + md5: b6c573c271bf4c062873d7f3df97c3ba + sha256: b7c1514f0be3b447305440bad0d7cc5842f521d46b01788e1d9bbdbf623bc76a category: main optional: false - name: dask-core - version: 2023.2.0 + version: 2024.3.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' - click: '>=7.0' + click: '>=8.1' + cloudpickle: '>=1.5.0' + fsspec: '>=2021.09.0' + importlib_metadata: '>=4.13.0' packaging: '>=20.0' + partd: '>=1.2.0' + python: '>=3.9' pyyaml: '>=5.3.1' - toolz: '>=0.8.2' - partd: '>=0.3.10' - fsspec: '>=0.6.0' - cloudpickle: '>=1.1.1' - url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.2.0-pyhd8ed1ab_0.conda + toolz: '>=0.10.0' + url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.3.0-pyhd8ed1ab_0.conda + hash: + md5: b6c573c271bf4c062873d7f3df97c3ba + sha256: b7c1514f0be3b447305440bad0d7cc5842f521d46b01788e1d9bbdbf623bc76a + category: main + optional: false +- name: dask-expr + version: 1.0.2 + manager: conda + platform: linux-64 + dependencies: + dask-core: 2024.3.0 + pandas: '>=2' + pyarrow: '' + python: '>=3.9' + url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.0.2-pyhd8ed1ab_0.conda + hash: + md5: 55fad7bd4735ae915926b7c14aed1d97 + sha256: 7d09a3b8499b3fb3f035977809959e212de669c4a4a0619e728e9f52a7bbc97b + category: main + optional: false +- name: dask-expr + version: 1.0.2 + manager: conda + platform: osx-arm64 + dependencies: + dask-core: 2024.3.0 + pandas: '>=2' + pyarrow: '' + python: '>=3.9' + url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.0.2-pyhd8ed1ab_0.conda hash: - md5: 156fb994a4e07091c4fad2c148589eb2 - sha256: a88c3d56f1d4657cbd6265184b95a0191bfec10e870aa3f1483eca1f46e35ddc + md5: 55fad7bd4735ae915926b7c14aed1d97 + sha256: 7d09a3b8499b3fb3f035977809959e212de669c4a4a0619e728e9f52a7bbc97b category: main optional: false - name: databricks-cli @@ -2665,14 +2745,14 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' click: '>=7.0' - six: '>=1.10.0' - pyjwt: '>=1.7.0' - tabulate: '>=0.7.7' - requests: '>=2.17.3' configparser: '>=0.3.5' oauthlib: '>=3.1.0' + pyjwt: '>=1.7.0' + python: '>=3.7' + requests: '>=2.17.3' + six: '>=1.10.0' + tabulate: '>=0.7.7' urllib3: '>=1.26.7,<3' url: https://conda.anaconda.org/conda-forge/noarch/databricks-cli-0.18.0-pyhd8ed1ab_0.conda hash: @@ -2701,11 +2781,11 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' - typing_inspect: '>=0.4.0' marshmallow: '>=3.3.0,<4.0.0' marshmallow-enum: '>=1.5.1,<2.0.0' + python: '>=3.6' stringcase: 1.2.0,<2.0.0 + typing_inspect: '>=0.4.0' url: https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.5.7-pyhd8ed1ab_0.tar.bz2 hash: md5: 460d0446b90718c6b535bfe807eab1cd @@ -2713,57 +2793,57 @@ package: category: main optional: false - name: datasets - version: 2.16.1 + version: 2.18.0 manager: conda platform: linux-64 dependencies: aiohttp: '' - dill: '>=0.3.0,<0.3.8' - fsspec: '>=2023.1.0,<=2023.10.0' + dill: '>=0.3.0,<0.3.9' + filelock: '' + fsspec: '>=2023.1.0,<=2024.2.0' huggingface_hub: '>=0.19.4' - importlib-metadata: '' multiprocess: '' numpy: '>=1.17' packaging: '' pandas: '' - pyarrow: '>=8.0.0' + pyarrow: '>=12.0.0' pyarrow-hotfix: '' python: '>=3.8.0' python-xxhash: '' pyyaml: '>=5.1' requests: '>=2.19.0' tqdm: '>=4.62.1' - url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.16.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.18.0-pyhd8ed1ab_0.conda hash: - md5: 99516e8430074c50911e058326eaa450 - sha256: ce835aeba2a2e987d6c5da996cf60d5d82a583ea903c410640382b45a00bbe43 + md5: 3482c9b417757df305ff4e3a7e4b7c10 + sha256: 2d792e6f8ecd3ac02921e13f0d5013f412c61d39bcbb8fad4a1f42d6cf6e7a53 category: main optional: false - name: datasets - version: 2.16.1 + version: 2.18.0 manager: conda platform: osx-arm64 dependencies: - pandas: '' - packaging: '' - importlib-metadata: '' aiohttp: '' - python-xxhash: '' + dill: '>=0.3.0,<0.3.9' + filelock: '' + fsspec: '>=2023.1.0,<=2024.2.0' + huggingface_hub: '>=0.19.4' multiprocess: '' + numpy: '>=1.17' + packaging: '' + pandas: '' + pyarrow: '>=12.0.0' pyarrow-hotfix: '' + python: '>=3.8.0' + python-xxhash: '' pyyaml: '>=5.1' - numpy: '>=1.17' - pyarrow: '>=8.0.0' requests: '>=2.19.0' - python: '>=3.8.0' tqdm: '>=4.62.1' - dill: '>=0.3.0,<0.3.8' - fsspec: '>=2023.1.0,<=2023.10.0' - huggingface_hub: '>=0.19.4' - url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.16.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.18.0-pyhd8ed1ab_0.conda hash: - md5: 99516e8430074c50911e058326eaa450 - sha256: ce835aeba2a2e987d6c5da996cf60d5d82a583ea903c410640382b45a00bbe43 + md5: 3482c9b417757df305ff4e3a7e4b7c10 + sha256: 2d792e6f8ecd3ac02921e13f0d5013f412c61d39bcbb8fad4a1f42d6cf6e7a53 category: main optional: false - name: db-dtypes @@ -2787,11 +2867,11 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' - pandas: '>=0.24.2' + numpy: '>=1.16.6' packaging: '>=17.0' + pandas: '>=0.24.2' pyarrow: '>=3.0.0' - numpy: '>=1.16.6' + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/db-dtypes-1.2.0-pyhd8ed1ab_0.conda hash: md5: d7dbb7a600bb820b5b7874b3a2a87990 @@ -2813,7 +2893,7 @@ package: category: main optional: false - name: debugpy - version: 1.8.0 + version: 1.8.1 manager: conda platform: linux-64 dependencies: @@ -2821,24 +2901,24 @@ package: libstdcxx-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.0-py39h3d6467e_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.1-py39h3d6467e_0.conda hash: - md5: 31e04f8c5eebb5306793482b5e0f8a78 - sha256: 804a293cdea90c8e95eb03ce2dfef14b0118c65fae9aff4326d8ce5e9a09bd7d + md5: d48142fba253b2a1074f8ddee84749cb + sha256: 17b1f8a3b4c4df1cf78ec1cdd46d53743ad9fe8bb34fa162dfaaee698f9a6864 category: main optional: false - name: debugpy - version: 1.8.0 + version: 1.8.1 manager: conda platform: osx-arm64 dependencies: - libcxx: '>=15.0.7' + libcxx: '>=16' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.0-py39hb198ff7_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.1-py39hf3050f2_0.conda hash: - md5: 69119da204eec5434903d22a62618b5c - sha256: cf1d778e659e848b0016d62d6661fdea7fe36f321c42902490bb242baa130651 + md5: ae2cf05cb8622294925f36417831f96e + sha256: 7d12db42e9ea189fd90c796af9a8b797084bc5fed1d5039ff16d5efa746efe59 category: main optional: false - name: decorator @@ -2890,27 +2970,27 @@ package: category: main optional: false - name: dill - version: 0.3.7 + version: 0.3.8 manager: conda platform: linux-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda hash: - md5: 5e4f3466526c52bc9af2d2353a1460bd - sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 78745f157d56877a2c6e7b386f66f3e2 + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 category: main optional: false - name: dill - version: 0.3.7 + version: 0.3.8 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda hash: - md5: 5e4f3466526c52bc9af2d2353a1460bd - sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 78745f157d56877a2c6e7b386f66f3e2 + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 category: main optional: false - name: diskcache @@ -2962,14 +3042,14 @@ package: category: main optional: false - name: distributed - version: 2024.1.1 + version: 2024.3.0 manager: conda platform: linux-64 dependencies: click: '>=8.0' cloudpickle: '>=1.5.0' cytoolz: '>=0.10.1' - dask-core: '>=2024.1.1,<2024.1.2.0a0' + dask-core: '>=2024.3.0,<2024.3.1.0a0' jinja2: '>=2.10.3' locket: '>=1.0.0' msgpack-python: '>=1.0.0' @@ -2983,38 +3063,62 @@ package: tornado: '>=6.0.4' urllib3: '>=1.24.3' zict: '>=3.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.1.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.3.0-pyhd8ed1ab_0.conda hash: - md5: 81039f39690f341dcb0a68bf62e812be - sha256: 097b27d3a2d79ef437711203d872da2cbb0b52610213c6f1dfa69c6142bab061 + md5: e4736ce580a5b289f7412f14ae8df42a + sha256: d13ee04cb06fa760b7b1fab4ce3b1d4bef37013daafb49aad6d28cb7c7dae906 category: main optional: false - name: distributed - version: 2023.2.0 + version: 2024.3.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' - click: '>=7.0' - packaging: '>=20.0' - pyyaml: '>=5.3.1' + click: '>=8.0' cloudpickle: '>=1.5.0' - urllib3: '>=1.24.3' - msgpack-python: '>=1.0.0' - toolz: '>=0.10.0' + cytoolz: '>=0.10.1' + dask-core: '>=2024.3.0,<2024.3.1.0a0' jinja2: '>=2.10.3' - tblib: '>=1.6.0' locket: '>=1.0.0' - psutil: '>=5.7.0' - tornado: '>=6.0.3' + msgpack-python: '>=1.0.0' + packaging: '>=20.0' + psutil: '>=5.7.2' + python: '>=3.9' + pyyaml: '>=5.3.1' sortedcontainers: '>=2.0.5' - cytoolz: '>=0.10.0' - zict: '>=2.1.0' - dask-core: '>=2023.2.0,<2023.2.1.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/distributed-2023.2.0-pyhd8ed1ab_0.conda + tblib: '>=1.6.0' + toolz: '>=0.10.0' + tornado: '>=6.0.4' + urllib3: '>=1.24.3' + zict: '>=3.0.0' + url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.3.0-pyhd8ed1ab_0.conda + hash: + md5: e4736ce580a5b289f7412f14ae8df42a + sha256: d13ee04cb06fa760b7b1fab4ce3b1d4bef37013daafb49aad6d28cb7c7dae906 + category: main + optional: false +- name: distro + version: 1.9.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda + hash: + md5: bbdb409974cd6cb30071b1d978302726 + sha256: ae1c13d709c8001331b5b9345e4bcd77e9ae712d25f7958b2ebcbe0b068731b7 + category: main + optional: false +- name: distro + version: 1.9.0 + manager: conda + platform: osx-arm64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda hash: - md5: 908e176bdb542b900f1c044bac70683b - sha256: 5551a2f3d05f3ca595ae93c3c59dbcda13fc0183d49dfb01c84bd482e7ae19a4 + md5: bbdb409974cd6cb30071b1d978302726 + sha256: ae1c13d709c8001331b5b9345e4bcd77e9ae712d25f7958b2ebcbe0b068731b7 category: main optional: false - name: docker-py @@ -3040,13 +3144,13 @@ package: manager: conda platform: osx-arm64 dependencies: - pywin32-on-windows: '' + packaging: '>=14.0' + paramiko: '>=2.4.3' python: '>=3.7' + pywin32-on-windows: '' requests: '>=2.26.0' urllib3: '>=1.26.0' websocket-client: '>=0.32.0' - packaging: '>=14.0' - paramiko: '>=2.4.3' url: https://conda.anaconda.org/conda-forge/noarch/docker-py-6.1.3-pyhd8ed1ab_0.conda hash: md5: c95d23d8bae7e21491868cc7772d7c73 @@ -3054,27 +3158,27 @@ package: category: main optional: false - name: docstring_parser - version: '0.15' + version: '0.16' manager: conda platform: linux-64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.15-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.16-pyhd8ed1ab_0.conda hash: - md5: 031fcb28b8e80c1f7bec22ccdf4904b2 - sha256: 9b22e1f1d0decc26cc0743ce929e1a7e233fd7921d1b5c390db0691b8042a706 + md5: 1541834779ec03de593eb3c35f393632 + sha256: da4fcb232504392344a2ddae6863cbbbbf2a876ddd6d00c8f1dfcdefc29f7f2a category: main optional: false - name: docstring_parser - version: '0.15' + version: '0.16' manager: conda platform: osx-arm64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.15-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.16-pyhd8ed1ab_0.conda hash: - md5: 031fcb28b8e80c1f7bec22ccdf4904b2 - sha256: 9b22e1f1d0decc26cc0743ce929e1a7e233fd7921d1b5c390db0691b8042a706 + md5: 1541834779ec03de593eb3c35f393632 + sha256: da4fcb232504392344a2ddae6863cbbbbf2a876ddd6d00c8f1dfcdefc29f7f2a category: main optional: false - name: docutils @@ -3176,32 +3280,32 @@ package: category: main optional: false - name: expat - version: 2.5.0 + version: 2.6.2 manager: conda platform: linux-64 dependencies: - libexpat: 2.5.0 + libexpat: 2.6.2 libgcc-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda hash: - md5: 8b9b5aca60558d02ddaa09d599e55920 - sha256: 36dfeb4375059b3bba75ce9b38c29c69fd257342a79e6cf20e9f25c1523f785f + md5: 53fb86322bdb89496d7579fe3f02fd61 + sha256: 89916c536ae5b85bb8bf0cfa27d751e274ea0911f04e4a928744735c14ef5155 category: main optional: false - name: expat - version: 2.5.0 + version: 2.6.2 manager: conda platform: osx-arm64 dependencies: - libexpat: 2.5.0 - url: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.5.0-hb7217d7_1.conda + libexpat: 2.6.2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda hash: - md5: 624fa0dd6fdeaa650b71a62296fdfedf - sha256: 9f06afbe4604decf6a2e8e7e87f5ca218a3e9049d57d5b3fcd538ca6240d21a0 + md5: de0cff0ec74f273c4b6aa281479906c3 + sha256: 9ac22553a4d595d7e4c9ca9aa09a0b38da65314529a7a7008edc73d3f9e7904a category: main optional: false - name: fastavro - version: 1.9.3 + version: 1.9.4 manager: conda platform: linux-64 dependencies: @@ -3209,24 +3313,24 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* pytz: '' - url: https://conda.anaconda.org/conda-forge/linux-64/fastavro-1.9.3-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/fastavro-1.9.4-py39hd1e30aa_0.conda hash: - md5: c3ace3a23beb653d3d3575fef56bf009 - sha256: 0c133b55206a64f6ea89105d7d946554ad27f967f7ad3f967d74f732a0c5793f + md5: d8978b7abb07cccb145a2f26518841a5 + sha256: d60e58580c4202d1f1787c8fe1cdc783e297ebb192aaf89cc84b29eb348ea224 category: main optional: false - name: fastavro - version: 1.9.3 + version: 1.9.4 manager: conda platform: osx-arm64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* pytz: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/fastavro-1.9.3-py39h17cfd9d_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/fastavro-1.9.4-py39h17cfd9d_0.conda hash: - md5: 8579c8c7faf69742670ace1605dd8d27 - sha256: a6c73461740cbfcdb62b7cdeb740e2821cb515132e5fda0a8054ffba325099ec + md5: 4ea9f7f6fe7164403b8c5d335e4036ca + sha256: 2b28b62773ffce6b3926d5c866e564e45f7c6946741241c75e754940a4560a36 category: main optional: false - name: filelock @@ -3254,54 +3358,54 @@ package: category: main optional: false - name: fiona - version: 1.9.5 + version: 1.9.6 manager: conda platform: linux-64 dependencies: attrs: '>=19.2.0' + certifi: '' click: '>=8.0,<9.dev0' click-plugins: '>=1.0' cligj: '>=0.5' gdal: '' importlib-metadata: '' libgcc-ng: '>=12' - libgdal: '>=3.8.2,<3.9.0a0' + libgdal: '>=3.8.4,<3.9.0a0' libstdcxx-ng: '>=12' numpy: '>=1.22.4,<2.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - setuptools: '' shapely: '' six: '' - url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.5-py39hcfcd403_3.conda + url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.6-py39hcfcd403_0.conda hash: - md5: 4cbedb0d1f0add97a71a9482c15a8122 - sha256: fa3e5ff7c316a94bc8b3f6ebf61c28421a0c339a4318af1b754bfe5b05144508 + md5: 37555ce3fc10c4edc5b5a063bc6449aa + sha256: 89e29d589bd8f749471a7286cfd275f6b27c37bdf7b87a2f81bac24c025018d3 category: main optional: false - name: fiona - version: 1.9.5 + version: 1.9.6 manager: conda platform: osx-arm64 dependencies: attrs: '>=19.2.0' + certifi: '' click: '>=8.0,<9.dev0' click-plugins: '>=1.0' cligj: '>=0.5' gdal: '' importlib-metadata: '' - libcxx: '>=15' - libgdal: '>=3.8.2,<3.9.0a0' + libcxx: '>=16' + libgdal: '>=3.8.4,<3.9.0a0' numpy: '>=1.22.4,<2.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - setuptools: '' shapely: '' six: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.9.5-py39h97e6c39_3.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.9.6-py39h97e6c39_0.conda hash: - md5: aa93d96a2e30536aa523a3fbd2c0225f - sha256: 7e9223d6d2bfb98e94e3415ad9f7a77a7d187e416a3158f354a5f77c0cf24833 + md5: fb93009e38c4555de317ad0c9a50d04a + sha256: 3215709fc32d55092f7e640b4ce6db06360ab8fd322981f1c38d6a19ea0851c5 category: main optional: false - name: flask @@ -3327,12 +3431,12 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' + blinker: '>=1.6.2' click: '>=8.1.3' - jinja2: '>=3.1.2' importlib-metadata: '>=3.6.0' itsdangerous: '>=2.1.2' - blinker: '>=1.6.2' + jinja2: '>=3.1.2' + python: '>=3.8' werkzeug: '>=2.3.7' url: https://conda.anaconda.org/conda-forge/noarch/flask-2.3.3-pyhd8ed1ab_0.conda hash: @@ -3366,41 +3470,41 @@ package: category: main optional: false - name: flyteidl - version: 1.10.6 + version: 1.11.0 manager: conda platform: linux-64 dependencies: googleapis-common-protos: '' protobuf: '>=4.21.1,<5.0.0' - protoc-gen-swagger: '' + protoc-gen-openapiv2: '' python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/flyteidl-1.10.6-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/flyteidl-1.11.0-pyhd8ed1ab_0.conda hash: - md5: 94aef87e09529f57d4454d64f67ade17 - sha256: 2b3db247e15ae613248afceae3b3c291125a21c0220082a260babbf7b061d095 + md5: 131db08709c41ff9dcb9d9a9d0b1b06c + sha256: 20bdb20e0cecfc3ac3c55a435f5be794f87497984fc8a25ae1c9378e8f11fa5d category: main optional: false - name: flyteidl - version: 1.10.6 + version: 1.11.0 manager: conda platform: osx-arm64 dependencies: googleapis-common-protos: '' - protoc-gen-swagger: '' - python: '>=3.8' protobuf: '>=4.21.1,<5.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/flyteidl-1.10.6-pyhd8ed1ab_0.conda + protoc-gen-openapiv2: '' + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/flyteidl-1.11.0-pyhd8ed1ab_0.conda hash: - md5: 94aef87e09529f57d4454d64f67ade17 - sha256: 2b3db247e15ae613248afceae3b3c291125a21c0220082a260babbf7b061d095 + md5: 131db08709c41ff9dcb9d9a9d0b1b06c + sha256: 20bdb20e0cecfc3ac3c55a435f5be794f87497984fc8a25ae1c9378e8f11fa5d category: main optional: false - name: flytekit - version: 1.10.2 + version: 1.11.0 manager: conda platform: linux-64 dependencies: - adlfs: '' + adlfs: '>=2023.3.0' click: '>=6.6,<9.0' cloudpickle: '>=2.0.0' cookiecutter: '>=1.7.3' @@ -3409,122 +3513,122 @@ package: diskcache: '>=5.2.1' docker-py: '>=4.0.0,<7.0.0' docstring_parser: '>=0.9.0' - flyteidl: '>=1.10.0' - fsspec: '>=2023.3.0,<=2023.9.2' - gcsfs: '' + flyteidl: '>=1.11.0b1' + fsspec: '>=2023.3.0' + gcsfs: '>=2023.3.0' googleapis-common-protos: '>=1.57' grpcio: '' grpcio-status: '' importlib-metadata: '' + isodate: '' joblib: '' jsonpickle: '' keyring: '>=18.0.1' + markdown-it-py: '' marshmallow-enum: '' marshmallow-jsonschema: '>=0.12.0' mashumaro: '>=3.9.1' - numpy: '' - pandas: '>=1.0.0,<2.0.0' - protobuf: <4.25.0 - pyarrow: '>=4.0.0' + protobuf: '!=4.25.0' + pyarrow: '' + pygments: '' python: '>=3.8,<3.12' python-json-logger: '>=2.0.0' - python-kubernetes: '>=12.0.1' pytimeparse: '>=1.1.8,<2.0.0' pyyaml: '!=6.0.0,!=5.4.0,!=5.4.1' requests: '>=2.18.4,<3.0.0' rich: '' rich-click: '' - s3fs: '>=0.6.0' + s3fs: '>=2023.3.0' statsd: '>=3.0.0,<4.0.0' typing-extensions: '' urllib3: '>=1.22,<2.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/flytekit-1.10.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/flytekit-1.11.0-pyhd8ed1ab_0.conda hash: - md5: 02846f149ea2ccc8d579e4bf28e86dcf - sha256: 827316c5fe11b43f7c3b0ed74d92f3faf36a7dfd4f33091421e209a0ad544ee9 + md5: acf5fdc7bc5aeed83f7f8500b02d68d5 + sha256: 2df4e56f582f1e9800f7fc304c043b0165d989fae705ac82875e82f04d0d0d18 category: main optional: false - name: flytekit - version: 1.10.2 + version: 1.11.0 manager: conda platform: osx-arm64 dependencies: - numpy: '' - typing-extensions: '' - importlib-metadata: '' - joblib: '' - rich: '' - gcsfs: '' - jsonpickle: '' - grpcio: '' - adlfs: '' - rich-click: '' - grpcio-status: '' - marshmallow-enum: '' - python: '>=3.8,<3.12' - diskcache: '>=5.2.1' - pyarrow: '>=4.0.0' - pandas: '>=1.0.0,<2.0.0' - python-json-logger: '>=2.0.0' + adlfs: '>=2023.3.0' + click: '>=6.6,<9.0' cloudpickle: '>=2.0.0' - python-kubernetes: '>=12.0.1' cookiecutter: '>=1.7.3' croniter: '>=0.3.20,<4.0.0' + dataclasses-json: '>=0.5.2,<0.5.12' + diskcache: '>=5.2.1' + docker-py: '>=4.0.0,<7.0.0' docstring_parser: '>=0.9.0' + flyteidl: '>=1.11.0b1' + fsspec: '>=2023.3.0' + gcsfs: '>=2023.3.0' + googleapis-common-protos: '>=1.57' + grpcio: '' + grpcio-status: '' + importlib-metadata: '' + isodate: '' + joblib: '' + jsonpickle: '' keyring: '>=18.0.1' + markdown-it-py: '' + marshmallow-enum: '' marshmallow-jsonschema: '>=0.12.0' + mashumaro: '>=3.9.1' + protobuf: '!=4.25.0' + pyarrow: '' + pygments: '' + python: '>=3.8,<3.12' + python-json-logger: '>=2.0.0' pytimeparse: '>=1.1.8,<2.0.0' + pyyaml: '!=6.0.0,!=5.4.0,!=5.4.1' requests: '>=2.18.4,<3.0.0' + rich: '' + rich-click: '' + s3fs: '>=2023.3.0' statsd: '>=3.0.0,<4.0.0' + typing-extensions: '' urllib3: '>=1.22,<2.0.0' - click: '>=6.6,<9.0' - googleapis-common-protos: '>=1.57' - docker-py: '>=4.0.0,<7.0.0' - s3fs: '>=0.6.0' - pyyaml: '!=6.0.0,!=5.4.0,!=5.4.1' - dataclasses-json: '>=0.5.2,<0.5.12' - fsspec: '>=2023.3.0,<=2023.9.2' - mashumaro: '>=3.9.1' - flyteidl: '>=1.10.0' - protobuf: <4.25.0 - url: https://conda.anaconda.org/conda-forge/noarch/flytekit-1.10.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/flytekit-1.11.0-pyhd8ed1ab_0.conda hash: - md5: 02846f149ea2ccc8d579e4bf28e86dcf - sha256: 827316c5fe11b43f7c3b0ed74d92f3faf36a7dfd4f33091421e209a0ad544ee9 + md5: acf5fdc7bc5aeed83f7f8500b02d68d5 + sha256: 2df4e56f582f1e9800f7fc304c043b0165d989fae705ac82875e82f04d0d0d18 category: main optional: false - name: folium - version: 0.15.1 + version: 0.16.0 manager: conda platform: linux-64 dependencies: - branca: '>=0.7.0' + branca: '>=0.6.0' jinja2: '>=2.9' numpy: '' python: '>=3.7' requests: '' xyzservices: '' - url: https://conda.anaconda.org/conda-forge/noarch/folium-0.15.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/folium-0.16.0-pyhd8ed1ab_0.conda hash: - md5: 4fdfc338f6fb875b1078a7e20dbc99e2 - sha256: c0730ddfaf35e39ac92b7fd07315843e7948b2ce3361d164ec1b722dd0440c2b + md5: cb1d2aa705a5b1f0fbdabd1beebce205 + sha256: 9696ffafd873a40815312e9ea245a863b7796b73dd2759f93174cd65d6bf2144 category: main optional: false - name: folium - version: 0.15.1 + version: 0.16.0 manager: conda platform: osx-arm64 dependencies: + branca: '>=0.6.0' + jinja2: '>=2.9' numpy: '' + python: '>=3.7' requests: '' xyzservices: '' - python: '>=3.7' - jinja2: '>=2.9' - branca: '>=0.7.0' - url: https://conda.anaconda.org/conda-forge/noarch/folium-0.15.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/folium-0.16.0-pyhd8ed1ab_0.conda hash: - md5: 4fdfc338f6fb875b1078a7e20dbc99e2 - sha256: c0730ddfaf35e39ac92b7fd07315843e7948b2ce3361d164ec1b722dd0440c2b + md5: cb1d2aa705a5b1f0fbdabd1beebce205 + sha256: 9696ffafd873a40815312e9ea245a863b7796b73dd2759f93174cd65d6bf2144 category: main optional: false - name: font-ttf-dejavu-sans-mono @@ -3689,10 +3793,10 @@ package: manager: conda platform: osx-arm64 dependencies: + font-ttf-dejavu-sans-mono: '' font-ttf-inconsolata: '' font-ttf-source-code-pro: '' font-ttf-ubuntu: '' - font-ttf-dejavu-sans-mono: '' url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 hash: md5: f766549260d6815b0c52253f1fb1bb29 @@ -3700,7 +3804,7 @@ package: category: main optional: false - name: fonttools - version: 4.47.2 + version: 4.49.0 manager: conda platform: linux-64 dependencies: @@ -3710,14 +3814,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* unicodedata2: '>=14.0.0' - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.47.2-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.49.0-py39hd1e30aa_0.conda hash: - md5: 4e2b802b69be81944fdcd71018b74226 - sha256: f0834381dcabbaa5df8124bee63c6e26c642000a6f3fe80f521b3c95b1342f27 + md5: dd1b02484cc8c31d4093111a82b6efb2 + sha256: 142a8d3288855101804d0c0d2a998dbca1b56c0d9e0e745cbee86878baaac2ea category: main optional: false - name: fonttools - version: 4.47.2 + version: 4.49.0 manager: conda platform: osx-arm64 dependencies: @@ -3726,10 +3830,10 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* unicodedata2: '>=14.0.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.47.2-py39h17cfd9d_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.49.0-py39h17cfd9d_0.conda hash: - md5: cb2b258b7d021ac1e9692e16909a435f - sha256: 3ad5d03952cb87c70d008ac5e4ee15aecd3f66a8fda906a346419ff275826bb9 + md5: 0ea078a1395ab6ddc465e755fe6273ac + sha256: 765f5f689df8ff4bf888b0434e50bf426dcf869c9537dab05678e96a863b2685 category: main optional: false - name: fqdn @@ -3892,27 +3996,27 @@ package: category: main optional: false - name: fsspec - version: 2023.9.2 + version: 2024.2.0 manager: conda platform: linux-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.9.2-pyh1a96a4e_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.2.0-pyhca7485f_0.conda hash: - md5: 9d15cd3a0e944594ab528da37dc72ecc - sha256: d95d11d1f501cb69528bb2b620b728f12caf872cb23837bc9bdd6ef405b4ecfb + md5: fad86b90138cf5d82c6f5a2ed6e683d9 + sha256: 3f7e123dd82fe99450d1e0ffa389e8218ef8c9ee257c836e21b489548c039ae6 category: main optional: false - name: fsspec - version: 2023.9.2 + version: 2024.2.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.9.2-pyh1a96a4e_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.2.0-pyhca7485f_0.conda hash: - md5: 9d15cd3a0e944594ab528da37dc72ecc - sha256: d95d11d1f501cb69528bb2b620b728f12caf872cb23837bc9bdd6ef405b4ecfb + md5: fad86b90138cf5d82c6f5a2ed6e683d9 + sha256: 3f7e123dd82fe99450d1e0ffa389e8218ef8c9ee257c836e21b489548c039ae6 category: main optional: false - name: furo @@ -3940,11 +4044,11 @@ package: dependencies: beautifulsoup4: '' myst-parser: '' - sphinx-inline-tabs: '' - sphinx-basic-ng: '' - python: '>=3.6' pygments: '>=2.7' + python: '>=3.6' sphinx: '>=4' + sphinx-basic-ng: '' + sphinx-inline-tabs: '' url: https://conda.anaconda.org/conda-forge/noarch/furo-2023.5.20-pyhd8ed1ab_0.conda hash: md5: 786e474a83de249aecf767102d7fd87d @@ -3952,27 +4056,27 @@ package: category: main optional: false - name: future - version: 0.18.3 + version: 1.0.0 manager: conda platform: linux-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/future-0.18.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda hash: - md5: fec8329fc739090f26a7d7803db254f1 - sha256: b3d34bf4924cb80363c1ab57ac821393f118ffaa94f05368bf4044941163b65e + md5: 650a7807e689642dddd3590eb817beed + sha256: 8c918a63595ae01575b738ddf0bff10dc23a5002d4af4c8b445d1179a76a8efd category: main optional: false - name: future - version: 0.18.3 + version: 1.0.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/future-0.18.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda hash: - md5: fec8329fc739090f26a7d7803db254f1 - sha256: b3d34bf4924cb80363c1ab57ac821393f118ffaa94f05368bf4044941163b65e + md5: 650a7807e689642dddd3590eb817beed + sha256: 8c918a63595ae01575b738ddf0bff10dc23a5002d4af4c8b445d1179a76a8efd category: main optional: false - name: gast @@ -4000,80 +4104,80 @@ package: category: main optional: false - name: gcsfs - version: 2023.9.2 + version: 2024.2.0 manager: conda platform: linux-64 dependencies: aiohttp: '' decorator: '>4.1.2' - fsspec: 2023.9.2 + fsspec: 2024.2.0 google-auth: '>=1.2' google-auth-oauthlib: '' google-cloud-storage: '>1.40' python: '>=3.7' requests: '' - url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.9.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2024.2.0-pyhd8ed1ab_0.conda hash: - md5: c9deedf93585c3d5ce5525a89bf7287e - sha256: 54a7de26739f764159e7799b83a7b4c135e684c5220a9ca853e7cfe2b6d636f6 + md5: babf81bf8ff3af8bd8ad83ed5b9603a4 + sha256: eeb396cfaa15eecb1ec34d44801df8b6036c3b4beacf13d08d038f87e8d451e8 category: main optional: false - name: gcsfs - version: 2023.9.2 + version: 2024.2.0 manager: conda platform: osx-arm64 dependencies: - requests: '' aiohttp: '' - google-auth-oauthlib: '' - python: '>=3.7' - google-auth: '>=1.2' decorator: '>4.1.2' + fsspec: 2024.2.0 + google-auth: '>=1.2' + google-auth-oauthlib: '' google-cloud-storage: '>1.40' - fsspec: 2023.9.2 - url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.9.2-pyhd8ed1ab_0.conda + python: '>=3.7' + requests: '' + url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2024.2.0-pyhd8ed1ab_0.conda hash: - md5: c9deedf93585c3d5ce5525a89bf7287e - sha256: 54a7de26739f764159e7799b83a7b4c135e684c5220a9ca853e7cfe2b6d636f6 + md5: babf81bf8ff3af8bd8ad83ed5b9603a4 + sha256: eeb396cfaa15eecb1ec34d44801df8b6036c3b4beacf13d08d038f87e8d451e8 category: main optional: false - name: gdal - version: 3.8.3 + version: 3.8.4 manager: conda platform: linux-64 dependencies: hdf5: '>=1.14.3,<1.14.4.0a0' libgcc-ng: '>=12' - libgdal: 3.8.3 + libgdal: 3.8.4 libstdcxx-ng: '>=12' - libxml2: '>=2.12.3,<3.0.0a0' + libxml2: '>=2.12.5,<3.0a0' numpy: '>=1.22.4,<2.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.3-py39h14df8fe_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.4-py39he9866c7_0.conda hash: - md5: 9f556acdeaf436764dfc23a43de35864 - sha256: 449306555264d3bdfd3af16f3ad48541da5755ddeb1b9694b476830f05ca20aa + md5: 43d464d6710f81b189dfe84fe7b62af4 + sha256: 64d5b859a4b10a45a0a7eab22e8143f178d9a44f935c8aa32ee75d6111a0b5f9 category: main optional: false - name: gdal - version: 3.8.3 + version: 3.8.4 manager: conda platform: osx-arm64 dependencies: hdf5: '>=1.14.3,<1.14.4.0a0' - libcxx: '>=15' - libgdal: 3.8.3 - libxml2: '>=2.12.3,<3.0.0a0' + libcxx: '>=16' + libgdal: 3.8.4 + libxml2: '>=2.12.5,<3.0a0' numpy: '>=1.22.4,<2.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.8.3-py39h46f8cc7_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.8.4-py39hbdf0d01_0.conda hash: - md5: 3b0371ffadf43f722814a003a6530b6d - sha256: 948a26e95fec4eb6f4e473c1c38ea8ea77b0a5b2c25faabfe095d9973088abcb + md5: c3cabe605daca9c837cb749824f0b7d7 + sha256: 5bfcd01360bd0961c9af7c54696e2d15d6f25f5604bd6cef9ac69761426b9b60 category: main optional: false - name: gdk-pixbuf @@ -4081,16 +4185,14 @@ package: manager: conda platform: linux-64 dependencies: - libgcc-ng: '>=12' - libglib: '>=2.78.0,<3.0a0' + libglib: '>=2.78.4,<3.0a0' libjpeg-turbo: '>=3.0.0,<4.0a0' - libpng: '>=1.6.39,<1.7.0a0' + libpng: '>=1.6.43,<1.7.0a0' libtiff: '>=4.6.0,<4.7.0a0' - libzlib: '>=1.2.13,<1.3.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h829c605_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h829c605_5.conda hash: - md5: 252a696860674caf7a855e16f680d63a - sha256: 884992d0665a0a5c728943d99b5fba30fd6911bb84eee622fa7ad8a4fa9f6cf7 + md5: 8fdb82e5d9694dd8e9ed9ac8fdf48a26 + sha256: bacd1cc3ed77699dec11ea5a670160db3cf701f1b19f34f1a19be36cae25c396 category: main optional: false - name: gdk-pixbuf @@ -4098,15 +4200,14 @@ package: manager: conda platform: osx-arm64 dependencies: - libglib: '>=2.78.0,<3.0a0' + libglib: '>=2.78.4,<3.0a0' libjpeg-turbo: '>=3.0.0,<4.0a0' - libpng: '>=1.6.39,<1.7.0a0' + libpng: '>=1.6.43,<1.7.0a0' libtiff: '>=4.6.0,<4.7.0a0' - libzlib: '>=1.2.13,<1.3.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.10-h15fa40c_4.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.10-hcea6d13_5.conda hash: - md5: ed5cfaa924087471c439d94a0e393364 - sha256: d0ec06b17a6c9aa13e56b7ce188b061ffb11f5e964cade7e4757156dca2aa5a7 + md5: bbf4bb664dedbec6d3a8fb8b6d90b710 + sha256: 1259c6a32269074b85e870a2afaa426f96cba6ebad547c3e152c941e46036e3a category: main optional: false - name: geopandas @@ -4129,22 +4230,22 @@ package: category: main optional: false - name: geopandas - version: 0.13.2 + version: 0.14.3 manager: conda platform: osx-arm64 dependencies: + fiona: '>=1.8.21' + folium: '' + geopandas-base: 0.14.3 + mapclassify: '>=2.4.0' matplotlib-base: '' + python: '>=3.9' rtree: '' - folium: '' xyzservices: '' - python: '>=3.8' - mapclassify: '>=2.4.0' - fiona: '>=1.8.19' - geopandas-base: 0.13.2 - url: https://conda.anaconda.org/conda-forge/noarch/geopandas-0.13.2-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/geopandas-0.14.3-pyhd8ed1ab_0.conda hash: - md5: 47226a55e4ae3bc9feb3a17925874817 - sha256: 789415051d8b7342f65342fa0270eb8bdc3131e841fdd8892f3efad335dc6bb5 + md5: d8e208e375441bf1404e9693f13f3c25 + sha256: 15bdc3d85ffa9c6601f57dd5e2780dbcbe52ca5da70164fb5bb1bb4c72b92010 category: main optional: false - name: geopandas-base @@ -4164,19 +4265,19 @@ package: category: main optional: false - name: geopandas-base - version: 0.13.2 + version: 0.14.3 manager: conda platform: osx-arm64 dependencies: packaging: '' - python: '>=3.8' - pandas: '>=1.1.0' - shapely: '>=1.7.1' - pyproj: '>=3.0.1' - url: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.13.2-pyha770c72_1.conda + pandas: '>=1.4.0' + pyproj: '>=3.3.0' + python: '>=3.9' + shapely: '>=1.8.0' + url: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.14.3-pyha770c72_0.conda hash: - md5: c6036236caae7d8ac684c41c64073b9e - sha256: fc1442a799f837961c3423466ac5f7c84d49b295c76290a7983dab903546a5a7 + md5: fbac4b2194c962b97324a3f5dd7d2696 + sha256: 0a8fb5a368d19fd08f7f65dfcff563322cb34e47947cabab8fc7f187d9bc9269 category: main optional: false - name: geos @@ -4340,31 +4441,31 @@ package: category: main optional: false - name: gitpython - version: 3.1.41 + version: 3.1.42 manager: conda platform: linux-64 dependencies: gitdb: '>=4.0.1,<5' python: '>=3.7' typing_extensions: '>=3.7.4.3' - url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.41-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.42-pyhd8ed1ab_0.conda hash: - md5: 84874a90c312088f7b5e63402fc44a58 - sha256: cf3c45156feec1fe8adfd3552ed70f4218e9771643cca8dd2673bca9dea04c9c + md5: 6bc8e496351bafd761c0922c3ebd989a + sha256: a11e1cf4404157467d0f51906d1db80bcb8bfe4bb3d3eba703b28e981ea7e308 category: main optional: false - name: gitpython - version: 3.1.41 + version: 3.1.42 manager: conda platform: osx-arm64 dependencies: + gitdb: '>=4.0.1,<5' python: '>=3.7' typing_extensions: '>=3.7.4.3' - gitdb: '>=4.0.1,<5' - url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.41-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.42-pyhd8ed1ab_0.conda hash: - md5: 84874a90c312088f7b5e63402fc44a58 - sha256: cf3c45156feec1fe8adfd3552ed70f4218e9771643cca8dd2673bca9dea04c9c + md5: 6bc8e496351bafd761c0922c3ebd989a + sha256: a11e1cf4404157467d0f51906d1db80bcb8bfe4bb3d3eba703b28e981ea7e308 category: main optional: false - name: glog @@ -4401,10 +4502,10 @@ package: dependencies: libgcc-ng: '>=12' libstdcxx-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_1.conda hash: - md5: 0e33ef437202db431aa5a928248cf2e8 - sha256: 2a50495b6bbbacb03107ea0b752d8358d4a40b572d124a8cade068c147f344f5 + md5: e358c7c5f6824c272b5034b3816438a7 + sha256: cfc4202c23d6895d9c84042d08d5cda47d597772df870d4d2a10fc86dded5576 category: main optional: false - name: gmp @@ -4412,12 +4513,11 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=10.9' - libcxx: '>=16.0.6' - url: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h965bd2d_0.conda + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-hebf3989_1.conda hash: - md5: bb8f17b25ebdb9d8819c2c5bf3ccb180 - sha256: d13f09ba46dc4732a3513da76da2352b9a6b71376dc3ba8210bbf1ca0c2e51e3 + md5: 64f45819921ba710398706e1a6404eb5 + sha256: 0ed5aff70675dc0ed5c2f39bb02b908b864e8eee4ceb56e1c798ba8d7509551f category: main optional: false - name: gmpy2 @@ -4454,7 +4554,7 @@ package: category: main optional: false - name: google-api-core - version: 2.16.1 + version: 2.17.1 manager: conda platform: linux-64 dependencies: @@ -4463,58 +4563,58 @@ package: protobuf: '>=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5' python: '>=3.7' requests: '>=2.18.0,<3.0.0.dev0' - url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.16.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.17.1-pyhd8ed1ab_0.conda hash: - md5: ba1b4d187955032ffcfa6352c7195725 - sha256: a97adfa4e587ac2f6fd69f4ea0b35be4449ecb17fd5895145d5347fb746e1d25 + md5: b505c957ab68e07800aaba6287ca008e + sha256: a92bf55d70fe4868c7c50163ed876939028ba3a2b513c5742282d8fc12a61074 category: main optional: false - name: google-api-core - version: 2.16.1 + version: 2.17.1 manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' google-auth: '>=2.14.1,<3.0.dev0' googleapis-common-protos: '>=1.56.2,<2.0.dev0' protobuf: '>=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5' + python: '>=3.7' requests: '>=2.18.0,<3.0.0.dev0' - url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.16.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.17.1-pyhd8ed1ab_0.conda hash: - md5: ba1b4d187955032ffcfa6352c7195725 - sha256: a97adfa4e587ac2f6fd69f4ea0b35be4449ecb17fd5895145d5347fb746e1d25 + md5: b505c957ab68e07800aaba6287ca008e + sha256: a92bf55d70fe4868c7c50163ed876939028ba3a2b513c5742282d8fc12a61074 category: main optional: false - name: google-api-core-grpc - version: 2.16.1 + version: 2.17.1 manager: conda platform: linux-64 dependencies: - google-api-core: 2.16.1 + google-api-core: 2.17.1 grpcio: '>=1.49.1,<2.0.dev0' grpcio-status: '>=1.49.1,<2.0.dev0' - url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-grpc-2.16.1-hd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-grpc-2.17.1-hd8ed1ab_0.conda hash: - md5: 0b2c1310eafb68277a2a0db9bd5bdbb9 - sha256: 24843e06d9f2b4ff3c904c59ff2f2a417ce797858c26ac8370bf332e2e8063bf + md5: 9dcac80e562d6471fdbc234604dab09c + sha256: f86d21641f1d44c67a81cfa68aca0031c762aaef7220f4ebca161f0455625c2c category: main optional: false - name: google-api-core-grpc - version: 2.16.1 + version: 2.17.1 manager: conda platform: osx-arm64 dependencies: + google-api-core: 2.17.1 grpcio: '>=1.49.1,<2.0.dev0' grpcio-status: '>=1.49.1,<2.0.dev0' - google-api-core: 2.16.1 - url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-grpc-2.16.1-hd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-grpc-2.17.1-hd8ed1ab_0.conda hash: - md5: 0b2c1310eafb68277a2a0db9bd5bdbb9 - sha256: 24843e06d9f2b4ff3c904c59ff2f2a417ce797858c26ac8370bf332e2e8063bf + md5: 9dcac80e562d6471fdbc234604dab09c + sha256: f86d21641f1d44c67a81cfa68aca0031c762aaef7220f4ebca161f0455625c2c category: main optional: false - name: google-auth - version: 2.27.0 + version: 2.28.2 manager: conda platform: linux-64 dependencies: @@ -4527,30 +4627,30 @@ package: pyu2f: '>=0.1.5' requests: '>=2.20.0,<3.0.0' rsa: '>=3.1.4,<5' - url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.27.0-pyhca7485f_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.28.2-pyhca7485f_0.conda hash: - md5: 8c9223d9a28c81c1be6a5fccc8f5358e - sha256: c9adad5b13fae467b0748c3ad9c639d5224fedccbb7e4bdc46b90a44f8d7a70a + md5: f8879cf0e5b8f7761d01bce40ce7c089 + sha256: b1ccc8d5110092867c6f58e044248f55836848b06acea280138b1adcae690dff category: main optional: false - name: google-auth - version: 2.27.0 + version: 2.28.2 manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' + aiohttp: '>=3.6.2,<4.0.0' + cachetools: '>=2.0.0,<6.0' + cryptography: '>=38.0.3' pyasn1-modules: '>=0.2.1' - rsa: '>=3.1.4,<5' pyopenssl: '>=20.0.0' + python: '>=3.7' pyu2f: '>=0.1.5' requests: '>=2.20.0,<3.0.0' - cachetools: '>=2.0.0,<6.0' - aiohttp: '>=3.6.2,<4.0.0' - cryptography: '>=38.0.3' - url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.27.0-pyhca7485f_0.conda + rsa: '>=3.1.4,<5' + url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.28.2-pyhca7485f_0.conda hash: - md5: 8c9223d9a28c81c1be6a5fccc8f5358e - sha256: c9adad5b13fae467b0748c3ad9c639d5224fedccbb7e4bdc46b90a44f8d7a70a + md5: f8879cf0e5b8f7761d01bce40ce7c089 + sha256: b1ccc8d5110092867c6f58e044248f55836848b06acea280138b1adcae690dff category: main optional: false - name: google-auth-oauthlib @@ -4573,10 +4673,10 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' - requests-oauthlib: '>=0.7.0' click: '>=6.0.0' google-auth: '>=2.15.0' + python: '>=3.6' + requests-oauthlib: '>=0.7.0' url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.2.0-pyhd8ed1ab_0.conda hash: md5: 2057f12885a73b4d621c075423cec969 @@ -4584,13 +4684,13 @@ package: category: main optional: false - name: google-cloud-bigquery - version: 3.17.1 + version: 3.19.0 manager: conda platform: linux-64 dependencies: db-dtypes: '>=0.3.0,<2.0.0dev' geopandas: '>=0.9.0,<1.0dev' - google-cloud-bigquery-core: 3.17.1 + google-cloud-bigquery-core: 3.19.0 google-cloud-bigquery-storage: '>=2.6.0,<3.0.0dev' grpcio: '>=1.49.1,<2.0dev' ipykernel: '>=6.0.0' @@ -4603,72 +4703,74 @@ package: python: '>=3.8' shapely: '>=1.8.4,<3.0.0dev' tqdm: '>=4.7.4,<=5.0.0dev' - url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-3.17.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-3.19.0-pyhd8ed1ab_0.conda hash: - md5: 81c510cb122c86fde736d9e35c2db4f4 - sha256: 537f9cc40d83bfc4c10ddb10b5bb63d23cbfee6997e82e772f487ce6b3a1b1b5 + md5: dd4a8cca66b72bee53373e2926f1d39c + sha256: a134a103b50285e521eeaa5bffd6b0b7efb69e6ab2e15f46354105e0d6ede412 category: main optional: false - name: google-cloud-bigquery - version: 3.17.1 + version: 3.19.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' - protobuf: '>=3.19.5,<5.0.0dev,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5' - pandas: '>=1.1.0' - tqdm: '>=4.7.4,<=5.0.0dev' - proto-plus: '>=1.15.0,<2.0.0dev' - geopandas: '>=0.9.0,<1.0dev' - pyarrow: '>=3.0.0' db-dtypes: '>=0.3.0,<2.0.0dev' + geopandas: '>=0.9.0,<1.0dev' + google-cloud-bigquery-core: 3.19.0 + google-cloud-bigquery-storage: '>=2.6.0,<3.0.0dev' grpcio: '>=1.49.1,<2.0dev' - ipywidgets: '>=7.7.0' ipykernel: '>=6.0.0' ipython: '>=7.23.1,!=8.1.0' - google-cloud-bigquery-storage: '>=2.6.0,<3.0.0dev' + ipywidgets: '>=7.7.0' + pandas: '>=1.1.0' + proto-plus: '>=1.15.0,<2.0.0dev' + protobuf: '>=3.19.5,<5.0.0dev,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5' + pyarrow: '>=3.0.0' + python: '>=3.8' shapely: '>=1.8.4,<3.0.0dev' - google-cloud-bigquery-core: 3.17.1 - url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-3.17.1-pyhd8ed1ab_0.conda + tqdm: '>=4.7.4,<=5.0.0dev' + url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-3.19.0-pyhd8ed1ab_0.conda hash: - md5: 81c510cb122c86fde736d9e35c2db4f4 - sha256: 537f9cc40d83bfc4c10ddb10b5bb63d23cbfee6997e82e772f487ce6b3a1b1b5 + md5: dd4a8cca66b72bee53373e2926f1d39c + sha256: a134a103b50285e521eeaa5bffd6b0b7efb69e6ab2e15f46354105e0d6ede412 category: main optional: false - name: google-cloud-bigquery-core - version: 3.17.1 + version: 3.19.0 manager: conda platform: linux-64 dependencies: - google-api-core: '>=1.31.5,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0' + google-api-core-grpc: '>=1.34.1,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,!=2.10.*' + google-auth: '>=2.14.1,<3.0.0dev' google-cloud-core: '>=1.6.0,<3.0.0dev' google-resumable-media: '>=0.6.0,<3.0dev' packaging: '>=20.0.0' python: '>=3.8' python-dateutil: '>=2.7.2,<3.0dev' requests: '>=2.21.0,<3.0.0dev' - url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-core-3.17.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-core-3.19.0-pyhd8ed1ab_0.conda hash: - md5: 4a60cd48f748cd5864e5eeac17232c94 - sha256: c5830d27b5d1a97223ab1e22273c0f3dec5865bdba39a056e2ca90aa0f41a7c4 + md5: e9a57c9845bcbaf6df5cb006b399d690 + sha256: 910415a2a06c29585957638f83837c6f5fb7b901de27eebbebff1cceecbdd682 category: main optional: false - name: google-cloud-bigquery-core - version: 3.17.1 + version: 3.19.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' + google-api-core-grpc: '>=1.34.1,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,!=2.10.*' + google-auth: '>=2.14.1,<3.0.0dev' + google-cloud-core: '>=1.6.0,<3.0.0dev' google-resumable-media: '>=0.6.0,<3.0dev' - google-api-core: '>=1.31.5,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0' + packaging: '>=20.0.0' + python: '>=3.8' python-dateutil: '>=2.7.2,<3.0dev' requests: '>=2.21.0,<3.0.0dev' - packaging: '>=20.0.0' - google-cloud-core: '>=1.6.0,<3.0.0dev' - url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-core-3.17.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-core-3.19.0-pyhd8ed1ab_0.conda hash: - md5: 4a60cd48f748cd5864e5eeac17232c94 - sha256: c5830d27b5d1a97223ab1e22273c0f3dec5865bdba39a056e2ca90aa0f41a7c4 + md5: e9a57c9845bcbaf6df5cb006b399d690 + sha256: 910415a2a06c29585957638f83837c6f5fb7b901de27eebbebff1cceecbdd682 category: main optional: false - name: google-cloud-bigquery-storage @@ -4692,11 +4794,11 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' - pyarrow: '>=0.15.0' fastavro: '>=0.21.2' - pandas: '>=0.21.1' google-cloud-bigquery-storage-core: 2.24.0.* + pandas: '>=0.21.1' + pyarrow: '>=0.15.0' + python: '>=3.8' url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-storage-2.24.0-pyhca7485f_0.conda hash: md5: 86a0630f1f8b18915d909503f17ca1e0 @@ -4723,10 +4825,10 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' + google-api-core-grpc: '>=1.34.0,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,!=2.10.*' proto-plus: '>=1.22.0,<2.0.0dev' protobuf: '>=3.19.5,<5.0.0dev,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5' - google-api-core-grpc: '>=1.34.0,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,!=2.10.*' + python: '>=3.8' url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-bigquery-storage-core-2.24.0-pyhca7485f_0.conda hash: md5: 1d1a6f7938f1a29044e676d112c0b424 @@ -4753,10 +4855,10 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' - google-auth: '>=1.25.0,<3.0dev' google-api-core: '>=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0' + google-auth: '>=1.25.0,<3.0dev' grpcio: '>=1.38.0,<2.0.0dev' + python: '>=3.8' url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.4.1-pyhd8ed1ab_0.conda hash: md5: 1853cdebbfe25fb6ee253855a44945a6 @@ -4787,14 +4889,14 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' - requests: '>=2.18.0,<3.0.0dev' google-api-core: '>=1.31.5,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0' + google-auth: '>=2.23.3,<3.0dev' google-cloud-core: '>=2.3.0,<3.0dev' google-crc32c: '>=1.0,<2.0dev' - protobuf: <5.0.0dev google-resumable-media: '>=2.6.0' - google-auth: '>=2.23.3,<3.0dev' + protobuf: <5.0.0dev + python: '>=3.6' + requests: '>=2.18.0,<3.0.0dev' url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.14.0-pyhca7485f_0.conda hash: md5: 7b2a2b429fd0b5571544019a6814cfe4 @@ -4876,8 +4978,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' google-crc32c: '>=1.0,<2.0.0dev' + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.7.0-pyhd8ed1ab_0.conda hash: md5: 28d1e160d8b2e405b16bb40773135225 @@ -4885,29 +4987,29 @@ package: category: main optional: false - name: googleapis-common-protos - version: 1.62.0 + version: 1.63.0 manager: conda platform: linux-64 dependencies: protobuf: '>=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.62.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.63.0-pyhd8ed1ab_0.conda hash: - md5: ca3d0c7ba3a15e943d9c715aba03ae62 - sha256: 70da3fc08a742022c666d9807f0caba60be1ddbf09b6642c168001bace18c724 + md5: 058e77f4f0285aa4945c5539de931ff0 + sha256: 41d3eea46623836e2be7234bdbfc0e7a42fc0853229c687cea6d7b652bb4a4fa category: main optional: false - name: googleapis-common-protos - version: 1.62.0 + version: 1.63.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' protobuf: '>=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5' - url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.62.0-pyhd8ed1ab_0.conda + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.63.0-pyhd8ed1ab_0.conda hash: - md5: ca3d0c7ba3a15e943d9c715aba03ae62 - sha256: 70da3fc08a742022c666d9807f0caba60be1ddbf09b6642c168001bace18c724 + md5: 058e77f4f0285aa4945c5539de931ff0 + sha256: 41d3eea46623836e2be7234bdbfc0e7a42fc0853229c687cea6d7b652bb4a4fa category: main optional: false - name: graphite2 @@ -4986,12 +5088,12 @@ package: category: main optional: false - name: great-expectations - version: 0.18.8 + version: 0.18.11 manager: conda platform: linux-64 dependencies: altair: '>=4.2.1,<5.0.0' - click: '>=7.1.2,!=8.1.4' + click: '>=7.1.2' colorama: '>=0.4.3' cryptography: '>=3.2' ipython: '>=7.16.3' @@ -5019,50 +5121,50 @@ package: typing-extensions: '>=3.10.0.0' tzlocal: '>=1.2' urllib3: '>=1.26' - url: https://conda.anaconda.org/conda-forge/noarch/great-expectations-0.18.8-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/great-expectations-0.18.11-pyhd8ed1ab_0.conda hash: - md5: aec88c7640df4638b89356cc72732d67 - sha256: 85f91a1d5ed6e80653a7f9d3564a4fdb5d67e1947e51479006ebd674c4bbb669 + md5: f5fec30dfe5c45d15f7de3dac276d965 + sha256: 3c95a8573889782fc227cc6e5273e80cba9fde10af314d86e5868ae9cae74bfe category: main optional: false - name: great-expectations - version: 0.18.8 + version: 0.18.11 manager: conda platform: osx-arm64 dependencies: - packaging: '' - python: '>=3.8' - requests: '>=2.20' - jinja2: '>=2.10' - pandas: '>=1.1.0' - python-dateutil: '>=2.8.1' - ipywidgets: '>=7.5.1' + altair: '>=4.2.1,<5.0.0' + click: '>=7.1.2' colorama: '>=0.4.3' - jsonschema: '>=2.5.1' - tqdm: '>=4.59.0' - tzlocal: '>=1.2' - scipy: '>=1.6.0' + cryptography: '>=3.2' + ipython: '>=7.16.3' + ipywidgets: '>=7.5.1' + jinja2: '>=2.10' jsonpatch: '>=1.22' + jsonschema: '>=2.5.1' + makefun: '>=1.7.0,<2' + marshmallow: '>=3.7.1,<4.0.0' mistune: '>=0.8.4' - typing-extensions: '>=3.10.0.0' - pytz: '>=2021.3' nbformat: '>=5.0' - ruamel.yaml: '>=0.16,<0.17.18' - ipython: '>=7.16.3' - urllib3: '>=1.26' - cryptography: '>=3.2' notebook: '>=6.4.10' - pyparsing: '>=2.4' - makefun: '>=1.7.0,<2' - marshmallow: '>=3.7.1,<4.0.0' numpy: '>=1.20.3' - altair: '>=4.2.1,<5.0.0' - click: '>=7.1.2,!=8.1.4' + packaging: '' + pandas: '>=1.1.0' pydantic: '>=1.9.2' - url: https://conda.anaconda.org/conda-forge/noarch/great-expectations-0.18.8-pyhd8ed1ab_0.conda + pyparsing: '>=2.4' + python: '>=3.8' + python-dateutil: '>=2.8.1' + pytz: '>=2021.3' + requests: '>=2.20' + ruamel.yaml: '>=0.16,<0.17.18' + scipy: '>=1.6.0' + tqdm: '>=4.59.0' + typing-extensions: '>=3.10.0.0' + tzlocal: '>=1.2' + urllib3: '>=1.26' + url: https://conda.anaconda.org/conda-forge/noarch/great-expectations-0.18.11-pyhd8ed1ab_0.conda hash: - md5: aec88c7640df4638b89356cc72732d67 - sha256: 85f91a1d5ed6e80653a7f9d3564a4fdb5d67e1947e51479006ebd674c4bbb669 + md5: f5fec30dfe5c45d15f7de3dac276d965 + sha256: 3c95a8573889782fc227cc6e5273e80cba9fde10af314d86e5868ae9cae74bfe category: main optional: false - name: greenlet @@ -5116,16 +5218,15 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=10.9' - libcxx: '>=16.0.6' + libcxx: '>=16' libgrpc: 1.59.3 libzlib: '>=1.2.13,<1.3.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.59.3-py39h52f163a_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.59.3-py39h047a24b_0.conda hash: - md5: 65c1499ad010b38f0acab66e753f43b8 - sha256: 9939546b8eaf9a5666b31f872e6d70950139b108a557f3a1a3f14f0548af1fb3 + md5: 1afaf768107e5ab3284afb7d64d4a99c + sha256: 9f508baa6330ecf5a4a8129049e25ae40b2e534979a52995a6df08d8b65b7651 category: main optional: false - name: grpcio-status @@ -5148,10 +5249,10 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' googleapis-common-protos: '>=1.5.5' - protobuf: '>=4.21.6' grpcio: '>=1.59.3' + protobuf: '>=4.21.6' + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.59.3-pyhd8ed1ab_0.conda hash: md5: 667999da148378ada5b9f13e7f3850c3 @@ -5165,15 +5266,21 @@ package: dependencies: atk-1.0: '>=2.38.0' cairo: '>=1.18.0,<2.0a0' + fontconfig: '>=2.14.2,<3.0a0' + fonts-conda-ecosystem: '' + freetype: '>=2.12.1,<3.0a0' gdk-pixbuf: '>=2.42.10,<3.0a0' - gettext: '>=0.21.1,<1.0a0' + harfbuzz: '>=8.3.0,<9.0a0' libgcc-ng: '>=12' - libglib: '>=2.78.3,<3.0a0' + libglib: '>=2.78.4,<3.0a0' pango: '>=1.50.14,<2.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h7f000aa_3.conda + xorg-libx11: '>=1.8.7,<2.0a0' + xorg-libxext: '>=1.3.4,<2.0a0' + xorg-libxrender: '>=0.9.11,<0.10.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda hash: - md5: 0abfa7f9241a0f4fd732bc15773cfb0c - sha256: e659f5eca2a5f21d5fe859d8d1dae132a284800eb017b8b4e2286b252a230527 + md5: 410f86e58e880dcc7b0e910a8e89c05c + sha256: b946ba60d177d72157cad8af51723f1d081a4794741d35debe53f8b2c807f3af category: main optional: false - name: gtk2 @@ -5185,12 +5292,12 @@ package: cairo: '>=1.18.0,<2.0a0' gdk-pixbuf: '>=2.42.10,<3.0a0' gettext: '>=0.21.1,<1.0a0' - libglib: '>=2.78.3,<3.0a0' + libglib: '>=2.78.4,<3.0a0' pango: '>=1.50.14,<2.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h7895bb2_3.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h7895bb2_4.conda hash: - md5: e3d35c8b7a8fdb840c286ccaf0f082b2 - sha256: 63062472f3173991ce521f045f3a5dd5c7e147d127476b0c3a20a2aca03339e6 + md5: 9c1ba062d59f3f49a2d32d9611d72686 + sha256: fab8403a67273f69780b1e9b5f1db1aff74ff9472acc9f6df6d9b50fc252bd50 category: main optional: false - name: gts @@ -5250,6 +5357,60 @@ package: sha256: 6dbbb2958d2c369bcab4a8a52ac0734b7fce477d9ba86d623d60e34666421f6e category: main optional: false +- name: h11 + version: 0.14.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3' + typing_extensions: '' + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 + hash: + md5: b21ed0883505ba1910994f1df031a428 + sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 + category: main + optional: false +- name: h11 + version: 0.14.0 + manager: conda + platform: osx-arm64 + dependencies: + python: '>=3' + typing_extensions: '' + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 + hash: + md5: b21ed0883505ba1910994f1df031a428 + sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 + category: main + optional: false +- name: h2 + version: 4.1.0 + manager: conda + platform: linux-64 + dependencies: + hpack: '>=4.0,<5' + hyperframe: '>=6.0,<7' + python: '>=3.6.1' + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + hash: + md5: b748fbf7060927a6e82df7cb5ee8f097 + sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a + category: main + optional: false +- name: h2 + version: 4.1.0 + manager: conda + platform: osx-arm64 + dependencies: + hpack: '>=4.0,<5' + hyperframe: '>=6.0,<7' + python: '>=3.6.1' + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + hash: + md5: b748fbf7060927a6e82df7cb5ee8f097 + sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a + category: main + optional: false - name: h5py version: 3.10.0 manager: conda @@ -5386,8 +5547,100 @@ package: sha256: 22331a0ac71a4dd1868f05f8197c36815a41a9f2dcfd01b73ff0d87d9e0ea087 category: main optional: false +- name: hpack + version: 4.0.0 + manager: conda + platform: linux-64 + dependencies: + python: '' + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + hash: + md5: 914d6646c4dbb1fd3ff539830a12fd71 + sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 + category: main + optional: false +- name: hpack + version: 4.0.0 + manager: conda + platform: osx-arm64 + dependencies: + python: '' + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + hash: + md5: 914d6646c4dbb1fd3ff539830a12fd71 + sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 + category: main + optional: false +- name: httpcore + version: 1.0.4 + manager: conda + platform: linux-64 + dependencies: + anyio: '>=3.0,<5.0' + certifi: '' + h11: '>=0.13,<0.15' + h2: '>=3,<5' + python: '>=3.8' + sniffio: 1.* + url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda + hash: + md5: 20f047662cf4fa8b97836111df87dbb4 + sha256: dec07ca00223d52433e7c20c71d5e645a7828b3e50206d855ad7a540869341f2 + category: main + optional: false +- name: httpcore + version: 1.0.4 + manager: conda + platform: osx-arm64 + dependencies: + anyio: '>=3.0,<5.0' + certifi: '' + h11: '>=0.13,<0.15' + h2: '>=3,<5' + python: '>=3.8' + sniffio: 1.* + url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda + hash: + md5: 20f047662cf4fa8b97836111df87dbb4 + sha256: dec07ca00223d52433e7c20c71d5e645a7828b3e50206d855ad7a540869341f2 + category: main + optional: false +- name: httpx + version: 0.27.0 + manager: conda + platform: linux-64 + dependencies: + anyio: '' + certifi: '' + httpcore: 1.* + idna: '' + python: '>=3.8' + sniffio: '' + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda + hash: + md5: 9f359af5a886fd6ca6b2b6ea02e58332 + sha256: fdaf341fb2630b7afe8238315448fc93947f77ebfa4da68bb349e1bcf820af58 + category: main + optional: false +- name: httpx + version: 0.27.0 + manager: conda + platform: osx-arm64 + dependencies: + anyio: '' + certifi: '' + httpcore: 1.* + idna: '' + python: '>=3.8' + sniffio: '' + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda + hash: + md5: 9f359af5a886fd6ca6b2b6ea02e58332 + sha256: fdaf341fb2630b7afe8238315448fc93947f77ebfa4da68bb349e1bcf820af58 + category: main + optional: false - name: huggingface_hub - version: 0.20.2 + version: 0.21.4 manager: conda platform: linux-64 dependencies: @@ -5399,29 +5652,53 @@ package: requests: '' tqdm: '>=4.42.1' typing-extensions: '>=3.7.4.3' - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.20.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.21.4-pyhd8ed1ab_0.conda hash: - md5: 3f4e4c828523dcac4829d7362b60ef8f - sha256: 3d036f2cf10e8bea177514b667a21912774d339aa8403b85c6883b61ca041e09 + md5: d47cf217a7bcc3a03dd1c6169c3f0f98 + sha256: e748e5f1ed8cbcbdcc4dd0e0da14063687bb1c3b65c4266f81b73cb56801805e category: main optional: false - name: huggingface_hub - version: 0.20.2 + version: 0.21.4 manager: conda platform: osx-arm64 dependencies: - requests: '' filelock: '' + fsspec: '>=2023.5.0' + packaging: '>=20.9' python: '>=3.8' pyyaml: '>=5.1' - packaging: '>=20.9' - typing-extensions: '>=3.7.4.3' - fsspec: '>=2023.5.0' + requests: '' tqdm: '>=4.42.1' - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.20.2-pyhd8ed1ab_0.conda + typing-extensions: '>=3.7.4.3' + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.21.4-pyhd8ed1ab_0.conda hash: - md5: 3f4e4c828523dcac4829d7362b60ef8f - sha256: 3d036f2cf10e8bea177514b667a21912774d339aa8403b85c6883b61ca041e09 + md5: d47cf217a7bcc3a03dd1c6169c3f0f98 + sha256: e748e5f1ed8cbcbdcc4dd0e0da14063687bb1c3b65c4266f81b73cb56801805e + category: main + optional: false +- name: hyperframe + version: 6.0.1 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + hash: + md5: 9f765cbfab6870c8435b9eefecd7a1f4 + sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 + category: main + optional: false +- name: hyperframe + version: 6.0.1 + manager: conda + platform: osx-arm64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + hash: + md5: 9f765cbfab6870c8435b9eefecd7a1f4 + sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 category: main optional: false - name: icu @@ -5449,29 +5726,29 @@ package: category: main optional: false - name: identify - version: 2.5.33 + version: 2.5.35 manager: conda platform: linux-64 dependencies: python: '>=3.6' ukkonen: '' - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.33-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.35-pyhd8ed1ab_0.conda hash: - md5: 93c8f8ceb83827d88deeba796f07fba7 - sha256: ce2a64c18221af96226be23278d81f22ff9f64b3c047d8865590f6718915303f + md5: 9472bfd206a2b7bb8143835e37667054 + sha256: 971683b13d1b820157bef9993c63dd8b0611d2d60fc4b522da163aee2e70e518 category: main optional: false - name: identify - version: 2.5.33 + version: 2.5.35 manager: conda platform: osx-arm64 dependencies: - ukkonen: '' python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.33-pyhd8ed1ab_0.conda + ukkonen: '' + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.35-pyhd8ed1ab_0.conda hash: - md5: 93c8f8ceb83827d88deeba796f07fba7 - sha256: ce2a64c18221af96226be23278d81f22ff9f64b3c047d8865590f6718915303f + md5: 9472bfd206a2b7bb8143835e37667054 + sha256: 971683b13d1b820157bef9993c63dd8b0611d2d60fc4b522da163aee2e70e518 category: main optional: false - name: idna @@ -5549,29 +5826,29 @@ package: category: main optional: false - name: importlib-resources - version: 6.1.1 + version: 6.3.0 manager: conda platform: linux-64 dependencies: - importlib_resources: '>=6.1.1,<6.1.2.0a0' + importlib_resources: '>=6.3.0,<6.3.1.0a0' python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.1.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.3.0-pyhd8ed1ab_0.conda hash: - md5: d04bd1b5bed9177dd7c3cef15e2b6710 - sha256: 89492a6619776e83d30fcdc6915fcb3a657cd345abcf68fdf6655540494ab0f0 + md5: 828e394294c4a0e31872a9f420cf92f7 + sha256: ed401d44578cec3bf8bd924bee7867c6d86c0707e55dd543b99640fa0fc85e47 category: main optional: false - name: importlib-resources - version: 6.1.1 + version: 6.3.0 manager: conda platform: osx-arm64 dependencies: + importlib_resources: '>=6.3.0,<6.3.1.0a0' python: '>=3.8' - importlib_resources: '>=6.1.1,<6.1.2.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.1.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.3.0-pyhd8ed1ab_0.conda hash: - md5: d04bd1b5bed9177dd7c3cef15e2b6710 - sha256: 89492a6619776e83d30fcdc6915fcb3a657cd345abcf68fdf6655540494ab0f0 + md5: 828e394294c4a0e31872a9f420cf92f7 + sha256: ed401d44578cec3bf8bd924bee7867c6d86c0707e55dd543b99640fa0fc85e47 category: main optional: false - name: importlib_metadata @@ -5599,33 +5876,33 @@ package: category: main optional: false - name: importlib_resources - version: 6.1.1 + version: 6.3.0 manager: conda platform: linux-64 dependencies: python: '>=3.8' zipp: '>=3.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.3.0-pyhd8ed1ab_0.conda hash: - md5: 3d5fa25cf42f3f32a12b2d874ace8574 - sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed + md5: 18850e65ca439066484607b26ed09ecd + sha256: 8ad2fdd72f6a0ebefaa1496d2f43f100596f1733468fd9b549891f6195a5b8cb category: main optional: false - name: importlib_resources - version: 6.1.1 + version: 6.3.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' zipp: '>=3.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.3.0-pyhd8ed1ab_0.conda hash: - md5: 3d5fa25cf42f3f32a12b2d874ace8574 - sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed + md5: 18850e65ca439066484607b26ed09ecd + sha256: 8ad2fdd72f6a0ebefaa1496d2f43f100596f1733468fd9b549891f6195a5b8cb category: main optional: false - name: ipykernel - version: 6.29.0 + version: 6.29.3 manager: conda platform: linux-64 dependencies: @@ -5643,36 +5920,36 @@ package: pyzmq: '>=24' tornado: '>=6.1' traitlets: '>=5.4.0' - url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.0-pyhd33586a_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.3-pyhd33586a_0.conda hash: - md5: 10915bfa94b94f4ad0f347efd124a339 - sha256: fa82aa089d474d11e63deb4b433acb9618294fe6b3b08123d7a269f72c0cc8ca + md5: e0deff12c601ce5cb7476f93718f3168 + sha256: 0314f15e666fd9a4fb653aae37d2cf4dc6bc3a18c0d9c2671a6a0783146adcfa category: main optional: false - name: ipykernel - version: 6.29.0 + version: 6.29.3 manager: conda platform: osx-arm64 dependencies: - packaging: '' - psutil: '' - nest-asyncio: '' __osx: '' appnope: '' - python: '>=3.8' - tornado: '>=6.1' + comm: '>=0.1.1' + debugpy: '>=1.6.5' + ipython: '>=7.23.1' jupyter_client: '>=6.1.12' jupyter_core: '>=4.12,!=5.0.*' - ipython: '>=7.23.1' matplotlib-inline: '>=0.1' - debugpy: '>=1.6.5' - comm: '>=0.1.1' - traitlets: '>=5.4.0' + nest-asyncio: '' + packaging: '' + psutil: '' + python: '>=3.8' pyzmq: '>=24' - url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.0-pyh3cd1d5f_0.conda + tornado: '>=6.1' + traitlets: '>=5.4.0' + url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.3-pyh3cd1d5f_0.conda hash: - md5: 17b1e24f82177f01ac7c6c518288612c - sha256: 6df088b8d356281347a71388315c7bbf49f0a5a10e6b16000553a43d74f5222d + md5: 28e74fca8d8abf09c1ed0d190a17e307 + sha256: ef2f9c1d83afd693db3793c368c5c6afcd37a416958ece490a2e1fbcd85012eb category: main optional: false - name: ipython @@ -5704,19 +5981,19 @@ package: manager: conda platform: osx-arm64 dependencies: - typing_extensions: '' __unix: '' decorator: '' exceptiongroup: '' - stack_data: '' + jedi: '>=0.16' matplotlib-inline: '' + pexpect: '>4.3' pickleshare: '' - python: '>=3.9' + prompt-toolkit: '>=3.0.41,<3.1.0' pygments: '>=2.4.0' + python: '>=3.9' + stack_data: '' traitlets: '>=5' - jedi: '>=0.16' - pexpect: '>4.3' - prompt-toolkit: '>=3.0.41,<3.1.0' + typing_extensions: '' url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda hash: md5: 15c6f45a45f7ac27f6d60b0b084f6761 @@ -5724,37 +6001,37 @@ package: category: main optional: false - name: ipywidgets - version: 8.1.1 + version: 8.1.2 manager: conda platform: linux-64 dependencies: comm: '>=0.1.3' ipython: '>=6.1.0' - jupyterlab_widgets: '>=3.0.9,<3.1.0' + jupyterlab_widgets: '>=3.0.10,<3.1.0' python: '>=3.7' traitlets: '>=4.3.1' - widgetsnbextension: '>=4.0.9,<4.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda + widgetsnbextension: '>=4.0.10,<4.1.0' + url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.2-pyhd8ed1ab_0.conda hash: - md5: 2605fae5ee27100e5f10037baebf4d41 - sha256: 8136defec115396ba992273a77f814d74eeafd9cc099f5430d109c60785a7f02 + md5: 67f86478c78637f68c1f3858973021f2 + sha256: 0be846f1374faa2d9b6f5e100187d56afa9268221f7c7815265f30aa008da8ca category: main optional: false - name: ipywidgets - version: 8.1.1 + version: 8.1.2 manager: conda platform: osx-arm64 dependencies: + comm: '>=0.1.3' + ipython: '>=6.1.0' + jupyterlab_widgets: '>=3.0.10,<3.1.0' python: '>=3.7' traitlets: '>=4.3.1' - ipython: '>=6.1.0' - comm: '>=0.1.3' - jupyterlab_widgets: '>=3.0.9,<3.1.0' - widgetsnbextension: '>=4.0.9,<4.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda + widgetsnbextension: '>=4.0.10,<4.1.0' + url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.2-pyhd8ed1ab_0.conda hash: - md5: 2605fae5ee27100e5f10037baebf4d41 - sha256: 8136defec115396ba992273a77f814d74eeafd9cc099f5430d109c60785a7f02 + md5: 67f86478c78637f68c1f3858973021f2 + sha256: 0be846f1374faa2d9b6f5e100187d56afa9268221f7c7815265f30aa008da8ca category: main optional: false - name: isodate @@ -5775,8 +6052,8 @@ package: manager: conda platform: osx-arm64 dependencies: - six: '' python: '>=3.6' + six: '' url: https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2 hash: md5: 4a62c93c1b5c0b920508ae3fd285eaf5 @@ -5801,8 +6078,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' arrow: '>=0.15.0' + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 hash: md5: 4cb68948e0b8429534380243d063a27a @@ -5834,29 +6111,29 @@ package: category: main optional: false - name: jaraco.classes - version: 3.3.0 + version: 3.3.1 manager: conda platform: linux-64 dependencies: more-itertools: '' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.1-pyhd8ed1ab_0.conda hash: - md5: e9f79248d30e942f7c358ff21a1790f5 - sha256: 14f5240c3834e1b784dd41a5a14392d9150dff62a74ae851f73e65d2e2bbd891 + md5: c541ae264c9f1f21d83fc30dffb908ee + sha256: 232b40de8176fa7fb66a893653f8ae03c29616e04a83dae5a47df94b74e256ca category: main optional: false - name: jaraco.classes - version: 3.3.0 + version: 3.3.1 manager: conda platform: osx-arm64 dependencies: more-itertools: '' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.1-pyhd8ed1ab_0.conda hash: - md5: e9f79248d30e942f7c358ff21a1790f5 - sha256: 14f5240c3834e1b784dd41a5a14392d9150dff62a74ae851f73e65d2e2bbd891 + md5: c541ae264c9f1f21d83fc30dffb908ee + sha256: 232b40de8176fa7fb66a893653f8ae03c29616e04a83dae5a47df94b74e256ca category: main optional: false - name: jedi @@ -5877,8 +6154,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' parso: '>=0.8.3,<0.9.0' + python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda hash: md5: 81a3be0b2023e1ea8555781f0ad904a2 @@ -5915,8 +6192,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' markupsafe: '>=2.0' + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.3-pyhd8ed1ab_0.conda hash: md5: e7d8df6509ba635247ff9aea31134262 @@ -5965,8 +6242,8 @@ package: manager: conda platform: osx-arm64 dependencies: - setuptools: '' python: '>=3.7' + setuptools: '' url: https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda hash: md5: 4da50d410f553db77e62ab62ffaa1abc @@ -5997,27 +6274,27 @@ package: category: main optional: false - name: json5 - version: 0.9.14 + version: 0.9.24 manager: conda platform: linux-64 dependencies: python: '>=3.7,<4.0' - url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.24-pyhd8ed1ab_0.conda hash: - md5: dac1dabba2b5a9d1aee175c5fcc7b436 - sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7 + md5: fc9780a517b51ea3798fc011c17ffd51 + sha256: 148a427d4867ecd367b2bb9c2ef11ae7795abeabc8454f802f28ff692b3ce1aa category: main optional: false - name: json5 - version: 0.9.14 + version: 0.9.24 manager: conda platform: osx-arm64 dependencies: python: '>=3.7,<4.0' - url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.24-pyhd8ed1ab_0.conda hash: - md5: dac1dabba2b5a9d1aee175c5fcc7b436 - sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7 + md5: fc9780a517b51ea3798fc011c17ffd51 + sha256: 148a427d4867ecd367b2bb9c2ef11ae7795abeabc8454f802f28ff692b3ce1aa category: main optional: false - name: jsonpatch @@ -6038,8 +6315,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' jsonpointer: '>=1.9' + python: '>=3.8' url: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda hash: md5: bfdb7c5c6ad1077c82a69a8642c87aff @@ -6121,11 +6398,11 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' attrs: '>=22.2.0' importlib_resources: '>=1.4.0' - pkgutil-resolve-name: '>=1.3.10' jsonschema-specifications: '>=2023.03.6' + pkgutil-resolve-name: '>=1.3.10' + python: '>=3.8' referencing: '>=0.28.4' rpds-py: '>=0.7.1' url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.21.1-pyhd8ed1ab_0.conda @@ -6153,8 +6430,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' importlib_resources: '>=1.4.0' + python: '>=3.8' referencing: '>=0.31.0' url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda hash: @@ -6188,16 +6465,16 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '' - idna: '' - rfc3339-validator: '' - uri-template: '' fqdn: '' + idna: '' isoduration: '' jsonpointer: '>1.13' - webcolors: '>=1.11' - rfc3986-validator: '>0.1.0' jsonschema: '>=4.21.1,<4.21.2.0a0' + python: '' + rfc3339-validator: '' + rfc3986-validator: '>0.1.0' + uri-template: '' + webcolors: '>=1.11' url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.21.1-pyhd8ed1ab_0.conda hash: md5: 26bce4b5405738c09304d4f4796b2c2a @@ -6227,13 +6504,13 @@ package: manager: conda platform: osx-arm64 dependencies: - ipywidgets: '' - notebook: '' - nbconvert: '' ipykernel: '' - qtconsole-base: '' + ipywidgets: '' jupyter_console: '' + nbconvert: '' + notebook: '' python: '>=3.6' + qtconsole-base: '' url: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda hash: md5: 056b8cc3d9b03f54fc49e6d70d7dc359 @@ -6265,15 +6542,15 @@ package: manager: conda platform: osx-arm64 dependencies: - pyyaml: '' + attrs: '' click: '' importlib-metadata: '' - tabulate: '' - attrs: '' + nbclient: '>=0.2,<0.8' nbformat: '' python: '>=3.8' + pyyaml: '' sqlalchemy: '>=1.3.12,<3' - nbclient: '>=0.2,<0.8' + tabulate: '' url: https://conda.anaconda.org/conda-forge/noarch/jupyter-cache-0.6.1-pyhd8ed1ab_0.conda hash: md5: 2e360820ae68e3d28e1a5a9d2714ca5c @@ -6281,35 +6558,35 @@ package: category: main optional: false - name: jupyter-lsp - version: 2.2.2 + version: 2.2.4 manager: conda platform: linux-64 dependencies: importlib-metadata: '>=4.8.3' jupyter_server: '>=1.1.2' python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.4-pyhd8ed1ab_0.conda hash: - md5: ed56b103cac2db68f22909e9f5cca6b6 - sha256: d8ab253be3df67be1b31fe040a8386e071ff065ef4442b94a722a45fa3562fbe + md5: 91f93e1ebf6535be518715432d89fd92 + sha256: 8000b1904a2a10cf039b46305781128e1a93da4c2fd857445b4924ecf3535bdb category: main optional: false - name: jupyter-lsp - version: 2.2.2 + version: 2.2.4 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' importlib-metadata: '>=4.8.3' jupyter_server: '>=1.1.2' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.2-pyhd8ed1ab_0.conda + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.4-pyhd8ed1ab_0.conda hash: - md5: ed56b103cac2db68f22909e9f5cca6b6 - sha256: d8ab253be3df67be1b31fe040a8386e071ff065ef4442b94a722a45fa3562fbe + md5: 91f93e1ebf6535be518715432d89fd92 + sha256: 8000b1904a2a10cf039b46305781128e1a93da4c2fd857445b4924ecf3535bdb category: main optional: false - name: jupyter_client - version: 8.6.0 + version: 8.6.1 manager: conda platform: linux-64 dependencies: @@ -6320,28 +6597,28 @@ package: pyzmq: '>=23.0' tornado: '>=6.2' traitlets: '>=5.3' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.1-pyhd8ed1ab_0.conda hash: - md5: 6bd3f1069cdebb44c7ae9efb900e312d - sha256: 86cbb9070862cf23a245451efce539ca214e610849d0950bb8ac90c545bd158d + md5: c03972cfce69ad913d520c652e5ed908 + sha256: c7d10d7941fd2e61480e49d3b2b21a530af4ae4b0d449a1746a72a38bacb63e2 category: main optional: false - name: jupyter_client - version: 8.6.0 + version: 8.6.1 manager: conda platform: osx-arm64 dependencies: + importlib_metadata: '>=4.8.3' + jupyter_core: '>=4.12,!=5.0.*' python: '>=3.8' python-dateutil: '>=2.8.2' - jupyter_core: '>=4.12,!=5.0.*' - traitlets: '>=5.3' - importlib_metadata: '>=4.8.3' pyzmq: '>=23.0' tornado: '>=6.2' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.0-pyhd8ed1ab_0.conda + traitlets: '>=5.3' + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.1-pyhd8ed1ab_0.conda hash: - md5: 6bd3f1069cdebb44c7ae9efb900e312d - sha256: 86cbb9070862cf23a245451efce539ca214e610849d0950bb8ac90c545bd158d + md5: c03972cfce69ad913d520c652e5ed908 + sha256: c7d10d7941fd2e61480e49d3b2b21a530af4ae4b0d449a1746a72a38bacb63e2 category: main optional: false - name: jupyter_console @@ -6369,15 +6646,15 @@ package: manager: conda platform: osx-arm64 dependencies: + ipykernel: '>=6.14' ipython: '' + jupyter_client: '>=7.0.0' + jupyter_core: '>=4.12,!=5.0.*' + prompt_toolkit: '>=3.0.30' pygments: '' python: '>=3.7' pyzmq: '>=17' - jupyter_core: '>=4.12,!=5.0.*' - jupyter_client: '>=7.0.0' - ipykernel: '>=6.14' traitlets: '>=5.4' - prompt_toolkit: '>=3.0.30' url: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda hash: md5: 7cf6f52a66f8e3cd9d8b6c231262dcab @@ -6385,7 +6662,7 @@ package: category: main optional: false - name: jupyter_core - version: 5.7.1 + version: 5.7.2 manager: conda platform: linux-64 dependencies: @@ -6393,14 +6670,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* traitlets: '>=5.3' - url: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.1-py39hf3d152e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py39hf3d152e_0.conda hash: - md5: 0195c150e0768bc4caccdff46a12075c - sha256: 7527ebd9196d4d22c428854e065dc336a8d184bbd1f7264fa1139af493d3f7d6 + md5: 612f7a003a8a407955572c0d53952ceb + sha256: fbe43f4db84cd4eb0b3eed971a197237c9a0d53fa90b695a7fa82e4ccd193cbf category: main optional: false - name: jupyter_core - version: 5.7.1 + version: 5.7.2 manager: conda platform: osx-arm64 dependencies: @@ -6408,14 +6685,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* traitlets: '>=5.3' - url: https://conda.anaconda.org/conda-forge/osx-arm64/jupyter_core-5.7.1-py39h2804cbe_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/jupyter_core-5.7.2-py39h2804cbe_0.conda hash: - md5: 7a804a3d9c0a04e3b0e0ce1a9f3fdc03 - sha256: e4cb996a1878b0cace1a8e4d05543099fe0a9c691c3932662c04709a4197ce95 + md5: 4466162887415f41a30c5c70776bee76 + sha256: 8f76dc3754b315d16b1c3a64e387477c4ea4556358b87c80b4b7f37314a25ea9 category: main optional: false - name: jupyter_events - version: 0.9.0 + version: 0.9.1 manager: conda platform: linux-64 dependencies: @@ -6427,33 +6704,33 @@ package: rfc3339-validator: '' rfc3986-validator: '>=0.1.1' traitlets: '>=5.3' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.1-pyhd8ed1ab_0.conda hash: - md5: 00ba25993f0dba38cf72a7224e33289f - sha256: 713f0cc927a862862a6d35bfb29c4114f987e4f59e2a8a14f71f23fcd7edfec3 + md5: 331ea2fc883fc5f2fc002a4e66e38bc5 + sha256: 9054dea8926daf867ee0f366b3b45579e1bd16cbc7667d1f7541531d037fdbfd category: main optional: false - name: jupyter_events - version: 0.9.0 + version: 0.9.1 manager: conda platform: osx-arm64 dependencies: - rfc3339-validator: '' - referencing: '' + jsonschema-with-format-nongpl: '>=4.18.0' python: '>=3.8' + python-json-logger: '>=2.0.4' pyyaml: '>=5.3' + referencing: '' + rfc3339-validator: '' rfc3986-validator: '>=0.1.1' traitlets: '>=5.3' - python-json-logger: '>=2.0.4' - jsonschema-with-format-nongpl: '>=4.18.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.1-pyhd8ed1ab_0.conda hash: - md5: 00ba25993f0dba38cf72a7224e33289f - sha256: 713f0cc927a862862a6d35bfb29c4114f987e4f59e2a8a14f71f23fcd7edfec3 + md5: 331ea2fc883fc5f2fc002a4e66e38bc5 + sha256: 9054dea8926daf867ee0f366b3b45579e1bd16cbc7667d1f7541531d037fdbfd category: main optional: false - name: jupyter_server - version: 2.12.5 + version: 2.13.0 manager: conda platform: linux-64 dependencies: @@ -6476,74 +6753,75 @@ package: tornado: '>=6.2.0' traitlets: '>=5.6.0' websocket-client: '' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.12.5-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.13.0-pyhd8ed1ab_0.conda hash: - md5: 755177a956fa6dd90d5cfcbbb5084de2 - sha256: 43dcd238c656c7ecf3228be8735def530cad5181f990c042ba202b9e383d2b1f + md5: e242df505f194c4932fbb840a99207e2 + sha256: 7e3259506b1b8500ebac4b4b097629ca8c32ee70d1c1df122052fea65c7cbae0 category: main optional: false - name: jupyter_server - version: 2.12.5 + version: 2.13.0 manager: conda platform: osx-arm64 dependencies: - packaging: '' - jinja2: '' - prometheus_client: '' - websocket-client: '' + anyio: '>=3.1.0' argon2-cffi: '' - overrides: '' + jinja2: '' + jupyter_client: '>=7.4.4' + jupyter_core: '>=4.12,!=5.0.*' + jupyter_events: '>=0.9.0' jupyter_server_terminals: '' + nbconvert-core: '>=6.4.4' + nbformat: '>=5.3.0' + overrides: '' + packaging: '' + prometheus_client: '' python: '>=3.8' + pyzmq: '>=24' + send2trash: '>=1.8.2' terminado: '>=0.8.3' - jupyter_core: '>=4.12,!=5.0.*' tornado: '>=6.2.0' - nbconvert-core: '>=6.4.4' - pyzmq: '>=24' - jupyter_client: '>=7.4.4' - nbformat: '>=5.3.0' traitlets: '>=5.6.0' - anyio: '>=3.1.0' - send2trash: '>=1.8.2' - jupyter_events: '>=0.9.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.12.5-pyhd8ed1ab_0.conda + websocket-client: '' + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.13.0-pyhd8ed1ab_0.conda hash: - md5: 755177a956fa6dd90d5cfcbbb5084de2 - sha256: 43dcd238c656c7ecf3228be8735def530cad5181f990c042ba202b9e383d2b1f + md5: e242df505f194c4932fbb840a99207e2 + sha256: 7e3259506b1b8500ebac4b4b097629ca8c32ee70d1c1df122052fea65c7cbae0 category: main optional: false - name: jupyter_server_terminals - version: 0.5.2 + version: 0.5.3 manager: conda platform: linux-64 dependencies: python: '>=3.8' terminado: '>=0.8.3' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda hash: - md5: a0152d13c9deb13639fc84df884d50b6 - sha256: a625150744fdffb646fb4451edc68b3eff56eeace4e86b83dc4a860479c9857c + md5: 219b3833aa8ed91d47d1be6ca03f30be + sha256: 038efbc7e4b2e72d49ed193cfb2bbbe9fbab2459786ce9350301f466a32567db category: main optional: false - name: jupyter_server_terminals - version: 0.5.2 + version: 0.5.3 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' terminado: '>=0.8.3' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda hash: - md5: a0152d13c9deb13639fc84df884d50b6 - sha256: a625150744fdffb646fb4451edc68b3eff56eeace4e86b83dc4a860479c9857c + md5: 219b3833aa8ed91d47d1be6ca03f30be + sha256: 038efbc7e4b2e72d49ed193cfb2bbbe9fbab2459786ce9350301f466a32567db category: main optional: false - name: jupyterlab - version: 4.0.12 + version: 4.1.5 manager: conda platform: linux-64 dependencies: async-lru: '>=1.0.0' + httpx: '>=0.25.0' importlib_metadata: '>=4.8.3' importlib_resources: '>=1.4' ipykernel: '' @@ -6558,36 +6836,37 @@ package: tomli: '' tornado: '>=6.2.0' traitlets: '' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.12-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.5-pyhd8ed1ab_0.conda hash: - md5: be2dcb121242a2f045ef8e8240e2b29d - sha256: b94fac375d239da7f56a7bcc48bfef9dff54033e272ec60946998950ea8ad1a0 + md5: 04b1ca9d7ac414b3f5c3fb16066c6861 + sha256: b098b79ef34d5c6a9ef7fc482bd2373072820006757ed7db33328af88fb91496 category: main optional: false - name: jupyterlab - version: 4.0.12 + version: 4.1.5 manager: conda platform: osx-arm64 dependencies: - packaging: '' - traitlets: '' - tomli: '' - ipykernel: '' - jupyter_core: '' - python: '>=3.8' - tornado: '>=6.2.0' - jinja2: '>=3.0.3' + async-lru: '>=1.0.0' + httpx: '>=0.25.0' importlib_metadata: '>=4.8.3' - jupyter_server: '>=2.4.0,<3' importlib_resources: '>=1.4' + ipykernel: '' + jinja2: '>=3.0.3' jupyter-lsp: '>=2.0.0' - async-lru: '>=1.0.0' + jupyter_core: '' + jupyter_server: '>=2.4.0,<3' jupyterlab_server: '>=2.19.0,<3' notebook-shim: '>=0.2' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.12-pyhd8ed1ab_0.conda + packaging: '' + python: '>=3.8' + tomli: '' + tornado: '>=6.2.0' + traitlets: '' + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.5-pyhd8ed1ab_0.conda hash: - md5: be2dcb121242a2f045ef8e8240e2b29d - sha256: b94fac375d239da7f56a7bcc48bfef9dff54033e272ec60946998950ea8ad1a0 + md5: 04b1ca9d7ac414b3f5c3fb16066c6861 + sha256: b098b79ef34d5c6a9ef7fc482bd2373072820006757ed7db33328af88fb91496 category: main optional: false - name: jupyterlab_pygments @@ -6597,10 +6876,10 @@ package: dependencies: pygments: '>=2.4.1,<3' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda hash: - md5: 3f0915b1fb2252ab73686a533c5f9d3f - sha256: 6ee596138a778a841261476408435da78e3000661f3ee025fb6c3ed17d28c8b3 + md5: afcd1b53bcac8844540358e33f33d28f + sha256: 4aa622bbcf97e44cd1adf0100b7ff71b7e20268f043bdf6feae4d16152f1f242 category: main optional: false - name: jupyterlab_pygments @@ -6608,16 +6887,16 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' pygments: '>=2.4.1,<3' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_0.conda + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda hash: - md5: 3f0915b1fb2252ab73686a533c5f9d3f - sha256: 6ee596138a778a841261476408435da78e3000661f3ee025fb6c3ed17d28c8b3 + md5: afcd1b53bcac8844540358e33f33d28f + sha256: 4aa622bbcf97e44cd1adf0100b7ff71b7e20268f043bdf6feae4d16152f1f242 category: main optional: false - name: jupyterlab_server - version: 2.25.2 + version: 2.25.4 manager: conda platform: linux-64 dependencies: @@ -6630,54 +6909,54 @@ package: packaging: '>=21.3' python: '>=3.8' requests: '>=2.31' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.4-pyhd8ed1ab_0.conda hash: - md5: f45557d5551b54dc2a74133a310bc1ba - sha256: 51c13a87072a64df1a0ae14fbb470bc4e36becf4d50693ffab53174199ca4f4b + md5: ffd61670ae09d2d3c637f6afd29db443 + sha256: d0336d0c0223a66d648b24cfd1512fd7aebc85550d47f55ad5edbd53f482e7e5 category: main optional: false - name: jupyterlab_server - version: 2.25.2 + version: 2.25.4 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' - packaging: '>=21.3' - jinja2: '>=3.0.3' - importlib-metadata: '>=4.8.3' - jupyter_server: '>=1.21,<3' babel: '>=2.10' + importlib-metadata: '>=4.8.3' + jinja2: '>=3.0.3' json5: '>=0.9.0' - requests: '>=2.31' jsonschema: '>=4.18' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.2-pyhd8ed1ab_0.conda + jupyter_server: '>=1.21,<3' + packaging: '>=21.3' + python: '>=3.8' + requests: '>=2.31' + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.4-pyhd8ed1ab_0.conda hash: - md5: f45557d5551b54dc2a74133a310bc1ba - sha256: 51c13a87072a64df1a0ae14fbb470bc4e36becf4d50693ffab53174199ca4f4b + md5: ffd61670ae09d2d3c637f6afd29db443 + sha256: d0336d0c0223a66d648b24cfd1512fd7aebc85550d47f55ad5edbd53f482e7e5 category: main optional: false - name: jupyterlab_widgets - version: 3.0.9 + version: 3.0.10 manager: conda platform: linux-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.10-pyhd8ed1ab_0.conda hash: - md5: 8370e0a9dc443f9b45a23fd30e7a6b3b - sha256: ec66991d2175f7b1f35973d6c4f56ad9a49666f77acf1037d72f3bc6e37224f3 + md5: 16b73b2c4ff7dda8bbecf88aadfe2027 + sha256: 7c14d0b377ddd2e21f23d2f55fbd827aca726860e504a131b67ef936aef2b8c4 category: main optional: false - name: jupyterlab_widgets - version: 3.0.9 + version: 3.0.10 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.10-pyhd8ed1ab_0.conda hash: - md5: 8370e0a9dc443f9b45a23fd30e7a6b3b - sha256: ec66991d2175f7b1f35973d6c4f56ad9a49666f77acf1037d72f3bc6e37224f3 + md5: 16b73b2c4ff7dda8bbecf88aadfe2027 + sha256: 7c14d0b377ddd2e21f23d2f55fbd827aca726860e504a131b67ef936aef2b8c4 category: main optional: false - name: jupytext @@ -6703,13 +6982,13 @@ package: manager: conda platform: osx-arm64 dependencies: - pyyaml: '' - packaging: '' - toml: '' - nbformat: '' + markdown-it-py: '>=1.0' mdit-py-plugins: '' + nbformat: '' + packaging: '' python: '>=3.8' - markdown-it-py: '>=1.0' + pyyaml: '' + toml: '' url: https://conda.anaconda.org/conda-forge/noarch/jupytext-1.16.1-pyhd8ed1ab_0.conda hash: md5: 14a45070afec994235a23ae09b098cce @@ -6768,7 +7047,7 @@ package: category: main optional: false - name: keyring - version: 24.3.0 + version: 24.3.1 manager: conda platform: linux-64 dependencies: @@ -6778,14 +7057,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* secretstorage: '>=3.2' - url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.3.0-py39hf3d152e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.3.1-py39hf3d152e_0.conda hash: - md5: 1426c4f9994cb7e55859b44b98bc7b3e - sha256: a7538a914feb54dc3e7ee46431af5f0a40e668b29224998e6d3be044a1a7606e + md5: 2482396e5d629d60526bce6268cfde6a + sha256: 8d231971f2ab5a9ab17d0b792021e287b982cb28c5258a93076a7fb937fa40c5 category: main optional: false - name: keyring - version: 24.3.0 + version: 24.3.1 manager: conda platform: osx-arm64 dependencies: @@ -6793,10 +7072,10 @@ package: jaraco.classes: '' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/keyring-24.3.0-py39h2804cbe_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/keyring-24.3.1-py39h2804cbe_0.conda hash: - md5: 20cfef7aef2c344c6136baec5495cf1c - sha256: 68b8474cab4f80f1e287399f85736f09b724d41d972257a61f7c96a4ded266fe + md5: 692efb054402209710ffea6a93960f33 + sha256: 8182aa6970a92eed22d05e2a007d07c64cae655bf51538fa36cf00623e47bf8c category: main optional: false - name: keyutils @@ -7220,10 +7499,10 @@ package: manager: conda platform: linux-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.84.0-ha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.84.0-ha770c72_1.conda hash: - md5: 9c595e87653a36aa4d8c71b4e2f7e586 - sha256: f6a6eb40a33b32eaab5d9ab36567b126f54c0b2112fe53131cf7b55afff2d0d9 + md5: 63a2690ffde5448bd8bbf19b5d1d366c + sha256: f5ac6b12768e5c735d2c8e4e1e05093b105d649a68f02f6a5349f5cb61719b9c category: main optional: false - name: libboost-headers @@ -7231,10 +7510,10 @@ package: manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.84.0-hce30654_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.84.0-hce30654_1.conda hash: - md5: 284cebe4165a186462c4471c11f5ee96 - sha256: ca1bcaac05608ed420650c1cb329bbab7bb0a059dce7f7803a592fcc414d4604 + md5: 6e665d044322dfffd437d7c6090e64f2 + sha256: 006d0e4e266b806eb2280c6e3250e79a011428c21a706ee7d3e4251f66d1f278 category: main optional: false - name: libbrotlicommon @@ -7360,7 +7639,7 @@ package: category: main optional: false - name: libcurl - version: 8.5.0 + version: 8.6.0 manager: conda platform: linux-64 dependencies: @@ -7369,16 +7648,16 @@ package: libnghttp2: '>=1.58.0,<2.0a0' libssh2: '>=1.11.0,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' zstd: '>=1.5.5,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.5.0-hca28451_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.6.0-hca28451_0.conda hash: - md5: 7144d5a828e2cae218e0e3c98d8a0aeb - sha256: 00a6bea5ff90ca58eeb15ebc98e08ffb88bddaff27396bb62640064f59d29cf0 + md5: 704739398d858872cb91610f49f0ef29 + sha256: 357ce806adf1818dc8dccdcd64627758e1858eb0d8a9c91aae4a0eeee2a44608 category: main optional: false - name: libcurl - version: 8.5.0 + version: 8.6.0 manager: conda platform: osx-arm64 dependencies: @@ -7386,12 +7665,12 @@ package: libnghttp2: '>=1.58.0,<2.0a0' libssh2: '>=1.11.0,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' zstd: '>=1.5.5,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.5.0-h2d989ff_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.6.0-h2d989ff_0.conda hash: - md5: f1211ed00947a84e15a964a8f459f620 - sha256: f1c04be217aaf161ce3c99a8d618871295b5dc1eae2f7ff7b32078af50303f5b + md5: 3c0b1d8a9c8952e97c240fe0133dd27e + sha256: 85d2cbba4b0435a6fbf22963a50d2fd8cf2124eb76118e62d616ef355003c5a5 category: main optional: false - name: libcxx @@ -7502,26 +7781,26 @@ package: category: main optional: false - name: libexpat - version: 2.5.0 + version: 2.6.2 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda hash: - md5: 6305a3dd2752c76335295da4e581f2fd - sha256: 74c98a563777ae2ad71f1f74d458a8ab043cee4a513467c159ccf159d0e461f3 + md5: e7ba12deb7020dd080c6c70e7b6f6a3d + sha256: 331bb7c7c05025343ebd79f86ae612b9e1e74d2687b8f3179faec234f986ce19 category: main optional: false - name: libexpat - version: 2.5.0 + version: 2.6.2 manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.5.0-hb7217d7_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda hash: - md5: 5a097ad3d17e42c148c9566280481317 - sha256: 7d143a9c991579ad4207f84c632650a571c66329090daa32b3c87cf7311c3381 + md5: e3cde7cfa87f82f7cb13d482d5e0ad09 + sha256: ba7173ac30064ea901a4c9fb5a51846dcc25512ceb565759be7d18cbf3e5415e category: main optional: false - name: libffi @@ -7554,10 +7833,35 @@ package: dependencies: _libgcc_mutex: '0.1' _openmp_mutex: '>=4.5' - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_5.conda + hash: + md5: d4ff227c46917d3b4565302a2bbb276b + sha256: d32f78bfaac282cfe5205f46d558704ad737b8dbf71f9227788a5ca80facaba4 + category: main + optional: false +- name: libgcrypt + version: 1.10.3 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libgpg-error: '>=1.47,<2.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.10.3-hd590300_0.conda + hash: + md5: 32d16ad533c59bb0a3c5ffaf16110829 + sha256: d1bd47faa29fec7288c7b212198432b07f890d3d6f646078da93b059c2e9daff + category: main + optional: false +- name: libgcrypt + version: 1.10.3 + manager: conda + platform: osx-arm64 + dependencies: + libgpg-error: '>=1.47,<2.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgcrypt-1.10.3-h93a5062_0.conda hash: - md5: e0dee4121cc9d961b3740e3759b02d13 - sha256: 827c0326a88a042a4b50399c60971a882663c769afcbdfcf64850a9d3f48aaff + md5: f34c7930dcef689658226d4fbf7b3b41 + sha256: 420cf4c920de90d66d0f4d1df8496a08e15193c1c39ab961e6fdc1d42e7bb436 category: main optional: false - name: libgd @@ -7611,7 +7915,7 @@ package: category: main optional: false - name: libgdal - version: 3.8.3 + version: 3.8.4 manager: conda platform: linux-64 dependencies: @@ -7637,35 +7941,35 @@ package: libjpeg-turbo: '>=3.0.0,<4.0a0' libkml: '>=1.3.0,<1.4.0a0' libnetcdf: '>=4.9.2,<4.9.3.0a0' - libpng: '>=1.6.39,<1.7.0a0' - libpq: '>=16.1,<17.0a0' + libpng: '>=1.6.42,<1.7.0a0' + libpq: '>=16.2,<17.0a0' libspatialite: '>=5.1.0,<5.2.0a0' - libsqlite: '>=3.44.2,<4.0a0' + libsqlite: '>=3.45.1,<4.0a0' libstdcxx-ng: '>=12' libtiff: '>=4.6.0,<4.7.0a0' libuuid: '>=2.38.1,<3.0a0' libwebp-base: '>=1.3.2,<2.0a0' - libxml2: '>=2.12.3,<3.0.0a0' + libxml2: '>=2.12.5,<3.0a0' libzlib: '>=1.2.13,<1.3.0a0' lz4-c: '>=1.9.3,<1.10.0a0' openjpeg: '>=2.5.0,<3.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' pcre2: '>=10.42,<10.43.0a0' - poppler: '>=23.12.0,<23.13.0a0' + poppler: '>=24.2.0,<24.3.0a0' postgresql: '' proj: '>=9.3.1,<9.3.2.0a0' - tiledb: '>=2.19.0,<2.20.0a0' + tiledb: '>=2.20.0,<2.21.0a0' xerces-c: '>=3.2.5,<3.3.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.5,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.3-hcd1fc54_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.4-h9323651_0.conda hash: - md5: ef5ae0528509a7987cf29e8827f46938 - sha256: 70b40ec4c171010895920000bf877b7454474df0d7473117277b22a0727b7aa4 + md5: f0444ecc68c3f7d0855c9dd6bc3424a7 + sha256: af88738b2eda7d388daad5bd7dd8fe66efbaba300921ecb6fb03d9c5823a950d category: main optional: false - name: libgdal - version: 3.8.3 + version: 3.8.4 manager: conda platform: osx-arm64 dependencies: @@ -7683,36 +7987,36 @@ package: libaec: '>=1.1.2,<2.0a0' libarchive: '>=3.7.2,<3.8.0a0' libcurl: '>=8.5.0,<9.0a0' - libcxx: '>=15' + libcxx: '>=16' libdeflate: '>=1.19,<1.20.0a0' libexpat: '>=2.5.0,<3.0a0' libiconv: '>=1.17,<2.0a0' libjpeg-turbo: '>=3.0.0,<4.0a0' libkml: '>=1.3.0,<1.4.0a0' libnetcdf: '>=4.9.2,<4.9.3.0a0' - libpng: '>=1.6.39,<1.7.0a0' - libpq: '>=16.1,<17.0a0' + libpng: '>=1.6.42,<1.7.0a0' + libpq: '>=16.2,<17.0a0' libspatialite: '>=5.1.0,<5.2.0a0' - libsqlite: '>=3.44.2,<4.0a0' + libsqlite: '>=3.45.1,<4.0a0' libtiff: '>=4.6.0,<4.7.0a0' libwebp-base: '>=1.3.2,<2.0a0' - libxml2: '>=2.12.3,<3.0.0a0' + libxml2: '>=2.12.5,<3.0a0' libzlib: '>=1.2.13,<1.3.0a0' lz4-c: '>=1.9.3,<1.10.0a0' openjpeg: '>=2.5.0,<3.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' pcre2: '>=10.42,<10.43.0a0' - poppler: '>=23.12.0,<23.13.0a0' + poppler: '>=24.2.0,<24.3.0a0' postgresql: '' proj: '>=9.3.1,<9.3.2.0a0' - tiledb: '>=2.19.0,<2.20.0a0' + tiledb: '>=2.20.0,<2.21.0a0' xerces-c: '>=3.2.5,<3.3.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.5,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.8.3-h7e86f1f_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.8.4-ha86f356_0.conda hash: - md5: dd42aa63e28b0e8c5d4af6d7995ab151 - sha256: fa94cfe093975c61b426c5d9bcde7e0d52d9623cd515a21bc14b941f024eec31 + md5: a5d5f05fd2c03b0f1ba4863c8a1a0632 + sha256: bff62d710f8a3ae6a0c4671c0584a7680e9e3a468003367ddf5bee8c90ff0079 category: main optional: false - name: libgfortran @@ -7721,10 +8025,10 @@ package: platform: osx-arm64 dependencies: libgfortran5: 13.2.0 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_2.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda hash: - md5: 50c44da4cd89e99a5b18382f565585d8 - sha256: 8af9f94c34150567f2993392c7c1036c99b6844625aea0338535293e4d7b5d23 + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b category: main optional: false - name: libgfortran-ng @@ -7733,10 +8037,10 @@ package: platform: linux-64 dependencies: libgfortran5: 13.2.0 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_5.conda hash: - md5: 4956aae564e90a1fc96f3bc58152c2b2 - sha256: 751dccc714cc6a444e1be1474da2aab19e1a64c73ba3f133165f3d7d71eacc19 + md5: e73e9cfd1191783392131e6238bdb3e9 + sha256: 238c16c84124d58307376715839aa152bd4a1bf5a043052938ad6c3137d30245 category: main optional: false - name: libgfortran5 @@ -7745,10 +8049,10 @@ package: platform: linux-64 dependencies: libgcc-ng: '>=13.2.0' - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_5.conda hash: - md5: e661d5238ba69d8fe2e488bbde6f9cc4 - sha256: d3cd28683be2129665bf93eac011476b9903e0d7000bff8e224f857e06d750ee + md5: 7a6bd7a12a4bd359e2afe6c0fa1acace + sha256: ba8d94e8493222ce155bb264d9de4200e41498a458e866fedf444de809bde8b6 category: main optional: false - name: libgfortran5 @@ -7757,14 +8061,43 @@ package: platform: osx-arm64 dependencies: llvm-openmp: '>=8.0.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_2.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + hash: + md5: 66ac81d54e95c534ae488726c1f698ea + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + category: main + optional: false +- name: libgirepository + version: 1.78.1 + manager: conda + platform: linux-64 + dependencies: + cairo: '>=1.16.0,<2.0a0' + libffi: '>=3.4,<4.0a0' + libgcc-ng: '>=12' + libglib: '>=2.78.0,<3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libgirepository-1.78.1-h003a4f0_1.conda + hash: + md5: 806406c7008aab9b295d0cea4d5f90e0 + sha256: 1393f41401f5858e12ec77476e844b86c4d11cc0d82150adaca74f0401cd1b87 + category: main + optional: false +- name: libgirepository + version: 1.78.1 + manager: conda + platform: osx-arm64 + dependencies: + cairo: '>=1.16.0,<2.0a0' + libffi: '>=3.4,<4.0a0' + libglib: '>=2.78.0,<3.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgirepository-1.78.1-h10adf5e_1.conda hash: - md5: 55c6859a3606c1516d89768a05ce9074 - sha256: 0b7e069f0227402deef36d04a2695411b0302ef99fe6bf8a9488e472d2e217c1 + md5: fd4b5c5d7a92c2b00027c595dc5dcd8b + sha256: b9a1d9b99a4aefdd4e5cf8cb226413c31a987f1cc641a56bdd8be1f543268e0c category: main optional: false - name: libglib - version: 2.78.3 + version: 2.78.4 manager: conda platform: linux-64 dependencies: @@ -7775,28 +8108,27 @@ package: libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.42,<10.43.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.3-h783c2da_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.4-h783c2da_0.conda hash: - md5: 9bd06b12bbfa6fd1740fd23af4b0f0c7 - sha256: b1b594294a0fe4c9a51596ef027efed9268d60827e8ae61fb7545c521a631e33 + md5: d86baf8740d1a906b9716f2a0bac2f2d + sha256: 3a03a5254d2fd29c1e0ffda7250e22991dfbf2c854301fd56c408d97a647cfbd category: main optional: false - name: libglib - version: 2.78.3 + version: 2.78.4 manager: conda platform: osx-arm64 dependencies: - __osx: '>=10.9' gettext: '>=0.21.1,<1.0a0' - libcxx: '>=16.0.6' + libcxx: '>=16' libffi: '>=3.4,<4.0a0' libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.42,<10.43.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.78.3-hb438215_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.78.4-h1635a5e_0.conda hash: - md5: 8c98b7018b434236e2c0f14d7cf3c113 - sha256: f26afb1003e810e768138b0c849e9408c0ae8635062aeaf7abae381903a84e53 + md5: 537ff7a85b63d478e563530dfe66a71e + sha256: 8229251ab78074d16c372b5995f19f967321328fdf8723feab7efec66fe6cc03 category: main optional: false - name: libgoogle-cloud @@ -7837,6 +8169,33 @@ package: sha256: 22122939a462f64a82ca2f305c43e5e5cf5a55f1ae12979c2445f9dc196b7047 category: main optional: false +- name: libgpg-error + version: '1.48' + manager: conda + platform: linux-64 + dependencies: + gettext: '>=0.21.1,<1.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.48-h71f35ed_0.conda + hash: + md5: 4d18d86916705d352d5f4adfb7f0edd3 + sha256: c448c6d86d27e10b9e844172000540e9cbfe9c28f968db87f949ba05add9bd50 + category: main + optional: false +- name: libgpg-error + version: '1.48' + manager: conda + platform: osx-arm64 + dependencies: + gettext: '>=0.21.1,<1.0a0' + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgpg-error-1.48-h91a1ebb_0.conda + hash: + md5: 63e8c65e9782a6580b116e56ec185502 + sha256: 74b738a3e606870c9412d3177690681321b38733f1e592a0c273192f1422f5ef + category: main + optional: false - name: libgrpc version: 1.59.3 manager: conda @@ -7862,19 +8221,18 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=10.9' - c-ares: '>=1.21.0,<2.0a0' + c-ares: '>=1.26.0,<2.0a0' libabseil: '>=20230802.1,<20230803.0a0' - libcxx: '>=16.0.6' + libcxx: '>=16' libprotobuf: '>=4.24.4,<4.24.5.0a0' libre2-11: '>=2023.6.2,<2024.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.1,<4.0a0' re2: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.59.3-hbcf6334_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.59.3-h9560976_0.conda hash: - md5: e9c7cbc84af929dd47501629a5e19713 - sha256: 54cacd1fc7503d48c135301a775568f15089b537b3c56804767c627a89a20c30 + md5: 31e7f059601587954b1370fe172d3114 + sha256: 9c0291bf797df0cee46d870bd410968e5955b0573c6b603c0ee7a5fcac06ad91 category: main optional: false - name: libhwloc @@ -7994,6 +8352,43 @@ package: sha256: a917e99f26d205df1ec22d7a9fff0d2f2f3c7ba06ea2be886dc220a8340d5917 category: main optional: false +- name: libmagma + version: 2.7.2 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17' + _openmp_mutex: '>=4.5' + cudatoolkit: '>=11.8,<12' + libblas: '>=3.9.0,<4.0a0' + libgcc-ng: '>=12' + liblapack: '>=3.9.0,<4.0a0' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.7.2-h09b5827_2.conda + hash: + md5: f6de79234f35c2fcc2e49dc66436601d + sha256: 4dd54775f2cfa9c09f4b4cc58a6db00bad50b30e65adf62ffe4213a30d962766 + category: main + optional: false +- name: libmagma_sparse + version: 2.7.2 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17' + _openmp_mutex: '>=4.5' + cudatoolkit: '>=11.8,<12' + libblas: '>=3.9.0,<4.0a0' + libgcc-ng: '>=12' + liblapack: '>=3.9.0,<4.0a0' + libmagma: '>=2.7.2,<2.7.3.0a0' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libmagma_sparse-2.7.2-h09b5827_3.conda + hash: + md5: 53157a5777c664896654d8dbc9fd6bf9 + sha256: ee4a2367446763e6a4ef6d2fa5aea06adfd4ff44853f7390a02b0da77c6f129c + category: main + optional: false - name: libnetcdf version: 4.9.2 manager: conda @@ -8102,18 +8497,6 @@ package: sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 category: main optional: false -- name: libnuma - version: 2.0.16 - manager: conda - platform: linux-64 - dependencies: - libgcc-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.16-h0b41bf4_1.conda - hash: - md5: 28bfe2cb11357ccc5be21101a6b7ce86 - sha256: 814a50cba215548ec3ebfb53033ffb9b3b070b2966570ff44910b8d9ba1c359d - category: main - optional: false - name: libopenblas version: 0.3.26 manager: conda @@ -8143,55 +8526,55 @@ package: category: main optional: false - name: libpng - version: 1.6.42 + version: 1.6.43 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.42-h2797004_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda hash: - md5: d67729828dc6ff7ba44a61062ad79880 - sha256: 1a0c3a4b7fd1e101cb37dd6d2f8b5ec93409c8cae422f04470fe39a01ef59024 + md5: 009981dd9cfcaa4dbfa25ffaed86bcae + sha256: 502f6ff148ac2777cc55ae4ade01a8fc3543b4ffab25c4e0eaa15f94e90dd997 category: main optional: false - name: libpng - version: 1.6.42 + version: 1.6.43 manager: conda platform: osx-arm64 dependencies: libzlib: '>=1.2.13,<1.3.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.42-h091b4b1_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda hash: - md5: 308b6746e691265c21cb013960c74ae6 - sha256: 6df48b05868437377a0717b486d9f57396a45cb6e3a044453944c8e597b03370 + md5: 77e684ca58d82cae9deebafb95b1a2b8 + sha256: 66c4713b07408398f2221229a1c1d5df57d65dc0902258113f2d9ecac4772495 category: main optional: false - name: libpq - version: '16.1' + version: '16.2' manager: conda platform: linux-64 dependencies: krb5: '>=1.21.2,<1.22.0a0' libgcc-ng: '>=12' - openssl: '>=3.2.0,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.1-h33b98f1_7.conda + openssl: '>=3.2.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.2-h33b98f1_0.conda hash: - md5: 675317e46167caea24542d85c72f19a3 - sha256: 833fd96338dffc6784fb5f79ab805fa5a4c2cabf5c08c4f1d5caf4e290e39c28 + md5: fe0e297faf462ee579c95071a5211665 + sha256: 352748b0499a22e2a8e103f071b8d9357e1fb710c0aec0f79895d3ba03dccb03 category: main optional: false - name: libpq - version: '16.1' + version: '16.2' manager: conda platform: osx-arm64 dependencies: krb5: '>=1.21.2,<1.22.0a0' - openssl: '>=3.2.0,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-16.1-h0f8b458_7.conda + openssl: '>=3.2.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-16.2-h0f8b458_0.conda hash: - md5: c94283997b390fc897936edf2c1f0d55 - sha256: 2e71c5efc57ec7da59efcb747b615ccde1f70d12eb25128720817a3f3482d622 + md5: fea5d30234a7158f4eaa915b5a6e0c9c + sha256: 0ad2265131a6d79fcfe8c5b7a04884f7377f981d18af775ebb71bc61b0c938b6 category: main optional: false - name: libprotobuf @@ -8224,31 +8607,30 @@ package: category: main optional: false - name: libre2-11 - version: 2023.06.02 + version: 2023.09.01 manager: conda platform: linux-64 dependencies: libabseil: '>=20230802.1,<20230803.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.06.02-h7a70373_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h7a70373_1.conda hash: - md5: c0e7eacd9694db3ef5ef2979a7deea70 - sha256: 22b0b2169c80b65665ba0d6418bd5d3d4c7d89915ee0f9613403efe871c27db8 + md5: e61d774293f3ccfb82561a627e846de4 + sha256: 63ebe0a3244b5f1c61337b5b387a2bacd1ca88cd894229a8cd538ef9a4b51d1a category: main optional: false - name: libre2-11 - version: 2023.06.02 + version: 2023.09.01 manager: conda platform: osx-arm64 dependencies: - __osx: '>=10.9' libabseil: '>=20230802.1,<20230803.0a0' - libcxx: '>=16.0.6' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.06.02-h1753957_0.conda + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h741fcf5_1.conda hash: - md5: 3b8652db4bf4e27fa1446526f7a78498 - sha256: 8bafee8f8ef27f4cb0afffe5404dd1abfc5fd6eac1ee9b4847a756d440bd7aa7 + md5: f3d62e2191ef99037a003e89eb195a3d + sha256: 7f13d83b2d9a5b246dc292c40b33c119fdc6fba6bbd872f5679a43c1a72279bf category: main optional: false - name: librsvg @@ -8314,6 +8696,34 @@ package: sha256: 00f016e7b7d4f68ddefc4e857b63c963402e66aeff8bb560a8bacdd6d51c6508 category: main optional: false +- name: libsecret + version: 0.18.8 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libgcrypt: '>=1.10.1,<2.0a0' + libglib: '>=2.70.2,<3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2 + hash: + md5: 9d6698e3c9585a75156d86f7ef229093 + sha256: c3ffd1ff0d2fa1626a4270ee50a687d25424e8812024d92f88445a2ac9f13931 + category: main + optional: false +- name: libsecret + version: 0.18.8 + manager: conda + platform: osx-arm64 + dependencies: + gettext: '>=0.19.8.1,<1.0a0' + libgcrypt: '>=1.10.1,<2.0a0' + libglib: '>=2.70.2,<3.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsecret-0.18.8-h2b036b6_2.tar.bz2 + hash: + md5: ce9e56544d99ec53cf73839b9d61216e + sha256: 1a86748681f1435763d981ec965e87c4bb281c5e463cd80c82a2841d3553be89 + category: main + optional: false - name: libsodium version: 1.0.18 manager: conda @@ -8408,28 +8818,28 @@ package: category: main optional: false - name: libsqlite - version: 3.44.2 + version: 3.45.2 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.2-h2797004_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.2-h2797004_0.conda hash: - md5: 3b6a9f225c3dbe0d24f4fedd4625c5bf - sha256: ee2c4d724a3ed60d5b458864d66122fb84c6ce1df62f735f90d8db17b66cd88a + md5: 866983a220e27a80cb75e85cb30466a1 + sha256: 8cdbeb7902729e319510a82d7c642402981818702b58812af265ef55d1315473 category: main optional: false - name: libsqlite - version: 3.44.2 + version: 3.45.2 manager: conda platform: osx-arm64 dependencies: libzlib: '>=1.2.13,<1.3.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.44.2-h091b4b1_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.45.2-h091b4b1_0.conda hash: - md5: d7e1af696cfadec251a0abdd7b79ed77 - sha256: f0dc2fe69eddb4bab72ff6bb0da51d689294f466ee1b01e80ced1e7878a21aa5 + md5: 9d07427ee5bd9afd1e11ce14368a48d6 + sha256: 7c234320a1a2132b9cc972aaa06bb215bb220a5b1addb0bed7a5a321c805920e category: main optional: false - name: libssh2 @@ -8464,10 +8874,10 @@ package: manager: conda platform: linux-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_5.conda hash: - md5: f6a3a9c67eb8030555d04066bcd65320 - sha256: a93f6e0ccffadea286ba8fd0cac04708b9389425ae39c760dd5e501ac8bf8f76 + md5: f6f6600d18a4047b54f803cf708b868a + sha256: a56c5b11f1e73a86e120e6141a42d9e935a99a2098491ac9e15347a1476ce777 category: main optional: false - name: libthrift @@ -8547,38 +8957,23 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' _openmp_mutex: '>=4.5' + cudatoolkit: '>=11.8,<12' + cudnn: '>=8.8.0.121,<9.0a0' libcblas: '>=3.9.0,<4.0a0' libgcc-ng: '>=12' + libmagma: '>=2.7.2,<2.7.3.0a0' + libmagma_sparse: '>=2.7.2,<2.7.3.0a0' libprotobuf: '>=4.24.4,<4.24.5.0a0' libstdcxx-ng: '>=12' libuv: '>=1.46.0,<2.0a0' + magma: '>=2.7.2,<2.7.3.0a0' mkl: '>=2023.2.0,<2024.0a0' + nccl: '>=2.19.4.1,<3.0a0' sleef: '>=3.5.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.1.2-cpu_mkl_hadc400e_100.conda - hash: - md5: 54f228509c64d8de523ee6ab19e5f3e9 - sha256: e904bb9260816595e34c5fed07ce8d1ae5572bce36c283425fbec0bddcd3ce88 - category: main - optional: false -- name: libtorch - version: 2.1.2 - manager: conda - platform: osx-arm64 - dependencies: - libcblas: '>=3.9.0,<4.0a0' - libcxx: '>=14' - liblapack: '>=3.9.0,<4.0a0' - libprotobuf: '>=4.24.4,<4.24.5.0a0' - libuv: '>=1.46.0,<2.0a0' - llvm-openmp: '>=16.0.6' - numpy: '>=1.22.4,<2.0a0' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* - sleef: '>=3.5.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.1.2-cpu_generic_hd9c544a_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.1.2-cuda118_h3d7bd98_300.conda hash: - md5: 9b65a96d6b8ec78cda4a5182a970f970 - sha256: 1e85acec55f3bd1af9af46a45bce917c3e0d980b3dc59242c4254fbeab5a79f5 + md5: 19f2c0ac4037db9622363dbdcdd21df0 + sha256: 80c47ee854a10b028841f581c8651b85ed2453d086b8a8a784326606bbb7a945 category: main optional: false - name: libutf8proc @@ -8617,26 +9012,26 @@ package: category: main optional: false - name: libuv - version: 1.46.0 + version: 1.48.0 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.48.0-hd590300_0.conda hash: - md5: d23c76f7e6dcd6243d1b6ef5e62d17d2 - sha256: 4bc4c946e9a532c066442714eeeeb1ffbd03cd89789c4047293f5e782b5fedd7 + md5: 7e8b914b1062dd4386e3de4d82a3ead6 + sha256: b7c0e8a0c93c2621be7645b37123d4e8d27e8a974da26a3fba47a9c37711aa7f category: main optional: false - name: libuv - version: 1.46.0 + version: 1.48.0 manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.46.0-hb547adb_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.48.0-h93a5062_0.conda hash: - md5: 5f1d535f82e8210ac80d191610b92325 - sha256: f2fe8e22a99f91761c16dc7b00408bff0f5c30d4cccc6ea562db00a4041c5579 + md5: abfd49e80f13453b62a56be226120ea8 + sha256: 60bed2a7a85096387ab0381cbc32ea2da7f8dd99bd90e440983019c0cdd96ad1 category: main optional: false - name: libwebp @@ -8737,7 +9132,7 @@ package: category: main optional: false - name: libxml2 - version: 2.12.4 + version: 2.12.6 manager: conda platform: linux-64 dependencies: @@ -8746,14 +9141,14 @@ package: libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' xz: '>=5.2.6,<6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.4-h232c23b_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.6-h232c23b_0.conda hash: - md5: 53e951fab78d7e3bab40745f7b3d1620 - sha256: f6828b44da29bbfbf367ddbc72902e84ea5f5de933be494d6aac4a35826afed0 + md5: d86653ff5ccb88bf7f13833fdd8789e0 + sha256: 4646ae14fb226080d2bfeb89510147abebd603bab1c80bb6b3c02a01c10c6ee5 category: main optional: false - name: libxml2 - version: 2.12.4 + version: 2.12.6 manager: conda platform: osx-arm64 dependencies: @@ -8761,10 +9156,10 @@ package: libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' xz: '>=5.2.6,<6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.4-h0d0cfa8_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.6-h0d0cfa8_0.conda hash: - md5: 2ce68362b6ba7e78a066abce22811df7 - sha256: 70863a5554cbdd573cf852571a6ef015e5376f8969068725523a01dff7ff4de3 + md5: 4713f0d8bb1e50cc4757c118b6fe20d5 + sha256: 38a5e25e1fd3b59fd31301f39a0f02ca28925d7d102348921b9366e580cd810c category: main optional: false - name: libzip @@ -8820,27 +9215,27 @@ package: category: main optional: false - name: llvm-openmp - version: 17.0.6 + version: 18.1.1 manager: conda platform: linux-64 dependencies: libzlib: '>=1.2.13,<1.3.0a0' zstd: '>=1.5.5,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-17.0.6-h4dfa4b3_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.1-h4dfa4b3_0.conda hash: - md5: c1665f9c1c9f6c93d8b4e492a6a39056 - sha256: 18a9db4cc139e72e8eac80a34f6536491fe318d3785bc2c35fac42cd00676376 + md5: 89023cfc92c7e9dd2e822ebdb4f753b0 + sha256: a85cadbb1b00d181a6462700c3d1da7092c53b3f1f90c76ec560fef34aff226b category: main optional: false - name: llvm-openmp - version: 17.0.6 + version: 18.1.1 manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-17.0.6-hcd81f8e_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.1-hcd81f8e_0.conda hash: - md5: 52019d2fa0eddbbc4e6dcd30fae0c0a4 - sha256: 0c217326c5931c1416b82f98169b8a8a52139f6f5f299dbb2efa7b21f65f225a + md5: 4f878f28804ed85e5191132c12c1fca5 + sha256: 38cf66997aae1bb20575ca829c322cb255c23652609576f76590f4ab7e35572a category: main optional: false - name: locket @@ -8944,6 +9339,21 @@ package: sha256: ae029e5c16893071d29a11ddbfdbdb01b2ebf10d1785f54370934439d8b71817 category: main optional: false +- name: magma + version: 2.7.2 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17' + cudatoolkit: '>=11.8,<12' + libmagma: '>=2.7.2,<2.7.3.0a0' + libmagma_sparse: 2.7.2 + url: https://conda.anaconda.org/conda-forge/linux-64/magma-2.7.2-h4aca40b_3.conda + hash: + md5: fe218300f1dfb9fbedbd210b3b9e020e + sha256: 9e3240a60a16269c986bcd3d1bee9e35cf81a843ff33b68ee6a2a1e7cbb7fd1c + category: main + optional: false - name: makefun version: 1.15.2 manager: conda @@ -8988,8 +9398,8 @@ package: platform: osx-arm64 dependencies: importlib-metadata: '' - python: '>=3.6' markupsafe: '>=0.9.2' + python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.2-pyhd8ed1ab_0.conda hash: md5: a6b5f0124bc6d061350edd6d7f96dd05 @@ -9014,46 +9424,46 @@ package: category: main optional: false - name: mapclassify - version: 2.5.0 + version: 2.6.1 manager: conda platform: osx-arm64 dependencies: - scikit-learn: '' - networkx: '' - python: '>=3.6' - pandas: '>=1.0' - scipy: '>=1.0' - numpy: '>=1.3' - url: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.5.0-pyhd8ed1ab_1.conda + networkx: '>=2.7' + numpy: '>=1.23' + pandas: '>=1.4,!=1.5.0' + python: '>=3.9' + scikit-learn: '>=1.0' + scipy: '>=1.8' + url: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda hash: - md5: db1aeaff6e248db425e049feffded7a9 - sha256: 78aadbd9953976678b6e3298ac26a63cf9390a8794db3ff71f3fe5b6d13a35ca + md5: 6aceae1ad4f16cf7b73ee04189947f98 + sha256: 204ab8b242229d422b33cfec07ea61cefa8bd22375a16658afbabaafce031d64 category: main optional: false - name: markdown - version: 3.5.2 + version: '3.6' manager: conda platform: linux-64 dependencies: importlib-metadata: '>=4.4' python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/markdown-3.5.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda hash: - md5: db7b48fa4eeb0c21b2f3f5b1f7d9ebcf - sha256: fbc70dc01b361fe46e7b4e102e725f99ba60bf9903c2fa86b53ad6b70ded677a + md5: 06e9bebf748a0dea03ecbe1f0e27e909 + sha256: fce1fde00359696983989699c00f9891194c4ebafea647a8d21b7e2e3329b56e category: main optional: false - name: markdown - version: 3.5.2 + version: '3.6' manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' importlib-metadata: '>=4.4' - url: https://conda.anaconda.org/conda-forge/noarch/markdown-3.5.2-pyhd8ed1ab_0.conda + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda hash: - md5: db7b48fa4eeb0c21b2f3f5b1f7d9ebcf - sha256: fbc70dc01b361fe46e7b4e102e725f99ba60bf9903c2fa86b53ad6b70ded677a + md5: 06e9bebf748a0dea03ecbe1f0e27e909 + sha256: fce1fde00359696983989699c00f9891194c4ebafea647a8d21b7e2e3329b56e category: main optional: false - name: markdown-it-py @@ -9075,9 +9485,9 @@ package: manager: conda platform: osx-arm64 dependencies: + mdurl: '>=0.1,<1' python: '>=3.7' typing_extensions: '>=3.7.4' - mdurl: '>=0.1,<1' url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-2.2.0-pyhd8ed1ab_0.conda hash: md5: b2928a6c6d52d7e3562b4a59c3214e3a @@ -9085,56 +9495,56 @@ package: category: main optional: false - name: markupsafe - version: 2.1.4 + version: 2.1.5 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.4-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py39hd1e30aa_0.conda hash: - md5: 847ad1c2bcbef1e2febfdaa3b199c2a4 - sha256: e3019f819f354cc7ac080704ae9faa87618f5bbf536dc5b82f52296eb7f80459 + md5: 9a9a22eb1f83c44953319ee3b027769f + sha256: 855d305ceda4751cdd495923104dd34da5a6be45e4fd50a4e80361d9f95bcb38 category: main optional: false - name: markupsafe - version: 2.1.4 + version: 2.1.5 manager: conda platform: osx-arm64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.4-py39h17cfd9d_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.5-py39h17cfd9d_0.conda hash: - md5: 5d9372d65ab80b7542335e023aabf572 - sha256: 92064bb9afdf6bbb95977f3deb8056d974213b75c91bde0af638da9e9b89d730 + md5: 554a0bcb046e1bac7887a92f33b96acc + sha256: e18591162cb401bc651a69bd2545a679b69c54405d778d05778f43ba76c6a4dd category: main optional: false - name: marshmallow - version: 3.20.2 + version: 3.21.1 manager: conda platform: linux-64 dependencies: packaging: '>=17.0' - python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.20.2-pyhd8ed1ab_0.conda + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.21.1-pyhd8ed1ab_0.conda hash: - md5: 1c5717a601c50f58452839773f3a1485 - sha256: 9f9eb62e87eae91de3763d519475cc883ebe2fdc3e429283cd2abf8cba6120d0 + md5: ae303aa7dc100bc3bc01b5a3b7ca3567 + sha256: d1c825bebd47db2327819562d23560b1e9cb50c73e964848a6f2e58f61d962d1 category: main optional: false - name: marshmallow - version: 3.20.2 + version: 3.21.1 manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' packaging: '>=17.0' - url: https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.20.2-pyhd8ed1ab_0.conda + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.21.1-pyhd8ed1ab_0.conda hash: - md5: 1c5717a601c50f58452839773f3a1485 - sha256: 9f9eb62e87eae91de3763d519475cc883ebe2fdc3e429283cd2abf8cba6120d0 + md5: ae303aa7dc100bc3bc01b5a3b7ca3567 + sha256: d1c825bebd47db2327819562d23560b1e9cb50c73e964848a6f2e58f61d962d1 category: main optional: false - name: marshmallow-enum @@ -9155,8 +9565,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '' marshmallow: '>=2.0.0' + python: '' url: https://conda.anaconda.org/conda-forge/noarch/marshmallow-enum-1.5.1-pyh9f0ad1d_3.tar.bz2 hash: md5: 67c5202bf14543cd1bb97f129d3f26dd @@ -9181,8 +9591,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' marshmallow: '>=3.11' + python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/marshmallow-jsonschema-0.13.0-pyhd8ed1ab_0.tar.bz2 hash: md5: bd47c87386365fcaf782c9c407b50507 @@ -9216,7 +9626,7 @@ package: category: main optional: false - name: matplotlib-base - version: 3.8.2 + version: 3.8.3 manager: conda platform: linux-64 dependencies: @@ -9237,18 +9647,17 @@ package: python-dateutil: '>=2.7' python_abi: 3.9.* tk: '>=8.6.13,<8.7.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.2-py39he9076e7_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.3-py39he9076e7_0.conda hash: - md5: 6085411aa2f0b2b801d3b46e1d3b83c5 - sha256: f5e1275e1e7f644d5c91780c08f9868153b8b1a00703e7b03f4b171be02879e1 + md5: 5456bdfe5809ebf5689eda6c808b686e + sha256: 6a430a5816f189b7277182b6c251236c5af22e254b8253eeb6ffcb06a8ea7087 category: main optional: false - name: matplotlib-base - version: 3.8.2 + version: 3.8.3 manager: conda platform: osx-arm64 dependencies: - __osx: '>=10.9' certifi: '>=2020.06.20' contourpy: '>=1.0.1' cycler: '>=0.10' @@ -9256,7 +9665,7 @@ package: freetype: '>=2.12.1,<3.0a0' importlib-resources: '>=3.2.0' kiwisolver: '>=1.3.1' - libcxx: '>=16.0.6' + libcxx: '>=16' numpy: '>=1.22.4,<2.0a0' packaging: '>=20.0' pillow: '>=8' @@ -9264,10 +9673,10 @@ package: python: '>=3.9,<3.10.0a0' python-dateutil: '>=2.7' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.8.2-py39h1a09f3e_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.8.3-py39hbab7938_0.conda hash: - md5: 98e278f5a585b596276064e25affcf11 - sha256: 904f0e7c2a88fc55407560bcd94d44b54ec916e57540c5f53ca631eb276df5f0 + md5: c8a05fdf66e3f0bfc087d29461da56e5 + sha256: 698ac01f950fb5646275c94c2719782e3a77d26164a5491c4ad4dfc6d9be1b71 category: main optional: false - name: matplotlib-inline @@ -9288,8 +9697,8 @@ package: manager: conda platform: osx-arm64 dependencies: - traitlets: '' python: '>=3.6' + traitlets: '' url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2 hash: md5: b21613793fcc81d944c76c9f2864a7de @@ -9314,8 +9723,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' markdown-it-py: '>=1.0.0,<4.0.0' + python: '>=3.8' url: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.0-pyhd8ed1ab_0.conda hash: md5: 6c5358a10873a15398b6f15f60cb5e1f @@ -9347,7 +9756,7 @@ package: category: main optional: false - name: minizip - version: 4.0.4 + version: 4.0.5 manager: conda platform: linux-64 dependencies: @@ -9356,31 +9765,31 @@ package: libiconv: '>=1.17,<2.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.5,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.4-h0ab5242_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.5-h0ab5242_0.conda hash: - md5: 813bc75d9c33ddd9c9d5b8d9c560e152 - sha256: e25d24c4841aa85ed2153f826ae58e56ae4d12704fd9e52005a3d7edfeb3b95a + md5: 557396140c71eba588e96d597e0c61aa + sha256: 1a56549751f4c4a7998e0a8bcff367c3992cb832c0b211d775cfd644e1ef5e6b category: main optional: false - name: minizip - version: 4.0.4 + version: 4.0.5 manager: conda platform: osx-arm64 dependencies: bzip2: '>=1.0.8,<2.0a0' - libcxx: '>=15' + libcxx: '>=16' libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.5,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/minizip-4.0.4-hc35e051_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/minizip-4.0.5-hc35e051_0.conda hash: - md5: 293ad87f065d0e1dc011ccafeb1bb0be - sha256: 0fbf65095148cfe9dab8b32b533b3d2752a66bbf459816345773ed73844a448b + md5: 3698392e5f0823e563c306dde1d3a800 + sha256: 7ad93499e224d49c4f342afb85e24681fa3ef8405e2b1e0a4cb549e90eb8486d category: main optional: false - name: mistune @@ -9535,66 +9944,99 @@ package: category: main optional: false - name: modin - version: 0.22.3 + version: 0.28.0 manager: conda platform: linux-64 dependencies: - modin-dask: 0.22.3 + modin-dask: 0.28.0 python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/modin-0.22.3-py39hf3d152e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/modin-0.28.0-py39hf3d152e_0.conda hash: - md5: 88b3e075452ea617716af838a80237df - sha256: a169089f9fbaa73eec10fe27b3a2bf15e5251bec930fc09fca6b39642765dc75 + md5: 690520f01db06a532051adca1206c3de + sha256: 6e99d2506b6943549283b7e48f1e529c085ac9b5ef52b2e617efb2ea20e6562a category: main optional: false - name: modin - version: 0.8.2 + version: 0.28.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' - dask: '>=2.1.0' - distributed: '>=2.3.2' - pandas: 1.1.4 - url: https://conda.anaconda.org/conda-forge/noarch/modin-0.8.2-pyhd8ed1ab_0.tar.bz2 + modin-dask: 0.28.0 + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* + url: https://conda.anaconda.org/conda-forge/osx-arm64/modin-0.28.0-py39hdf13c20_0.conda hash: - md5: a42e5ad474f76e75db0469cdb7da8b59 - sha256: 20347140b5feb242d756bbfbf25b5bee7636d3ff87c9001b7c95e6a55fc7e2df + md5: 2c0aa1fd11be5bf5b1bdbc915e0b9e40 + sha256: 9d886effb42c46ef14cb266e9b99853312ddabed3ada104dd30539e165f70932 category: main optional: false - name: modin-core - version: 0.22.3 + version: 0.28.0 manager: conda platform: linux-64 dependencies: - fsspec: '' - numpy: '>=1.18.5' - packaging: '' - pandas: 1.5.3 - psutil: '' + fsspec: '>=2022.11.0' + numpy: '>=1.22.4' + packaging: '>=21.0' + pandas: '>=2.2,<2.3' + psutil: '>=5.8.0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/modin-core-0.22.3-py39hf3d152e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/modin-core-0.28.0-py39hf3d152e_0.conda hash: - md5: 821b7983b179c259abe5295f59c079ea - sha256: d9c8a8425c255048e911934af8b1009509c9a5b5ff1f3cdbac84e6b3bdc1a82a + md5: 88880e1fc6ba6b759e7d0429fed741f8 + sha256: c9fbb625f88191618fd9cd8b9c4ba7b490a12c87b283bc1115d34b698190f4c7 + category: main + optional: false +- name: modin-core + version: 0.28.0 + manager: conda + platform: osx-arm64 + dependencies: + fsspec: '>=2022.11.0' + numpy: '>=1.22.4' + packaging: '>=21.0' + pandas: '>=2.2,<2.3' + psutil: '>=5.8.0' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* + url: https://conda.anaconda.org/conda-forge/osx-arm64/modin-core-0.28.0-py39h2804cbe_0.conda + hash: + md5: d378d3a53862f2adb93bd6873bf2d0d0 + sha256: 426aba167d8b471578ee94fedfa72c19c7275bc305116e38613597ead256e61e category: main optional: false - name: modin-dask - version: 0.22.3 + version: 0.28.0 manager: conda platform: linux-64 dependencies: dask: '>=2.22.0' distributed: '>=2.22.0' - modin-core: 0.22.3 + modin-core: 0.28.0 + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* + url: https://conda.anaconda.org/conda-forge/linux-64/modin-dask-0.28.0-py39hf3d152e_0.conda + hash: + md5: 16ab25beae69cde03b76e72f061d2bf6 + sha256: 97c4ba6e462c1dd227bd1cf1e3af156ba7eb2136e31db40832650c117d9e9ec2 + category: main + optional: false +- name: modin-dask + version: 0.28.0 + manager: conda + platform: osx-arm64 + dependencies: + dask: '>=2.22.0' + distributed: '>=2.22.0' + modin-core: 0.28.0 python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/modin-dask-0.22.3-py39hf3d152e_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/modin-dask-0.28.0-py39hdf13c20_0.conda hash: - md5: 4f514fb1232a6b05d0e5b198337a2bca - sha256: aada21014ca8b7bf3790bec16184120c06dbea78f0f5d550a9b28749c6032c23 + md5: f82af6f891bd9e583c2cdfef3ffe599b + sha256: 3902dd09fee2184faeb98ed87942a5db64e53736959a03e048aae6b5e82aa157 category: main optional: false - name: more-itertools @@ -9698,61 +10140,69 @@ package: category: main optional: false - name: msal - version: 1.26.0 + version: 1.27.0 manager: conda platform: linux-64 dependencies: - cryptography: <44,>=0.6 + cryptography: <45,>=0.6 pyjwt: <3,>=1.0.0 python: '>=3.6' requests: <3,>=2.0.0 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.26.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.27.0-pyhd8ed1ab_0.conda hash: - md5: 9d9b0ef23f5dbe0d612ca037b9bfb410 - sha256: e0eb5606b4a164964d663d7a215ac9cd18db1ce1eca544aa61348e0a2bda94a9 + md5: 95a138b82ec36756dd8c4bd25e564597 + sha256: e3f5876e8ea2078aba5b34d6dde53910afc8f88bf6d9eec11c0bee9eb9ba6ea8 category: main optional: false - name: msal - version: 1.26.0 + version: 1.27.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' - cryptography: <44,>=0.6 + cryptography: <45,>=0.6 pyjwt: <3,>=1.0.0 + python: '>=3.6' requests: <3,>=2.0.0 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.26.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.27.0-pyhd8ed1ab_0.conda hash: - md5: 9d9b0ef23f5dbe0d612ca037b9bfb410 - sha256: e0eb5606b4a164964d663d7a215ac9cd18db1ce1eca544aa61348e0a2bda94a9 + md5: 95a138b82ec36756dd8c4bd25e564597 + sha256: e3f5876e8ea2078aba5b34d6dde53910afc8f88bf6d9eec11c0bee9eb9ba6ea8 category: main optional: false - name: msal_extensions - version: 1.0.0 + version: 1.1.0 manager: conda platform: linux-64 dependencies: + libsecret: '' msal: '>=0.4.1,<2.0' + packaging: '' portalocker: '>=1.6,<3.0' - python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/msal_extensions-1.0.0-pyhd8ed1ab_0.tar.bz2 + pygobject: '>=3,<4' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* + url: https://conda.anaconda.org/conda-forge/linux-64/msal_extensions-1.1.0-py39hf3d152e_1.conda hash: - md5: db0e3cc6e5e99baf237a2ab73898f553 - sha256: 73096cb7f0939595651fb1555a201b3a31adb3dfeb833e70af2d4313015dd51f + md5: 74312f2baf4e602530545e5c2b532fbe + sha256: 650f8abd6ffb20e2d07dcebe98cee4f4aa1e14194ac6f19e5f6af75642122b33 category: main optional: false - name: msal_extensions - version: 1.0.0 + version: 1.1.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' + libsecret: '' msal: '>=0.4.1,<2.0' + packaging: '' portalocker: '>=1.6,<3.0' - url: https://conda.anaconda.org/conda-forge/noarch/msal_extensions-1.0.0-pyhd8ed1ab_0.tar.bz2 + pygobject: '>=3,<4' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* + url: https://conda.anaconda.org/conda-forge/osx-arm64/msal_extensions-1.1.0-py39h2804cbe_1.conda hash: - md5: db0e3cc6e5e99baf237a2ab73898f553 - sha256: 73096cb7f0939595651fb1555a201b3a31adb3dfeb833e70af2d4313015dd51f + md5: 7831a31c47eb638655443b96be8bb381 + sha256: 7276a31aec8ab862ccfa30c371dc761ea9fe78fbb6d2b8e656d4247f75643815 category: main optional: false - name: msgpack-python @@ -9786,30 +10236,30 @@ package: category: main optional: false - name: multidict - version: 6.0.4 + version: 6.0.5 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.4-py39hd1e30aa_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.5-py39hd1e30aa_0.conda hash: - md5: 6c87066b599dc8d932437abdc65ed4b9 - sha256: fc292f5174cf9f8669fe144e8ed4c1b79d3061a92e60bca58d189194e65f4959 + md5: e2005168d5a334f88a1d95d02e139239 + sha256: 9d07c952bd052b95155942d07d30d95eb0d8dfecfc9b0b40b8ba50323dc719da category: main optional: false - name: multidict - version: 6.0.4 + version: 6.0.5 manager: conda platform: osx-arm64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.0.4-py39h02fc5c5_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.0.5-py39h02fc5c5_0.conda hash: - md5: a73bf93d2051be85485b381570dfd1da - sha256: 9bf0acebfa00647f98593179927751e3f9b5ff2bb052419e677f143314543bc1 + md5: 634fe6827968117d1fe51b025849fd99 + sha256: ccf5b7bd1f858a8bf7dfea38e2a69ba4ca89c7c95bced47a98e5bf186b59b3ae category: main optional: false - name: multimethod @@ -9837,32 +10287,32 @@ package: category: main optional: false - name: multiprocess - version: 0.70.15 + version: 0.70.16 manager: conda platform: linux-64 dependencies: - dill: '>=0.3.6' + dill: '>=0.3.8' libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py39hd1e30aa_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py39hd1e30aa_0.conda hash: - md5: ba981804a87d06ba9899e938c3178ed2 - sha256: 7f9c6d04b5ec3df502599ebd3e86a95194bb7358d70c23374f8b71a89040194a + md5: 9cef252eafc7a1a0ddba737290a1c4e2 + sha256: 805bc36c1aa37d80757b96cae7f12944343f1099c68813606416e35486c703d3 category: main optional: false - name: multiprocess - version: 0.70.15 + version: 0.70.16 manager: conda platform: osx-arm64 dependencies: - dill: '>=0.3.6' + dill: '>=0.3.8' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py39h0f82c59_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py39h17cfd9d_0.conda hash: - md5: 3b94f36e225c5b5fe8d37ce3577cf72c - sha256: 0675aaf60406afb644f42b714f58979feaa99892e98aca83b81b8376df7b5997 + md5: 785e3f2fca33cf22a899ad2f25b1f6df + sha256: 9d9d0ebe8f7ab624ff3951ef2ca9a12a46ce2fae9a17f78596322fa043f4290b category: main optional: false - name: munkres @@ -9940,17 +10390,17 @@ package: manager: conda platform: osx-arm64 dependencies: - pyyaml: '' - typing_extensions: '' - ipython: '' importlib-metadata: '' ipykernel: '' + ipython: '' + jupyter-cache: '>=0.5.0,<0.7.0' + myst-parser: '>=0.18.0,<0.19.0' nbclient: '' - python: '>=3.7' nbformat: '>=5.0,<6' + python: '>=3.7' + pyyaml: '' sphinx: '>=4,<6' - myst-parser: '>=0.18.0,<0.19.0' - jupyter-cache: '>=0.5.0,<0.7.0' + typing_extensions: '' url: https://conda.anaconda.org/conda-forge/noarch/myst-nb-0.17.2-pyhd8ed1ab_0.conda hash: md5: 40190b7d06f86b63d28fa78aaa39c023 @@ -9981,14 +10431,14 @@ package: manager: conda platform: osx-arm64 dependencies: - pyyaml: '' - typing-extensions: '' + docutils: '>=0.15,<0.20' jinja2: '' - python: '>=3.7' markdown-it-py: '>=1.0.0,<3.0.0' - sphinx: '>=4,<6' - docutils: '>=0.15,<0.20' mdit-py-plugins: '>=0.3.1,<1' + python: '>=3.7' + pyyaml: '' + sphinx: '>=4,<6' + typing-extensions: '' url: https://conda.anaconda.org/conda-forge/noarch/myst-parser-0.18.1-pyhd8ed1ab_0.tar.bz2 hash: md5: bcfdf5c7d8bf5c6f6be7b4c66fff2eca @@ -10016,10 +10466,10 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' jupyter_client: '>=6.1.12' jupyter_core: '>=4.12,!=5.0.*' nbformat: '>=5.1' + python: '>=3.7' traitlets: '>=5.3' url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.7.4-pyhd8ed1ab_0.conda hash: @@ -10028,35 +10478,35 @@ package: category: main optional: false - name: nbconvert - version: 7.14.2 + version: 7.16.2 manager: conda platform: linux-64 dependencies: - nbconvert-core: 7.14.2 - nbconvert-pandoc: 7.14.2 + nbconvert-core: 7.16.2 + nbconvert-pandoc: 7.16.2 python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.14.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.2-pyhd8ed1ab_0.conda hash: - md5: 0ac429dbe14800f8cb97b892b107bc85 - sha256: 3fd752441d18a2f7fe19a327a767bbfa71092e66bef6eac0bf74de42166bc19e + md5: e14e35cc4a5c90694bb41c5317b576a8 + sha256: 551bbd14019a1df2f44b7e392f590674f63547bcfc7729b93bc4de46125f8565 category: main optional: false - name: nbconvert - version: 7.14.2 + version: 7.16.2 manager: conda platform: osx-arm64 dependencies: + nbconvert-core: 7.16.2 + nbconvert-pandoc: 7.16.2 python: '>=3.8' - nbconvert-core: 7.14.2 - nbconvert-pandoc: 7.14.2 - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.14.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.2-pyhd8ed1ab_0.conda hash: - md5: 0ac429dbe14800f8cb97b892b107bc85 - sha256: 3fd752441d18a2f7fe19a327a767bbfa71092e66bef6eac0bf74de42166bc19e + md5: e14e35cc4a5c90694bb41c5317b576a8 + sha256: 551bbd14019a1df2f44b7e392f590674f63547bcfc7729b93bc4de46125f8565 category: main optional: false - name: nbconvert-core - version: 7.14.2 + version: 7.16.2 manager: conda platform: linux-64 dependencies: @@ -10077,70 +10527,70 @@ package: python: '>=3.8' tinycss2: '' traitlets: '>=5.0' - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.14.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.2-pyhd8ed1ab_0.conda hash: - md5: 631800aa8cc7ccf61e70087355d95827 - sha256: ba3e9a42ea03411d77ac28f14ce9bc6f70710ce1a8f4a970322b2daa91e47ce5 + md5: 5ab3248dd05c543dc631276455ef6a54 + sha256: e1fe894114763addc98ef147a78fcd9a518bf97d268394c356b80c572c78c82f category: main optional: false - name: nbconvert-core - version: 7.14.2 + version: 7.16.2 manager: conda platform: osx-arm64 dependencies: - packaging: '' beautifulsoup4: '' - defusedxml: '' bleach: '' - tinycss2: '' - jupyterlab_pygments: '' - python: '>=3.8' - jinja2: '>=3.0' + defusedxml: '' entrypoints: '>=0.2.2' + jinja2: '>=3.0' jupyter_core: '>=4.7' - traitlets: '>=5.0' + jupyterlab_pygments: '' markupsafe: '>=2.0' - pandocfilters: '>=1.4.1' + mistune: '>=2.0.3,<4' + nbclient: '>=0.5.0' nbformat: '>=5.1' + packaging: '' + pandocfilters: '>=1.4.1' pygments: '>=2.4.1' - nbclient: '>=0.5.0' - mistune: '>=2.0.3,<4' - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.14.2-pyhd8ed1ab_0.conda + python: '>=3.8' + tinycss2: '' + traitlets: '>=5.0' + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.2-pyhd8ed1ab_0.conda hash: - md5: 631800aa8cc7ccf61e70087355d95827 - sha256: ba3e9a42ea03411d77ac28f14ce9bc6f70710ce1a8f4a970322b2daa91e47ce5 + md5: 5ab3248dd05c543dc631276455ef6a54 + sha256: e1fe894114763addc98ef147a78fcd9a518bf97d268394c356b80c572c78c82f category: main optional: false - name: nbconvert-pandoc - version: 7.14.2 + version: 7.16.2 manager: conda platform: linux-64 dependencies: - nbconvert-core: 7.14.2 + nbconvert-core: 7.16.2 pandoc: '' python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.14.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.2-pyhd8ed1ab_0.conda hash: - md5: 27bb156a0e59f9c3b656e3e289475fbd - sha256: f6e7154d9bd74a9c174996b450943571842ffba61d7b2ccead9015a32a795dff + md5: 7a0bfebd69213722427cb61b077b4187 + sha256: 9887eb63dd5131b9bc5a250e29d018b12ad4f3bbfb7ceb59c5923fb405cc36ce category: main optional: false - name: nbconvert-pandoc - version: 7.14.2 + version: 7.16.2 manager: conda platform: osx-arm64 dependencies: + nbconvert-core: 7.16.2 pandoc: '' python: '>=3.8' - nbconvert-core: 7.14.2 - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.14.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.2-pyhd8ed1ab_0.conda hash: - md5: 27bb156a0e59f9c3b656e3e289475fbd - sha256: f6e7154d9bd74a9c174996b450943571842ffba61d7b2ccead9015a32a795dff + md5: 7a0bfebd69213722427cb61b077b4187 + sha256: 9887eb63dd5131b9bc5a250e29d018b12ad4f3bbfb7ceb59c5923fb405cc36ce category: main optional: false - name: nbformat - version: 5.9.2 + version: 5.10.3 manager: conda platform: linux-64 dependencies: @@ -10149,26 +10599,40 @@ package: python: '>=3.8' python-fastjsonschema: '' traitlets: '>=5.1' - url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.3-pyhd8ed1ab_0.conda hash: - md5: 61ba076de6530d9301a0053b02f093d2 - sha256: fc82c5a9116820757b03ffb836b36f0f50e4cd390018024dbadb0ee0217f6992 + md5: ca3d437c0ef2e87f63d085822c74c49a + sha256: 774ba7f0f175851723d9e1524ca5246b431eca1b1e22387b58a80ad0dcd7acd8 category: main optional: false - name: nbformat - version: 5.9.2 + version: 5.10.3 manager: conda platform: osx-arm64 dependencies: + jsonschema: '>=2.6' jupyter_core: '' - python-fastjsonschema: '' python: '>=3.8' + python-fastjsonschema: '' traitlets: '>=5.1' - jsonschema: '>=2.6' - url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.3-pyhd8ed1ab_0.conda + hash: + md5: ca3d437c0ef2e87f63d085822c74c49a + sha256: 774ba7f0f175851723d9e1524ca5246b431eca1b1e22387b58a80ad0dcd7acd8 + category: main + optional: false +- name: nccl + version: 2.20.5.1 + manager: conda + platform: linux-64 + dependencies: + cuda-version: '>=11.8,<12.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.20.5.1-h6103f9b_0.conda hash: - md5: 61ba076de6530d9301a0053b02f093d2 - sha256: fc82c5a9116820757b03ffb836b36f0f50e4cd390018024dbadb0ee0217f6992 + md5: bedb0b33c5e3e6fbd4dce4f6f07fea72 + sha256: 0ccf2718580f5cfc173ddc6b073512de24395a316176071288ec97a97e876c22 category: main optional: false - name: ncurses @@ -10232,15 +10696,15 @@ package: category: main optional: false - name: networkx - version: '3.2' + version: 3.2.1 manager: conda platform: osx-arm64 dependencies: python: '>=3.9' - url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda hash: - md5: cec8cc498664cc00a070676aa89e69a7 - sha256: 3be9dc03b612dc3a52ca388d03f6eadd4f675bd244e61c13a6caafdf26e0a35d + md5: 425fce3b531bed6ec3c74fab3e5f0a1c + sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d category: main optional: false - name: nodeenv @@ -10261,8 +10725,8 @@ package: manager: conda platform: osx-arm64 dependencies: - setuptools: '' python: 2.7|>=3.7 + setuptools: '' url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda hash: md5: 2a75b296096adabbabadd5e9782e5fcc @@ -10281,63 +10745,63 @@ package: category: main optional: false - name: notebook - version: 7.0.7 + version: 7.1.2 manager: conda platform: linux-64 dependencies: jupyter_server: '>=2.4.0,<3' - jupyterlab: '>=4.0.7,<5' + jupyterlab: '>=4.1.1,<4.2' jupyterlab_server: '>=2.22.1,<3' notebook-shim: '>=0.2,<0.3' python: '>=3.8' tornado: '>=6.2.0' - url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.7-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.1.2-pyhd8ed1ab_0.conda hash: - md5: ce3e06227eb2d96b11e685b2cabcf9aa - sha256: 784048988fa12d1f89dc015273cdad67b034e2a1855391a2974fed8ac5a79ed4 + md5: fa781da51f05c9211b75b5e7bcff8136 + sha256: ed5987efcf3a394c4ab12288b4fe7d858784aabc591cebf3dabcd1cdbc7b7347 category: main optional: false - name: notebook - version: 7.0.7 + version: 7.1.2 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' - tornado: '>=6.2.0' jupyter_server: '>=2.4.0,<3' + jupyterlab: '>=4.1.1,<4.2' jupyterlab_server: '>=2.22.1,<3' notebook-shim: '>=0.2,<0.3' - jupyterlab: '>=4.0.7,<5' - url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.7-pyhd8ed1ab_0.conda + python: '>=3.8' + tornado: '>=6.2.0' + url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.1.2-pyhd8ed1ab_0.conda hash: - md5: ce3e06227eb2d96b11e685b2cabcf9aa - sha256: 784048988fa12d1f89dc015273cdad67b034e2a1855391a2974fed8ac5a79ed4 + md5: fa781da51f05c9211b75b5e7bcff8136 + sha256: ed5987efcf3a394c4ab12288b4fe7d858784aabc591cebf3dabcd1cdbc7b7347 category: main optional: false - name: notebook-shim - version: 0.2.3 + version: 0.2.4 manager: conda platform: linux-64 dependencies: jupyter_server: '>=1.8,<3' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda hash: - md5: 67e0fe74c156267d9159e9133df7fd37 - sha256: f028d7ad1f2175cde307db08b60d07e371b9d6f035cfae6c81ea94b4c408c538 + md5: 3d85618e2c97ab896b5b5e298d32b5b3 + sha256: 9b5fdef9ebe89222baa9da2796ebe7bc02ec6c5a1f61327b651d6b92cf9a0230 category: main optional: false - name: notebook-shim - version: 0.2.3 + version: 0.2.4 manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' jupyter_server: '>=1.8,<3' - url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda hash: - md5: 67e0fe74c156267d9159e9133df7fd37 - sha256: f028d7ad1f2175cde307db08b60d07e371b9d6f035cfae6c81ea94b4c408c538 + md5: 3d85618e2c97ab896b5b5e298d32b5b3 + sha256: 9b5fdef9ebe89222baa9da2796ebe7bc02ec6c5a1f61327b651d6b92cf9a0230 category: main optional: false - name: nspr @@ -10366,35 +10830,35 @@ package: category: main optional: false - name: nss - version: '3.97' + version: '3.98' manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' libgcc-ng: '>=12' - libsqlite: '>=3.44.2,<4.0a0' + libsqlite: '>=3.45.1,<4.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' nspr: '>=4.35,<5.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/nss-3.97-h1d7d5a4_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/nss-3.98-h1d7d5a4_0.conda hash: - md5: b916d71a3032416e3f9136090d814472 - sha256: a1a62d415e5b5ddbd799ad6d92b2c4a4351fda00b54d96cac2ce7afa04b2d698 + md5: 54b56c2fdf973656b748e0378900ec13 + sha256: a9bc94d03df48014011cf6caaf447f2ef86a5edf7c70d70002ec4b59f5a4e198 category: main optional: false - name: nss - version: '3.97' + version: '3.98' manager: conda platform: osx-arm64 dependencies: - libcxx: '>=15' - libsqlite: '>=3.44.2,<4.0a0' + libcxx: '>=16' + libsqlite: '>=3.45.1,<4.0a0' libzlib: '>=1.2.13,<1.3.0a0' nspr: '>=4.35,<5.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.97-h5ce2875_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.98-h5ce2875_0.conda hash: - md5: 5d2d69c2cce2c58171648a1fd34d6732 - sha256: 27786510a52aeb1115c31d8127fcc57fdec38bcef22882dd3bd05d04ca5c393d + md5: db0d8f4d11186e4cb3f1a3e0385ca075 + sha256: eecb5718c43dd68cf8150b1e75c91518dae457348828361034639e9e2ea82c82 category: main optional: false - name: numpy @@ -10452,10 +10916,10 @@ package: manager: conda platform: osx-arm64 dependencies: - cryptography: '' blinker: '' - python: '>=3.6' + cryptography: '' pyjwt: '>=1.0.0' + python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2 hash: md5: 8f882b197fd9c4941a787926baea4868 @@ -10522,9 +10986,9 @@ package: platform: osx-arm64 dependencies: numpy: '' + onnx: '' packaging: '' protobuf: '' - onnx: '' python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/onnxconverter-common-1.13.0-pyhd8ed1ab_0.tar.bz2 hash: @@ -10532,35 +10996,73 @@ package: sha256: 8320927bbbae5f9dd4ba2abb2c046f9629111ac49ef539f537876a57af54d2ed category: main optional: false +- name: openai + version: 1.14.0 + manager: conda + platform: linux-64 + dependencies: + anyio: '>=3.5.0,<5' + distro: '>=1.7.0,<2' + httpx: '>=0.23.0,<1' + pydantic: '>=1.9.0,<3' + python: '>=3.7.1' + sniffio: '' + tqdm: '>4' + typing-extensions: '>=4.7,<5' + url: https://conda.anaconda.org/conda-forge/noarch/openai-1.14.0-pyhd8ed1ab_0.conda + hash: + md5: dbcb7019fbb2d03eee4b4435425097b4 + sha256: fe302835e25244e987633e2cf8c6e7f38f9d649abdf685e8c5cf6f7a73f0d2a2 + category: main + optional: false +- name: openai + version: 1.14.0 + manager: conda + platform: osx-arm64 + dependencies: + anyio: '>=3.5.0,<5' + distro: '>=1.7.0,<2' + httpx: '>=0.23.0,<1' + pydantic: '>=1.9.0,<3' + python: '>=3.7.1' + sniffio: '' + tqdm: '>4' + typing-extensions: '>=4.7,<5' + url: https://conda.anaconda.org/conda-forge/noarch/openai-1.14.0-pyhd8ed1ab_0.conda + hash: + md5: dbcb7019fbb2d03eee4b4435425097b4 + sha256: fe302835e25244e987633e2cf8c6e7f38f9d649abdf685e8c5cf6f7a73f0d2a2 + category: main + optional: false - name: openjpeg - version: 2.5.0 + version: 2.5.2 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' - libpng: '>=1.6.39,<1.7.0a0' + libpng: '>=1.6.43,<1.7.0a0' libstdcxx-ng: '>=12' libtiff: '>=4.6.0,<4.7.0a0' libzlib: '>=1.2.13,<1.3.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-h488ebb8_3.conda + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda hash: - md5: 128c25b7fe6a25286a48f3a6a9b5b6f3 - sha256: 9fe91b67289267de68fda485975bb48f0605ac503414dc663b50d8b5f29bc82a + md5: 7f2e286780f072ed750df46dc2631138 + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 category: main optional: false - name: openjpeg - version: 2.5.0 + version: 2.5.2 manager: conda platform: osx-arm64 dependencies: - libcxx: '>=15.0.7' - libpng: '>=1.6.39,<1.7.0a0' + libcxx: '>=16' + libpng: '>=1.6.43,<1.7.0a0' libtiff: '>=4.6.0,<4.7.0a0' libzlib: '>=1.2.13,<1.3.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.0-h4c1507b_3.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda hash: - md5: 4127dd217a010d9c6cbefdaae07d9f19 - sha256: a6998c0da4643a84dc7c0b3a9e5137db258619ea922317bb7d9ae64f54b4a9ed + md5: 5029846003f0bc14414b9128a1f7c84b + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 category: main optional: false - name: openssl @@ -10668,8 +11170,8 @@ package: manager: conda platform: osx-arm64 dependencies: - typing_utils: '' python: '>=3.6' + typing_utils: '' url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda hash: md5: 24fba5a9d161ad8103d4e84c0e1a3ed4 @@ -10701,71 +11203,72 @@ package: category: main optional: false - name: pandas - version: 1.5.3 + version: 2.2.1 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' libstdcxx-ng: '>=12' - numpy: '>=1.20.3,<2.0a0' + numpy: '>=1.22.4,<2.0a0' python: '>=3.9,<3.10.0a0' python-dateutil: '>=2.8.1' + python-tzdata: '>=2022a' python_abi: 3.9.* pytz: '>=2020.1' - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-1.5.3-py39h2ad29b5_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.1-py39hddac248_0.conda hash: - md5: 0d89bced73199385857310d3a648757d - sha256: ab03a569f9910c27de04ab10b8f9e5cd3481df5920ca88617aea4a761a5cf1e9 + md5: 85293a042c24a08e71b7608ee66b6134 + sha256: 91a2f8062d905f65548a5f3e9cf91e4acd70ac151d9e9fcbb32af9980643c1d7 category: main optional: false - name: pandas - version: 1.1.4 + version: 2.2.1 manager: conda platform: osx-arm64 dependencies: - libcxx: '>=11.0.0' - numpy: '>=1.19.2,<2.0a0' + libcxx: '>=16' + numpy: '>=1.22.4,<2.0a0' python: '>=3.9,<3.10.0a0' - python-dateutil: '>=2.7.3' + python-dateutil: '>=2.8.1' + python-tzdata: '>=2022a' python_abi: 3.9.* - pytz: '>=2017.2' - setuptools: <60.0.0 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-1.1.4-py39ha4bedbf_0.tar.bz2 + pytz: '>=2020.1' + url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.1-py39h47e51b9_0.conda hash: - md5: c4d6ef11b9f0e4e4f7a4dac0182f74b7 - sha256: ac0a5452c67ea613d68f037d7839226f746199bbc75fc18d4105a134730df3a5 + md5: be545eb72baf10c37f3ca5c974586abe + sha256: 08970c57a208e75ab99312ef27401ad76399669f2cc4bb3b5850ea21560393cb category: main optional: false - name: pandera - version: 0.18.0 + version: 0.18.3 manager: conda platform: linux-64 dependencies: - pandera-base: '>=0.18.0,<0.18.1.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/pandera-0.18.0-hd8ed1ab_0.conda + pandera-base: '>=0.18.3,<0.18.4.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/pandera-0.18.3-hd8ed1ab_0.conda hash: - md5: e960b9d610b62715f72187545b77cb8b - sha256: 86decd459a369fc475d0f102cac3e31cec566bfb87c2db89f770b397b0f812fd + md5: a8e2857c67ded4b6d0ab6fabbb9ec065 + sha256: 80daf30527d62c5694a89ae551be4aff40d7a82c9d25b73ea6b6e24309a5a50d category: main optional: false - name: pandera - version: 0.17.1 + version: 0.18.3 manager: conda platform: osx-arm64 dependencies: - pandera-base: '>=0.17.1,<0.17.2.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/pandera-0.17.1-hd8ed1ab_1.conda + pandera-base: '>=0.18.3,<0.18.4.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/pandera-0.18.3-hd8ed1ab_0.conda hash: - md5: fccf7b6a41d32e4326732fe4563b4f0a - sha256: 6f0a134bc48187ef5665eb577903fe58d45c32f8ace83aa55f9820535ff39ad9 + md5: a8e2857c67ded4b6d0ab6fabbb9ec065 + sha256: 80daf30527d62c5694a89ae551be4aff40d7a82c9d25b73ea6b6e24309a5a50d category: main optional: false - name: pandera-base - version: 0.18.0 + version: 0.18.3 manager: conda platform: linux-64 dependencies: - multimethod: '' + multimethod: <=1.10.0 numpy: '>=1.19.0' packaging: '>=20.0' pandas: '>=1.2.0' @@ -10774,56 +11277,52 @@ package: typeguard: '>=3.0.2' typing_inspect: '>=0.6.0' wrapt: '' - url: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.18.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.18.3-pyhd8ed1ab_0.conda hash: - md5: f7214927ade78c56a6ffc765f9cdac40 - sha256: 4691edd69bda437d54962dbaa9aeb889da656e33d135d7620557d63398402821 + md5: e96ee36cbebac49688a927b3b74c38ed + sha256: 00b0994260df53f85077e478ba6dbdbc227f62c4e077ec6a7906722e91df223f category: main optional: false - name: pandera-base - version: 0.17.1 + version: 0.18.3 manager: conda platform: osx-arm64 dependencies: - typing_extensions: '' - wrapt: '' - multimethod: '' - python: '>=3.7' + multimethod: <=1.10.0 + numpy: '>=1.19.0' packaging: '>=20.0' - pandas: '>=1.0' - numpy: '>=1.9.0' - typing_inspect: '>=0.6.0' - pydantic: <2.0.0 + pandas: '>=1.2.0' + pydantic: '' + python: '>=3.8' typeguard: '>=3.0.2' - url: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.17.1-pyhd8ed1ab_0.conda + typing_inspect: '>=0.6.0' + wrapt: '' + url: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.18.3-pyhd8ed1ab_0.conda hash: - md5: f1a492b0898bd940c4c4f9909df28a8a - sha256: 55d27d7577abe4a32de46727df9ee59ff65d714d0855a0998cb4a19f6e8dbd4f + md5: e96ee36cbebac49688a927b3b74c38ed + sha256: 00b0994260df53f85077e478ba6dbdbc227f62c4e077ec6a7906722e91df223f category: main optional: false - name: pandoc - version: 3.1.3 + version: 3.1.12.3 manager: conda platform: linux-64 - dependencies: - gmp: '' - libzlib: '>=1.2.13,<1.3.0a0' - zlib: '' - url: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.12.3-ha770c72_0.conda hash: - md5: 8287aeb8462e2d4b235eff788e75919d - sha256: 52d23e2fded05e7a19d9d7996f19ed837b46578b6e5951b8c5990cf919404ffc + md5: cdea66892b19a454f939487318b6c517 + sha256: 26bfcda675fbddd059a8861dc75b9e497980ec6c679ec2a27e7d74042c4b295b category: main optional: false - name: pandoc - version: 3.1.3 + version: 3.1.12.3 manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.1.3-hce30654_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.1.12.3-hce30654_0.conda hash: - md5: 7edcc75acdac60dba441b229c0ec66ee - sha256: 858a923c8b9082791b2c13c2ff2ae87e28dd2e2655f56117c8ecb7d366002bc7 + md5: e14b5833daffe398ea21308cb0559477 + sha256: 3bdfb8e65c7f7b050c07f5b84669024eaa38aa268195e1a804cbd20f07233fa4 category: main optional: false - name: pandocfilters @@ -10851,46 +11350,46 @@ package: category: main optional: false - name: pango - version: 1.50.14 + version: 1.52.1 manager: conda platform: linux-64 dependencies: - cairo: '>=1.16.0,<2.0a0' + cairo: '>=1.18.0,<2.0a0' fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' fribidi: '>=1.0.10,<2.0a0' - harfbuzz: '>=8.1.1,<9.0a0' + harfbuzz: '>=8.3.0,<9.0a0' libgcc-ng: '>=12' - libglib: '>=2.76.4,<3.0a0' - libpng: '>=1.6.39,<1.7.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-ha41ecd1_2.conda + libglib: '>=2.78.4,<3.0a0' + libpng: '>=1.6.43,<1.7.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/pango-1.52.1-ha41ecd1_0.conda hash: - md5: 1a66c10f6a0da3dbd2f3a68127e7f6a0 - sha256: 6ecce306b7ac4acf1184eb5b045e57e613e19e99c27d57f33eb255f8a9120a93 + md5: 5c0cc002bf4eaa56448b0729efd6e96c + sha256: 53d3442fb39eb9f0ac36646769469f2f825afaeda984719002460efd7c3d354f category: main optional: false - name: pango - version: 1.50.14 + version: 1.52.1 manager: conda platform: osx-arm64 dependencies: - cairo: '>=1.16.0,<2.0a0' + cairo: '>=1.18.0,<2.0a0' fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' fribidi: '>=1.0.10,<2.0a0' - harfbuzz: '>=8.1.1,<9.0a0' - libglib: '>=2.76.4,<3.0a0' - libpng: '>=1.6.39,<1.7.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.50.14-hcf40dda_2.conda + harfbuzz: '>=8.3.0,<9.0a0' + libglib: '>=2.78.4,<3.0a0' + libpng: '>=1.6.43,<1.7.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.52.1-hb067d4f_0.conda hash: - md5: 79026cbb74d69b444e5dc2be0fb4b4a9 - sha256: e17f649192ce06c68893b50fa2492db87d2d82ae6d3c6058cc62dcc44dde8b2e + md5: bbd3e01b8988231317fc1f204d177795 + sha256: 9fd14a2f99d48c6c2729ec8bc0a5db2bd6442f2766a7393f930138409e829a91 category: main optional: false - name: papermill - version: 2.4.0 + version: 2.5.0 manager: conda platform: linux-64 dependencies: @@ -10905,32 +11404,32 @@ package: requests: '' tenacity: '' tqdm: '>=4.32.2' - url: https://conda.anaconda.org/conda-forge/noarch/papermill-2.4.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/papermill-2.5.0-pyhd8ed1ab_0.conda hash: - md5: 643948c831f14c43cc4c80f302f7146e - sha256: f720b31436d8425bb21bed09a27a77d06437f4abc23da5eea0e479115ec5bf95 + md5: e6e69b90afd3d0597da8f1f74cc4bd58 + sha256: c9896ec2358bf9da079ce34b986d8843ecf75f840d2d719f430b665cfa674a59 category: main optional: false - name: papermill - version: 2.4.0 + version: 2.5.0 manager: conda platform: osx-arm64 dependencies: - requests: '' - pyyaml: '' - click: '' + ansiwrap: '' black: '' + click: '' entrypoints: '' - tenacity: '' - ansiwrap: '' - python: '>=3.7' + nbclient: '>=0.2.0' nbformat: '>=5.1.2' + python: '>=3.7' + pyyaml: '' + requests: '' + tenacity: '' tqdm: '>=4.32.2' - nbclient: '>=0.2.0' - url: https://conda.anaconda.org/conda-forge/noarch/papermill-2.4.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/papermill-2.5.0-pyhd8ed1ab_0.conda hash: - md5: 643948c831f14c43cc4c80f302f7146e - sha256: f720b31436d8425bb21bed09a27a77d06437f4abc23da5eea0e479115ec5bf95 + md5: e6e69b90afd3d0597da8f1f74cc4bd58 + sha256: c9896ec2358bf9da079ce34b986d8843ecf75f840d2d719f430b665cfa674a59 category: main optional: false - name: paramiko @@ -10953,10 +11452,10 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' - cryptography: '>=3.3' bcrypt: '>=3.2' + cryptography: '>=3.3' pynacl: '>=1.5' + python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.4.0-pyhd8ed1ab_0.conda hash: md5: a5e792523b028b06d7ce6e65a6cd4a33 @@ -11006,9 +11505,9 @@ package: manager: conda platform: osx-arm64 dependencies: - toolz: '' locket: '' python: '>=3.7' + toolz: '' url: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda hash: md5: acf4b7c0bcd5fa3b0e05801c4d2accd6 @@ -11109,8 +11608,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' ptyprocess: '>=0.5' + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda hash: md5: 629f3203c99b32e0988910c93e77f3b6 @@ -11187,31 +11686,31 @@ package: category: main optional: false - name: pip - version: 23.3.2 + version: '24.0' manager: conda platform: linux-64 dependencies: python: '>=3.7' setuptools: '' wheel: '' - url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda hash: - md5: 8591c748f98dcc02253003533bc2e4b1 - sha256: 29096d1d53c61aeef518729add2f405df86b3629d1d738a35b15095e6a02eeed + md5: f586ac1e56c8638b64f9c8122a7b8a67 + sha256: b7c1c5d8f13e8cb491c4bd1d0d1896a4cf80fc47de01059ad77509112b664a4a category: main optional: false - name: pip - version: 23.3.2 + version: '24.0' manager: conda platform: osx-arm64 dependencies: + python: '>=3.7' setuptools: '' wheel: '' - python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda hash: - md5: 8591c748f98dcc02253003533bc2e4b1 - sha256: 29096d1d53c61aeef518729add2f405df86b3629d1d738a35b15095e6a02eeed + md5: f586ac1e56c8638b64f9c8122a7b8a67 + sha256: b7c1c5d8f13e8cb491c4bd1d0d1896a4cf80fc47de01059ad77509112b664a4a category: main optional: false - name: pixman @@ -11228,15 +11727,15 @@ package: category: main optional: false - name: pixman - version: 0.43.2 + version: 0.43.4 manager: conda platform: osx-arm64 dependencies: - libcxx: '>=15' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.2-hebf3989_0.conda + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda hash: - md5: aaf3f4397959b8900c7c2f90304ccb29 - sha256: dc3ec60e769f80c1d5124ba2788e3c9122443743989ad5f92addf416c7a4e58b + md5: 0308c68e711cd295aaa026a4f8c4b1e5 + sha256: df0ba2710ccdea5c909b63635529797f6eb3635b6fb77ae9cb2f183d08818409 category: main optional: false - name: pkgutil-resolve-name @@ -11264,61 +11763,61 @@ package: category: main optional: false - name: platformdirs - version: 3.8.1 + version: 3.11.0 manager: conda platform: linux-64 dependencies: python: '>=3.7' typing-extensions: '>=4.6.3' - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.8.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda hash: - md5: e76070baecfaca6ecdb5fbd5af7c9309 - sha256: b5012d6fd30f2462b6ca595539cfdae9aaf61b3b7a56e51ab94aef0fd9efcd3d + md5: 8f567c0a74aa44cf732f15773b4083b0 + sha256: b3d809ff5a18ee8514bba8bc05a23b4cdf1758090a18a2cf742af38aed405144 category: main optional: false - name: platformdirs - version: 3.8.1 + version: 3.11.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' typing-extensions: '>=4.6.3' - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.8.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda hash: - md5: e76070baecfaca6ecdb5fbd5af7c9309 - sha256: b5012d6fd30f2462b6ca595539cfdae9aaf61b3b7a56e51ab94aef0fd9efcd3d + md5: 8f567c0a74aa44cf732f15773b4083b0 + sha256: b3d809ff5a18ee8514bba8bc05a23b4cdf1758090a18a2cf742af38aed405144 category: main optional: false - name: plotly - version: 5.18.0 + version: 5.19.0 manager: conda platform: linux-64 dependencies: packaging: '' python: '>=3.6' tenacity: '>=6.2.0' - url: https://conda.anaconda.org/conda-forge/noarch/plotly-5.18.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/plotly-5.19.0-pyhd8ed1ab_0.conda hash: - md5: 9f6a8664f1fe752f79473eeb9bf33a60 - sha256: 1e812d896897a4d58d520bb51072d91d477faf7697e2b724b8ce59040989e8be + md5: 669cd7065794633b9e64e6a9612ec700 + sha256: fa9ae81e1f304f1480378ea25d559748e061c5b8d55b3ade433c3bc483dbae9e category: main optional: false - name: plotly - version: 5.18.0 + version: 5.19.0 manager: conda platform: osx-arm64 dependencies: packaging: '' python: '>=3.6' tenacity: '>=6.2.0' - url: https://conda.anaconda.org/conda-forge/noarch/plotly-5.18.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/plotly-5.19.0-pyhd8ed1ab_0.conda hash: - md5: 9f6a8664f1fe752f79473eeb9bf33a60 - sha256: 1e812d896897a4d58d520bb51072d91d477faf7697e2b724b8ce59040989e8be + md5: 669cd7065794633b9e64e6a9612ec700 + sha256: fa9ae81e1f304f1480378ea25d559748e061c5b8d55b3ade433c3bc483dbae9e category: main optional: false - name: polars - version: 0.20.6 + version: 0.20.15 manager: conda platform: linux-64 dependencies: @@ -11327,14 +11826,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* typing_extensions: '>=4.0.0' - url: https://conda.anaconda.org/conda-forge/linux-64/polars-0.20.6-py39h927a070_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/polars-0.20.15-py39h87fa3cb_0.conda hash: - md5: ea89586aad12c2927ec631a66fb5a89c - sha256: 329f4778fb306fbfb76d33e16d7c78b78f529e8672df4459b9dc92f294589630 + md5: fd5fb1c8bf319ea2edc3feede63f88e1 + sha256: 97dbca690a6805c4483115dfb57b998da3506b42c6cb9669eb9fa73f7e39788e category: main optional: false - name: polars - version: 0.20.6 + version: 0.20.15 manager: conda platform: osx-arm64 dependencies: @@ -11342,14 +11841,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* typing_extensions: '>=4.0.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/polars-0.20.6-py39he979254_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/polars-0.20.15-py39h08ca3d8_0.conda hash: - md5: 0c1b1c4bcaf956076cec0df1f100164e - sha256: 6f8fa21fee16e2317f12ead55e9b6d1b7c5acee62fb83971af8e347ae5f63c6a + md5: bc4b06d948d57003cd5f482e77856ca0 + sha256: 34e841ad27b077f7cf93e6da1be05e2519da1eec12b7791f729503122f206cb4 category: main optional: false - name: poppler - version: 23.12.0 + version: 24.02.0 manager: conda platform: linux-64 dependencies: @@ -11357,54 +11856,53 @@ package: fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' - lcms2: '>=2.15,<3.0a0' - libcurl: '>=8.4.0,<9.0a0' + lcms2: '>=2.16,<3.0a0' + libcurl: '>=8.5.0,<9.0a0' libgcc-ng: '>=12' - libglib: '>=2.78.1,<3.0a0' + libglib: '>=2.78.3,<3.0a0' libiconv: '>=1.17,<2.0a0' libjpeg-turbo: '>=3.0.0,<4.0a0' - libpng: '>=1.6.39,<1.7.0a0' + libpng: '>=1.6.42,<1.7.0a0' libstdcxx-ng: '>=12' libtiff: '>=4.6.0,<4.7.0a0' libzlib: '>=1.2.13,<1.3.0a0' nspr: '>=4.35,<5.0a0' - nss: '>=3.95,<4.0a0' + nss: '>=3.97,<4.0a0' openjpeg: '>=2.5.0,<3.0a0' poppler-data: '' - url: https://conda.anaconda.org/conda-forge/linux-64/poppler-23.12.0-h590f24d_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/poppler-24.02.0-h590f24d_0.conda hash: - md5: 480189ac126a8c6c61e14476c8ba7c9a - sha256: b313920277aca763b590dddf806c56b0aadcdff82f5ace39827cab4792ae4b20 + md5: 7e715c1572de09d6106c5a31fa70ffca + sha256: 55bb2deb67c76bd9f5592bf9765cc879cf11e555c4f8879292cbd5544e88887e category: main optional: false - name: poppler - version: 23.12.0 + version: 24.02.0 manager: conda platform: osx-arm64 dependencies: - __osx: '>=10.9' cairo: '>=1.18.0,<2.0a0' fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' gettext: '>=0.21.1,<1.0a0' - lcms2: '>=2.15,<3.0a0' - libcurl: '>=8.4.0,<9.0a0' - libcxx: '>=16.0.6' - libglib: '>=2.78.1,<3.0a0' + lcms2: '>=2.16,<3.0a0' + libcurl: '>=8.5.0,<9.0a0' + libcxx: '>=16' + libglib: '>=2.78.3,<3.0a0' libiconv: '>=1.17,<2.0a0' libjpeg-turbo: '>=3.0.0,<4.0a0' - libpng: '>=1.6.39,<1.7.0a0' + libpng: '>=1.6.42,<1.7.0a0' libtiff: '>=4.6.0,<4.7.0a0' libzlib: '>=1.2.13,<1.3.0a0' nspr: '>=4.35,<5.0a0' - nss: '>=3.95,<4.0a0' + nss: '>=3.97,<4.0a0' openjpeg: '>=2.5.0,<3.0a0' poppler-data: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/poppler-23.12.0-hcdd998b_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/poppler-24.02.0-h896e6cb_0.conda hash: - md5: e072f524004eee193e30d243d68c520f - sha256: 13ebaac3bf9b77e92e777d3ed245c2f0a8ac93985e334b0cd797a39f321ae5dd + md5: 228b76f3de35d7bbe1374e52d1e0a5bb + sha256: c4d579795f329f1fe1b590d7cc3fc31d6b68f08e27b1f84e36ea3e9e05de5d6e category: main optional: false - name: poppler-data @@ -11456,46 +11954,46 @@ package: category: main optional: false - name: postgresql - version: '16.1' + version: '16.2' manager: conda platform: linux-64 dependencies: krb5: '>=1.21.2,<1.22.0a0' libgcc-ng: '>=12' - libpq: '16.1' - libxml2: '>=2.12.2,<3.0.0a0' + libpq: '16.2' + libxml2: '>=2.12.5,<3.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' readline: '>=8.2,<9.0a0' tzcode: '' tzdata: '' - url: https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.1-h7387d8b_7.conda + url: https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.2-h7387d8b_0.conda hash: - md5: 563017467245a8a02671a5257ad9331e - sha256: 213580a3fe1000a6b55d228d97a49f51cfc551f1f53da431c580c4a73e4cec21 + md5: 4e86738066b4966f0357f661b3691cae + sha256: 5b4fcfbd51957bb51fb1d2d28c3e9d8f4a50be0ac1be9c40083b1e9a39df7f3d category: main optional: false - name: postgresql - version: '16.1' + version: '16.2' manager: conda platform: osx-arm64 dependencies: krb5: '>=1.21.2,<1.22.0a0' - libpq: '16.1' - libxml2: '>=2.11.6,<3.0.0a0' + libpq: '16.2' + libxml2: '>=2.12.5,<3.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' readline: '>=8.2,<9.0a0' tzcode: '' tzdata: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/postgresql-16.1-hc6ab77f_7.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/postgresql-16.2-h1d0603d_0.conda hash: - md5: bba5c8dd372e5e2cf81bf71e6104fa7b - sha256: 5830151c5b72e95ecbff45b36a88405875514ea27cfce1b5381e98d6cee9974a + md5: 29f3fd38f23da95692ab11af12fdb6da + sha256: 01b5bb78c909778fefca380bb808044850adba2972cd92f8fe6ead122a34fc45 category: main optional: false - name: pre-commit - version: 3.6.0 + version: 3.6.2 manager: conda platform: linux-64 dependencies: @@ -11505,53 +12003,53 @@ package: python: '>=3.9' pyyaml: '>=5.1' virtualenv: '>=20.10.0' - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.2-pyha770c72_0.conda hash: - md5: 473a7cfca197da0a10cff3f6dded7d4b - sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54 + md5: 61534ee57ffdf26d7b1b514d33daccc4 + sha256: 8eb9f5965c37d2bbee9302e16cc7c5517ee06491986356112be13431a043681e category: main optional: false - name: pre-commit - version: 3.6.0 + version: 3.6.2 manager: conda platform: osx-arm64 dependencies: - python: '>=3.9' - pyyaml: '>=5.1' + cfgv: '>=2.0.0' identify: '>=1.0.0' nodeenv: '>=0.11.1' - cfgv: '>=2.0.0' + python: '>=3.9' + pyyaml: '>=5.1' virtualenv: '>=20.10.0' - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.2-pyha770c72_0.conda hash: - md5: 473a7cfca197da0a10cff3f6dded7d4b - sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54 + md5: 61534ee57ffdf26d7b1b514d33daccc4 + sha256: 8eb9f5965c37d2bbee9302e16cc7c5517ee06491986356112be13431a043681e category: main optional: false - name: progressbar2 - version: 4.3.2 + version: 4.4.2 manager: conda platform: linux-64 dependencies: python: '>=3.8' python-utils: '>=3.8.1' - url: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.3.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.4.2-pyhd8ed1ab_0.conda hash: - md5: d55cd7adfc98beaef0c717c61fa3d294 - sha256: 349bfed6f822309cf10f1a42f637b9c417759a87a1d282b7f36a49c4394a3393 + md5: aca82be28a1c676a3e0365e83892f412 + sha256: 3661ceb2d69fa43cfba498486aee45e7f69e3a83c27430ca8aa21b27e5686d09 category: main optional: false - name: progressbar2 - version: 4.3.2 + version: 4.4.2 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' python-utils: '>=3.8.1' - url: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.3.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.4.2-pyhd8ed1ab_0.conda hash: - md5: d55cd7adfc98beaef0c717c61fa3d294 - sha256: 349bfed6f822309cf10f1a42f637b9c417759a87a1d282b7f36a49c4394a3393 + md5: aca82be28a1c676a3e0365e83892f412 + sha256: 3661ceb2d69fa43cfba498486aee45e7f69e3a83c27430ca8aa21b27e5686d09 category: main optional: false - name: proj @@ -11589,27 +12087,27 @@ package: category: main optional: false - name: prometheus_client - version: 0.19.0 + version: 0.20.0 manager: conda platform: linux-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.19.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda hash: - md5: 7baa10fa8073c371155cf451b71b848d - sha256: 1235a3dbb033f914163e0deaf22d244cb1c1b5d8829d0089e38c34079286acbe + md5: 9a19b94034dd3abb2b348c8b93388035 + sha256: 757cd91d01c2e0b64fadf6bc9a11f558cf7638d897dfbaf7415ddf324d5405c9 category: main optional: false - name: prometheus_client - version: 0.19.0 + version: 0.20.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.19.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda hash: - md5: 7baa10fa8073c371155cf451b71b848d - sha256: 1235a3dbb033f914163e0deaf22d244cb1c1b5d8829d0089e38c34079286acbe + md5: 9a19b94034dd3abb2b348c8b93388035 + sha256: 757cd91d01c2e0b64fadf6bc9a11f558cf7638d897dfbaf7415ddf324d5405c9 category: main optional: false - name: prometheus_flask_exporter @@ -11658,8 +12156,8 @@ package: manager: conda platform: osx-arm64 dependencies: - wcwidth: '' python: '>=3.7' + wcwidth: '' url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda hash: md5: 0bf64bf10eee21f46ac83c161917fa86 @@ -11708,8 +12206,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' protobuf: '>=3.19.0,<5.0.0dev' + python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.23.0-pyhd8ed1ab_0.conda hash: md5: 26c043ffe1c027eaed894d70ea04a18d @@ -11752,30 +12250,32 @@ package: sha256: f39a877accd33d477a973e211c105d81e5bc5ce0087f87b3fe0940c9d79eb78f category: main optional: false -- name: protoc-gen-swagger - version: 0.1.0 +- name: protoc-gen-openapiv2 + version: 0.0.1 manager: conda platform: linux-64 dependencies: - protobuf: '>=3.0.0' + googleapis-common-protos: '' + protobuf: '>=4.21.0' python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/protoc-gen-swagger-0.1.0-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/protoc-gen-openapiv2-0.0.1-pyhd8ed1ab_0.conda hash: - md5: cb19a2a0c0ea68f9d316792a60965c82 - sha256: e12577e09de098d0e3468ba82815bd411ebad4fac644430d283ea867193d55e6 + md5: 7a0af408c81dccfc5a420fb1f27c9064 + sha256: a6b561d1d09f4d88e256efc10cc6065866acf53efd32d03509a5b8c0aed40f3e category: main optional: false -- name: protoc-gen-swagger - version: 0.1.0 +- name: protoc-gen-openapiv2 + version: 0.0.1 manager: conda platform: osx-arm64 dependencies: + googleapis-common-protos: '' + protobuf: '>=4.21.0' python: '>=3.6' - protobuf: '>=3.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/protoc-gen-swagger-0.1.0-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/protoc-gen-openapiv2-0.0.1-pyhd8ed1ab_0.conda hash: - md5: cb19a2a0c0ea68f9d316792a60965c82 - sha256: e12577e09de098d0e3468ba82815bd411ebad4fac644430d283ea867193d55e6 + md5: 7a0af408c81dccfc5a420fb1f27c9064 + sha256: a6b561d1d09f4d88e256efc10cc6065866acf53efd32d03509a5b8c0aed40f3e category: main optional: false - name: psutil @@ -11853,8 +12353,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' psycopg2: '>=2.9.9,<2.9.10.0a0' + python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.9-pyhd8ed1ab_0.conda hash: md5: c15b2ec0570f8988819eea58286dbc19 @@ -11932,30 +12432,6 @@ package: sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44 category: main optional: false -- name: py - version: 1.11.0 - manager: conda - platform: linux-64 - dependencies: - python: '>=2.7' - url: https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2 - hash: - md5: b4613d7e7a493916d867842a6a148054 - sha256: 268be33a290e3d51467ab29cbb5a80cf79f69dade2f2dead25d7f80d76c3543a - category: main - optional: false -- name: py - version: 1.11.0 - manager: conda - platform: osx-arm64 - dependencies: - python: '>=2.7' - url: https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2 - hash: - md5: b4613d7e7a493916d867842a6a148054 - sha256: 268be33a290e3d51467ab29cbb5a80cf79f69dade2f2dead25d7f80d76c3543a - category: main - optional: false - name: py4j version: 0.10.9.7 manager: conda @@ -12031,8 +12507,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.5' pyarrow: '>=0.14' + python: '>=3.5' url: https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda hash: md5: ccc06e6ef2064ae129fab3286299abda @@ -12081,14 +12557,43 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' pyasn1: '>=0.4.6,<0.6.0' + python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda hash: md5: 26db749166cdca55e5ef1ffdc7767d0e sha256: 7867ba43b6ef1e66054ca6b70f59bbef4cdb0cc761f0be3b66d79d15bd43143b category: main optional: false +- name: pycairo + version: 1.26.0 + manager: conda + platform: linux-64 + dependencies: + cairo: '>=1.18.0,<2.0a0' + libgcc-ng: '>=12' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* + url: https://conda.anaconda.org/conda-forge/linux-64/pycairo-1.26.0-py39hc92de75_0.conda + hash: + md5: a6296b5f4ef108e5616d65e3c68a83c3 + sha256: 9e9e4bf4667d964678ef9dfe031b48f803c7e981e60b7095431bc3d1578f3cc2 + category: main + optional: false +- name: pycairo + version: 1.26.0 + manager: conda + platform: osx-arm64 + dependencies: + cairo: '>=1.18.0,<2.0a0' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* + url: https://conda.anaconda.org/conda-forge/osx-arm64/pycairo-1.26.0-py39he25459e_0.conda + hash: + md5: 2c8e09f611be0a0f8ac8349223223880 + sha256: 409c82c06934e27d1033e87d4e17c1518c52056c566205d728e55e2ea706a85d + category: main + optional: false - name: pycparser version: '2.21' manager: conda @@ -12114,7 +12619,7 @@ package: category: main optional: false - name: pydantic - version: 1.10.13 + version: 1.10.14 manager: conda platform: linux-64 dependencies: @@ -12122,24 +12627,24 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* typing-extensions: '>=4.2.0' - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.13-py39hd1e30aa_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.14-py39hd1e30aa_0.conda hash: - md5: f3d35e3b6357598fae3a7e81aa36385f - sha256: b3ad6cccfe0c710d6fcb6b24c54255c924bfc52b83af13e296b0d7198546c08f + md5: 8b6ce436b927350e124b42aa12b79410 + sha256: 351e7a25060d9b86a312b5662691dd5f7416099587d24f5293da3972b6606e76 category: main optional: false - name: pydantic - version: 1.10.13 + version: 1.10.14 manager: conda platform: osx-arm64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* typing-extensions: '>=4.2.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-1.10.13-py39h17cfd9d_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-1.10.14-py39h17cfd9d_0.conda hash: - md5: b6fb4bfeba3f13f52939e2e40efaf5f8 - sha256: 0bf6688875f926de77eeebe7a3507f89f2cd70263abf8bc609876d2601ed21a0 + md5: 1018fbdc8224bd8dabfd3a6707aa2ff3 + sha256: 10e4199cabe3198ca559857a4c219e922cd08df32675543ff03f13d08a423e5c category: main optional: false - name: pygments @@ -12166,16 +12671,54 @@ package: sha256: af5f8867450dc292f98ea387d4d8945fc574284677c8f60eaa9846ede7387257 category: main optional: false +- name: pygobject + version: 3.48.1 + manager: conda + platform: linux-64 + dependencies: + cairo: '>=1.18.0,<2.0a0' + libffi: '>=3.4,<4.0a0' + libgirepository: '' + libglib: '>=2.78.4,<3.0a0' + libiconv: '' + pycairo: '' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* + url: https://conda.anaconda.org/conda-forge/linux-64/pygobject-3.48.1-py39hb25b1be_0.conda + hash: + md5: b6706f63ee072aa955a42a502bd64fe9 + sha256: 282e82bba4f1b89b0fd2fbe8bb4891ad4f503aa9d15dcbacbdffac928f5f298a + category: main + optional: false +- name: pygobject + version: 3.48.1 + manager: conda + platform: osx-arm64 + dependencies: + cairo: '>=1.18.0,<2.0a0' + libffi: '>=3.4,<4.0a0' + libgirepository: '' + libglib: '>=2.78.4,<3.0a0' + libiconv: '' + pycairo: '' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* + url: https://conda.anaconda.org/conda-forge/osx-arm64/pygobject-3.48.1-py39h6a3fad4_0.conda + hash: + md5: 54ac4bd26c995b56fc9dd976d3954f3f + sha256: 4f94211c3014f3d7acb4ad02caa8aa34bc040597d18c2f954cf700999ed6e19d + category: main + optional: false - name: pyjwt version: 2.8.0 manager: conda platform: linux-64 dependencies: - python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda hash: - md5: 912c0194f898fdb783021fd25f913c31 - sha256: 88ac94c42ade15113397e30d1831dd341399b5262fb5330b9240f915c33cd232 + md5: 74f76d4868dbba5870f2cf1d9b12d8f3 + sha256: d7cb7fbafd767e938db10820c76a9c16d91faf5a081842159cc185787879eb07 category: main optional: false - name: pyjwt @@ -12183,11 +12726,11 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda hash: - md5: 912c0194f898fdb783021fd25f913c31 - sha256: 88ac94c42ade15113397e30d1831dd341399b5262fb5330b9240f915c33cd232 + md5: 74f76d4868dbba5870f2cf1d9b12d8f3 + sha256: d7cb7fbafd767e938db10820c76a9c16d91faf5a081842159cc185787879eb07 category: main optional: false - name: pynacl @@ -12224,7 +12767,7 @@ package: category: main optional: false - name: pyobjc-core - version: '10.1' + version: '10.2' manager: conda platform: osx-arm64 dependencies: @@ -12232,75 +12775,75 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* setuptools: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.1-py39hb167abd_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.2-py39hb167abd_0.conda hash: - md5: 6b916bb5863c3bf00f2769f5f3179f8e - sha256: 4a1537106fb1151db4753f3dd46e919a921c68e87aa6456e204c958e34b71533 + md5: 2316c0a8bfbb9314cd22cf1c5b83ac3b + sha256: cc3d5e2ba7cd678600aa8f10434dea88ff798bc40e9733595fbad387c265410c category: main optional: false - name: pyobjc-framework-cocoa - version: '10.1' + version: '10.2' manager: conda platform: osx-arm64 dependencies: libffi: '>=3.4,<4.0a0' - pyobjc-core: 10.1.* + pyobjc-core: 10.2.* python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.1-py39hb167abd_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.2-py39hb167abd_0.conda hash: - md5: 4501b785c6c3e6aef80b22389bcdc2ab - sha256: 78322238b1e9836571d7bc43cf245b8debd8fc89f962275c4090dd3996f1d340 + md5: cd4fbde6ec3fd55d0fa06ed86882cc0d + sha256: b3f3ff2ec701ee62091451753253fd880201702c4cf43388152da80474280297 category: main optional: false - name: pyopenssl - version: 23.3.0 + version: 24.0.0 manager: conda platform: linux-64 dependencies: - cryptography: '>=41.0.5,<42' + cryptography: '>=41.0.5,<43' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.3.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda hash: - md5: 7819533e674dbbc51468f3228b9b1bb6 - sha256: f7e04c4a49b1593140231d70801e2204e314e26d7141bfbdc8089d04114c0010 + md5: b50aec2c744a5c493c09cce9e2e7533e + sha256: bacd1d38585f447e2809e7621283661da7c97cfa20f545edb0ac5838356ed87b category: main optional: false - name: pyopenssl - version: 23.3.0 + version: 24.0.0 manager: conda platform: osx-arm64 dependencies: + cryptography: '>=41.0.5,<43' python: '>=3.7' - cryptography: '>=41.0.5,<42' - url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.3.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda hash: - md5: 7819533e674dbbc51468f3228b9b1bb6 - sha256: f7e04c4a49b1593140231d70801e2204e314e26d7141bfbdc8089d04114c0010 + md5: b50aec2c744a5c493c09cce9e2e7533e + sha256: bacd1d38585f447e2809e7621283661da7c97cfa20f545edb0ac5838356ed87b category: main optional: false - name: pyparsing - version: 3.1.1 + version: 3.1.2 manager: conda platform: linux-64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda hash: - md5: 176f7d56f0cfe9008bdf1bccd7de02fb - sha256: 4a1332d634b6c2501a973655d68f08c9c42c0bd509c349239127b10572b8354b + md5: b9a4dacf97241704529131a0dfc0494f + sha256: 06c77cb03e5dde2d939b216c99dd2db52ea93a4c7c599f3882f136005c359c7b category: main optional: false - name: pyparsing - version: 3.1.1 + version: 3.1.2 manager: conda platform: osx-arm64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda hash: - md5: 176f7d56f0cfe9008bdf1bccd7de02fb - sha256: 4a1332d634b6c2501a973655d68f08c9c42c0bd509c349239127b10572b8354b + md5: b9a4dacf97241704529131a0dfc0494f + sha256: 06c77cb03e5dde2d939b216c99dd2db52ea93a4c7c599f3882f136005c359c7b category: main optional: false - name: pyproj @@ -12361,7 +12904,7 @@ package: category: main optional: false - name: pyspark - version: 3.5.0 + version: 3.5.1 manager: conda platform: linux-64 dependencies: @@ -12370,26 +12913,26 @@ package: py4j: 0.10.9.7 pyarrow: '>=4.0.0' python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/pyspark-3.5.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pyspark-3.5.1-pyhd8ed1ab_0.conda hash: - md5: 3b21d41045c94f1ec76c16f50f25810d - sha256: daa2b0033aaf53d0c6745090f42d45304afac699de1ca7874b7978578bd2329e + md5: fc1824942077c7ed5f0e24ff869c6f37 + sha256: 6ba987ac0a2c5c6de98b4ce943e72cfbfca1134678c3984959cdb11070997005 category: main optional: false - name: pyspark - version: 3.5.0 + version: 3.5.1 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' numpy: '>=1.15' pandas: '>=1.0.5' - pyarrow: '>=4.0.0' py4j: 0.10.9.7 - url: https://conda.anaconda.org/conda-forge/noarch/pyspark-3.5.0-pyhd8ed1ab_0.conda + pyarrow: '>=4.0.0' + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/pyspark-3.5.1-pyhd8ed1ab_0.conda hash: - md5: 3b21d41045c94f1ec76c16f50f25810d - sha256: daa2b0033aaf53d0c6745090f42d45304afac699de1ca7874b7978578bd2329e + md5: fc1824942077c7ed5f0e24ff869c6f37 + sha256: 6ba987ac0a2c5c6de98b4ce943e72cfbfca1134678c3984959cdb11070997005 category: main optional: false - name: python @@ -12440,29 +12983,29 @@ package: category: main optional: false - name: python-dateutil - version: 2.8.2 + version: 2.9.0 manager: conda platform: linux-64 dependencies: - python: '>=3.6' + python: '>=3.7' six: '>=1.5' - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda hash: - md5: dd999d1cc9f79e67dbb855c8924c7984 - sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da + md5: 2cf4264fffb9e6eff6031c5b6884d61c + sha256: f3ceef02ac164a8d3a080d0d32f8e2ebe10dd29e3a685d240e38b3599e146320 category: main optional: false - name: python-dateutil - version: 2.8.2 + version: 2.9.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' + python: '>=3.7' six: '>=1.5' - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda hash: - md5: dd999d1cc9f79e67dbb855c8924c7984 - sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da + md5: 2cf4264fffb9e6eff6031c5b6884d61c + sha256: f3ceef02ac164a8d3a080d0d32f8e2ebe10dd29e3a685d240e38b3599e146320 category: main optional: false - name: python-fastjsonschema @@ -12490,27 +13033,27 @@ package: category: main optional: false - name: python-flatbuffers - version: 23.5.26 + version: 24.3.7 manager: conda platform: linux-64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-23.5.26-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.7-pyh59ac667_0.conda hash: - md5: 131dd3656f3b731ab852fc66d3c41058 - sha256: 6d2fdc92fce4124e2d32403b71da89e9f3e65393670d74466b4ff4843434392e + md5: 24c1a37849fcd4c74923a38b029b208f + sha256: cacba4db8e9e8500f11fb5e43bd7ef5f0d43ba58f668f74544924e7dba63b7e8 category: main optional: false - name: python-flatbuffers - version: 23.5.26 + version: 24.3.7 manager: conda platform: osx-arm64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-23.5.26-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.7-pyh59ac667_0.conda hash: - md5: 131dd3656f3b731ab852fc66d3c41058 - sha256: 6d2fdc92fce4124e2d32403b71da89e9f3e65393670d74466b4ff4843434392e + md5: 24c1a37849fcd4c74923a38b029b208f + sha256: cacba4db8e9e8500f11fb5e43bd7ef5f0d43ba58f668f74544924e7dba63b7e8 category: main optional: false - name: python-json-logger @@ -12564,17 +13107,17 @@ package: manager: conda platform: osx-arm64 dependencies: - requests: '' - requests-oauthlib: '' - python: '>=3.6' - six: '>=1.9.0' - pyyaml: '>=5.4.1' - python-dateutil: '>=2.5.3' certifi: '>=14.05.14' google-auth: '>=1.0.1' - websocket-client: '>=0.32.0,!=0.40.0,!=0.41.*,!=0.42.*' oauthlib: '>=3.2.2' + python: '>=3.6' + python-dateutil: '>=2.5.3' + pyyaml: '>=5.4.1' + requests: '' + requests-oauthlib: '' + six: '>=1.9.0' urllib3: '>=1.24.2,<2.0' + websocket-client: '>=0.32.0,!=0.40.0,!=0.41.*,!=0.42.*' url: https://conda.anaconda.org/conda-forge/noarch/python-kubernetes-29.0.0-pyhd8ed1ab_0.conda hash: md5: a94f4c6a1cff1e9837a8b62ae35c673f @@ -12582,29 +13125,53 @@ package: category: main optional: false - name: python-slugify - version: 8.0.3 + version: 8.0.4 manager: conda platform: linux-64 dependencies: python: '>=3.7' text-unidecode: '>=1.3' - url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_0.conda hash: - md5: adabcd5e942933ed61ea3e6f0cc83a98 - sha256: 90ac323449803b14aaffbab82e48b0378b7527551233a822d930505b5fb973ff + md5: 4b11845622b3c3178c0e989235b53975 + sha256: a1270bfd4f1d648766c8f95403f208e50d34af94761bc553a960102c6bff9fa0 category: main optional: false - name: python-slugify - version: 8.0.3 + version: 8.0.4 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' text-unidecode: '>=1.3' - url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_0.conda + hash: + md5: 4b11845622b3c3178c0e989235b53975 + sha256: a1270bfd4f1d648766c8f95403f208e50d34af94761bc553a960102c6bff9fa0 + category: main + optional: false +- name: python-tzdata + version: '2024.1' + manager: conda + platform: linux-64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + hash: + md5: 98206ea9954216ee7540f0c773f2104d + sha256: 9da9a849d53705dee450b83507df1ca8ffea5f83bd21a215202221f1c492f8ad + category: main + optional: false +- name: python-tzdata + version: '2024.1' + manager: conda + platform: osx-arm64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda hash: - md5: adabcd5e942933ed61ea3e6f0cc83a98 - sha256: 90ac323449803b14aaffbab82e48b0378b7527551233a822d930505b5fb973ff + md5: 98206ea9954216ee7540f0c773f2104d + sha256: 9da9a849d53705dee450b83507df1ca8ffea5f83bd21a215202221f1c492f8ad category: main optional: false - name: python-utils @@ -12713,18 +13280,25 @@ package: manager: conda platform: linux-64 dependencies: + __cuda: '' __glibc: '>=2.17,<3.0.a0' _openmp_mutex: '>=4.5' + cudatoolkit: '>=11.8,<12' + cudnn: '>=8.8.0.121,<9.0a0' filelock: '' fsspec: '' jinja2: '' libcblas: '>=3.9.0,<4.0a0' libgcc-ng: '>=12' + libmagma: '>=2.7.2,<2.7.3.0a0' + libmagma_sparse: '>=2.7.2,<2.7.3.0a0' libprotobuf: '>=4.24.4,<4.24.5.0a0' libstdcxx-ng: '>=12' libtorch: 2.1.2.* libuv: '>=1.46.0,<2.0a0' + magma: '>=2.7.2,<2.7.3.0a0' mkl: '>=2023.2.0,<2024.0a0' + nccl: '>=2.19.4.1,<3.0a0' networkx: '' numpy: '>=1.22.4,<2.0a0' python: '>=3.9,<3.10.0a0' @@ -12732,25 +13306,25 @@ package: sleef: '>=3.5.1,<4.0a0' sympy: '' typing_extensions: '' - url: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.1.2-cpu_mkl_py39h9c325db_100.conda + url: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.1.2-cuda118_py39hcb596ef_300.conda hash: - md5: bb34e51d3542a1b4b6afc04f28585055 - sha256: c363db53861a5ffe1613e57a8c3624f447fa203dde66f52b29ddb9859fb2e8bc + md5: d7355cce6a80513f7e9980e5e2e836be + sha256: 4f84efcd67159d4117b9519da2542da4f71c21e2abe2dae3368a54e365df6d98 category: main optional: false - name: pytorch - version: 2.1.2 + version: 2.1.0 manager: conda platform: osx-arm64 dependencies: + __osx: '>=10.9' filelock: '' fsspec: '' jinja2: '' libcblas: '>=3.9.0,<4.0a0' - libcxx: '>=14' + libcxx: '>=15.0.7' liblapack: '>=3.9.0,<4.0a0' libprotobuf: '>=4.24.4,<4.24.5.0a0' - libtorch: 2.1.2.* libuv: '>=1.46.0,<2.0a0' llvm-openmp: '>=16.0.6' networkx: '' @@ -12761,10 +13335,10 @@ package: sleef: '>=3.5.1,<4.0a0' sympy: '' typing_extensions: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.1.2-cpu_generic_py39h2c040b9_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.1.0-cpu_generic_py39h4a6bf10_0.conda hash: - md5: d80926b6c929fdd6a785e77a8a79397d - sha256: 053193c4e2cd0e4adbb4fe2f6faf8090c6d01a95e32553d1befe5c707bc67d7a + md5: 1b1de3b4af7cc84bbe1e4ebfdf8939ef + sha256: 9b69c7af2d17a2f470656a0de2e8d821c99483e1364323a866988c37215908ba category: main optional: false - name: pytz @@ -12809,8 +13383,8 @@ package: manager: conda platform: osx-arm64 dependencies: - six: '' python: '>=2.7' + six: '' url: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2 hash: md5: caabbeaa83928d0c3e3949261daa18eb @@ -12930,14 +13504,14 @@ package: manager: conda platform: osx-arm64 dependencies: + ipykernel: '>=4.1' + jupyter_client: '>=4.1' + jupyter_core: '' packaging: '' pygments: '' - traitlets: '' - jupyter_core: '' python: '>=3.8' - ipykernel: '>=4.1' - jupyter_client: '>=4.1' qtpy: '>=2.4.0' + traitlets: '' url: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda hash: md5: 5528a3eda283b421055c89bface19a1c @@ -13007,34 +13581,34 @@ package: libgcc-ng: '>=12' libnl: '>=3.9.0,<4.0a0' libstdcxx-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-50.0-hd3aeb46_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-50.0-hd3aeb46_1.conda hash: - md5: 4594b391274e38f07c668acb45285a1f - sha256: 7cc75473895aa7d4fa1824ef94bd451768fa4a36a5046b3281ed2b1a6787853d + md5: f462219598fcf46c0cdfb985c3482b4f + sha256: 85e38508eb4921e53cf1cb97435f9c9408ea2ddc582c6588ec50f3f3ec3abdc0 category: main optional: false - name: re2 - version: 2023.06.02 + version: 2023.09.01 manager: conda platform: linux-64 dependencies: - libre2-11: 2023.06.02 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.06.02-h2873b5e_0.conda + libre2-11: 2023.09.01 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_1.conda hash: - md5: bb2d5e593ef13fe4aff0bc9440f945ae - sha256: 3e0bfb04b6d43312d711c5b49dbc3c7660b2e6e681ed504b1b322794462a1bcd + md5: 30c0f66cbc5927a12662acf94067e780 + sha256: b8f9e366f02c559587327f0cd7fa45c5c399b4025f2c9e1aa292bb7cbe1482c0 category: main optional: false - name: re2 - version: 2023.06.02 + version: 2023.09.01 manager: conda platform: osx-arm64 dependencies: - libre2-11: 2023.06.02 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.06.02-h6135d0a_0.conda + libre2-11: 2023.09.01 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_1.conda hash: - md5: 8f23674174b155300696a2be8b5c1407 - sha256: 963847258a82d9647311c5eb8829a49ac2161df12a304d5d6e61f788f0563442 + md5: cc836947935a4c7b39ec56a46b7565a0 + sha256: 19bbcbfc115b2cfc7e8d1c88975ce1d7b4d602baa917be405ee89d66514ae57c category: main optional: false - name: readline @@ -13082,9 +13656,9 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3' - docutils: '>=0.11' commonmark: '>=0.8.1' + docutils: '>=0.11' + python: '>=3' sphinx: '>=1.3.1' url: https://conda.anaconda.org/conda-forge/noarch/recommonmark-0.7.1-pyhd8ed1ab_0.tar.bz2 hash: @@ -13093,31 +13667,31 @@ package: category: main optional: false - name: referencing - version: 0.33.0 + version: 0.34.0 manager: conda platform: linux-64 dependencies: attrs: '>=22.2.0' python: '>=3.8' rpds-py: '>=0.7.0' - url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.33.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.34.0-pyhd8ed1ab_0.conda hash: - md5: bc415a1c6cf049166215d6b596e0fcbe - sha256: 5707eb9ee2c7cfcc56a5223b24ab3133ff61aaa796931f3b22068e0a43ea6ecf + md5: e4492c22e314be5c75db3469e3bbf3d9 + sha256: 2e631e9e1d49280770573f7acc7441b70181b2dc21948bb1be15eaae80550672 category: main optional: false - name: referencing - version: 0.33.0 + version: 0.34.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' attrs: '>=22.2.0' + python: '>=3.8' rpds-py: '>=0.7.0' - url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.33.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.34.0-pyhd8ed1ab_0.conda hash: - md5: bc415a1c6cf049166215d6b596e0fcbe - sha256: 5707eb9ee2c7cfcc56a5223b24ab3133ff61aaa796931f3b22068e0a43ea6ecf + md5: e4492c22e314be5c75db3469e3bbf3d9 + sha256: 2e631e9e1d49280770573f7acc7441b70181b2dc21948bb1be15eaae80550672 category: main optional: false - name: requests @@ -13141,10 +13715,10 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' - idna: '>=2.5,<4' certifi: '>=2017.4.17' charset-normalizer: '>=2,<4' + idna: '>=2.5,<4' + python: '>=3.7' urllib3: '>=1.21.1,<3' url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda hash: @@ -13153,59 +13727,31 @@ package: category: main optional: false - name: requests-oauthlib - version: 1.3.1 + version: 1.4.0 manager: conda platform: linux-64 dependencies: oauthlib: '>=3.0.0' python: '>=3.4' requests: '>=2.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.3.1-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda hash: - md5: 61b279f051eef9c89d58f4d813e75e04 - sha256: 889e3c1b84467b64046776db95dc4c5ea4dad5afaa5ec18ad811bd95c63286b0 + md5: a55b220de8970208f583e38639cfbecc + sha256: 909ec1510bbb6fad9276534352025f428050a4deeea86e68d61c8c580938ac82 category: main optional: false - name: requests-oauthlib - version: 1.3.1 + version: 1.4.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.4' - requests: '>=2.0.0' oauthlib: '>=3.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.3.1-pyhd8ed1ab_0.tar.bz2 - hash: - md5: 61b279f051eef9c89d58f4d813e75e04 - sha256: 889e3c1b84467b64046776db95dc4c5ea4dad5afaa5ec18ad811bd95c63286b0 - category: main - optional: false -- name: retry - version: 0.9.2 - manager: conda - platform: linux-64 - dependencies: - decorator: '>=3.4.2' - py: '>=1.4.26,<2.0.0' - python: '' - url: https://conda.anaconda.org/conda-forge/noarch/retry-0.9.2-py_0.tar.bz2 - hash: - md5: b83b7289405e8aab02d1a72bc14506f8 - sha256: 9066f5507fb8d143a01fe1462bf416680edbd3e1dd0efc9ce4124cd8b74acb15 - category: main - optional: false -- name: retry - version: 0.9.2 - manager: conda - platform: osx-arm64 - dependencies: - python: '' - decorator: '>=3.4.2' - py: '>=1.4.26,<2.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/retry-0.9.2-py_0.tar.bz2 + python: '>=3.4' + requests: '>=2.0.0' + url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda hash: - md5: b83b7289405e8aab02d1a72bc14506f8 - sha256: 9066f5507fb8d143a01fe1462bf416680edbd3e1dd0efc9ce4124cd8b74acb15 + md5: a55b220de8970208f583e38639cfbecc + sha256: 909ec1510bbb6fad9276534352025f428050a4deeea86e68d61c8c580938ac82 category: main optional: false - name: rfc3339-validator @@ -13226,8 +13772,8 @@ package: manager: conda platform: osx-arm64 dependencies: - six: '' python: '>=3.5' + six: '' url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 hash: md5: fed45fc5ea0813240707998abe49f520 @@ -13259,7 +13805,7 @@ package: category: main optional: false - name: rich - version: 13.7.0 + version: 13.7.1 manager: conda platform: linux-64 dependencies: @@ -13267,80 +13813,80 @@ package: pygments: '>=2.13.0,<3.0.0' python: '>=3.7.0' typing_extensions: '>=4.0.0,<5.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda hash: - md5: d7a11d4f3024b2f4a6e0ae7377dd61e9 - sha256: 4bb25bf1f5664772b2c4c2e3878aa6e7dc2695f97e3da4ee8e47c51e179913bb + md5: ba445bf767ae6f0d959ff2b40c20912b + sha256: 2b26d58aa59e46f933c3126367348651b0dab6e0bf88014e857415bb184a4667 category: main optional: false - name: rich - version: 13.7.0 + version: 13.7.1 manager: conda platform: osx-arm64 dependencies: + markdown-it-py: '>=2.2.0' + pygments: '>=2.13.0,<3.0.0' python: '>=3.7.0' typing_extensions: '>=4.0.0,<5.0.0' - pygments: '>=2.13.0,<3.0.0' - markdown-it-py: '>=2.2.0' - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda hash: - md5: d7a11d4f3024b2f4a6e0ae7377dd61e9 - sha256: 4bb25bf1f5664772b2c4c2e3878aa6e7dc2695f97e3da4ee8e47c51e179913bb + md5: ba445bf767ae6f0d959ff2b40c20912b + sha256: 2b26d58aa59e46f933c3126367348651b0dab6e0bf88014e857415bb184a4667 category: main optional: false - name: rich-click - version: 1.7.3 + version: 1.7.4 manager: conda platform: linux-64 dependencies: click: '>=7,<9' python: '>=3.7' rich: '>=10' - url: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.7.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.7.4-pyhd8ed1ab_0.conda hash: - md5: dc858795a3dcc70135ae2c61b75a251a - sha256: d6265dbdbc2c1bda6dc96af0edc482a75e03e9f531cd8f6ff77619becdf02378 + md5: a3e6556c7cfce33ba7dae23fb17d3303 + sha256: 91e0b041cf663d4a8e27f1cf572d265d90fdf3a58fa6513bc41292572ca5462f category: main optional: false - name: rich-click - version: 1.7.3 + version: 1.7.4 manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' click: '>=7,<9' + python: '>=3.7' rich: '>=10' - url: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.7.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.7.4-pyhd8ed1ab_0.conda hash: - md5: dc858795a3dcc70135ae2c61b75a251a - sha256: d6265dbdbc2c1bda6dc96af0edc482a75e03e9f531cd8f6ff77619becdf02378 + md5: a3e6556c7cfce33ba7dae23fb17d3303 + sha256: 91e0b041cf663d4a8e27f1cf572d265d90fdf3a58fa6513bc41292572ca5462f category: main optional: false - name: rpds-py - version: 0.17.1 + version: 0.18.0 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.17.1-py39h9fdd4d6_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.18.0-py39h9fdd4d6_0.conda hash: - md5: 601e09c9de429baaabce5f1283c51fdf - sha256: 0ec45efa1c5599a9779ac34cf5bcb7602a2294f79b8959a7b15b92b4275979ee + md5: ca1e1ff2be5c41142e412c83b88960e4 + sha256: 1bc9bdf6f4a14f38f8decf967fc40bfcd1ab069f012ef0f109163d1ef7b7c633 category: main optional: false - name: rpds-py - version: 0.17.1 + version: 0.18.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.17.1-py39h8fec3ad_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.18.0-py39h9a407ce_0.conda hash: - md5: 07873cbc88530a1210d61027ec3d4801 - sha256: 3ed6823681d74b465804d7db3aae81630a4db3c919297c6634aac2939eaf9d6d + md5: a247149173eb156a430bea00738d91f1 + sha256: d3b2f8ca759237fea4acde58d94871970795e8617752a4a0c373717282000926 category: main optional: false - name: rsa @@ -13361,8 +13907,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' pyasn1: '>=0.1.3' + python: '>=3.6' url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 hash: md5: 03bf410858b2cefc267316408a77c436 @@ -13429,30 +13975,30 @@ package: category: main optional: false - name: ruamel.yaml.clib - version: 0.2.7 + version: 0.2.8 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py39hd1e30aa_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py39hd1e30aa_0.conda hash: - md5: 743d996a1af8502f27770fadfd418434 - sha256: 06b089d59ffebef9c9171a8a3480adcb6e7f112caef9f8b87591207427cb1cf1 + md5: b1961e70cfe8e1eac243faf933d1813f + sha256: 32b7b4f13493eeff0d18de85d58d7b8c2b04234ea737b8769871067189c70d69 category: main optional: false - name: ruamel.yaml.clib - version: 0.2.7 + version: 0.2.8 manager: conda platform: osx-arm64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.7-py39h0f82c59_2.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py39h17cfd9d_0.conda hash: - md5: f3e2f7730c751b6ce8cf7995d1f47ebd - sha256: 3cd6dbe76582646d1366f20e0f02dde700969dbedf65f6f1434ce76ba1ec924e + md5: b4b13ca14d2848049adc82fed7c89e64 + sha256: d128e55fb573217a9ef6189e62172b2b497d7163d7b3097cf6ff0c6bf29a6a1a category: main optional: false - name: s2n @@ -13469,37 +14015,37 @@ package: category: main optional: false - name: s3fs - version: 0.6.0 + version: 2024.2.0 manager: conda platform: linux-64 dependencies: - aiobotocore: '' - botocore: '' - fsspec: '>=0.9.0' - python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/s3fs-0.6.0-pyhd8ed1ab_0.tar.bz2 + aiobotocore: '>=2.5.4,<3.0.0' + aiohttp: '' + fsspec: 2024.2.0 + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/s3fs-2024.2.0-pyhd8ed1ab_0.conda hash: - md5: f20c8f33a3aa1256d88dd4b5bc67530c - sha256: 36d2b377c87acb3f5958e00d6ef5acd36f89a903fc54ba98084a2fccb7e2e051 + md5: a0d35978a4caf8b78957dac03e2bc039 + sha256: b67e93d4584b26e7cb6f98e7415daf72d531ca854fdc0d0fe2d5e281fad8ec28 category: main optional: false - name: s3fs - version: 0.6.0 + version: 2024.2.0 manager: conda platform: osx-arm64 dependencies: - botocore: '' - aiobotocore: '' - python: '>=3.6' - fsspec: '>=0.9.0' - url: https://conda.anaconda.org/conda-forge/noarch/s3fs-0.6.0-pyhd8ed1ab_0.tar.bz2 + aiobotocore: '>=2.5.4,<3.0.0' + aiohttp: '' + fsspec: 2024.2.0 + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/s3fs-2024.2.0-pyhd8ed1ab_0.conda hash: - md5: f20c8f33a3aa1256d88dd4b5bc67530c - sha256: 36d2b377c87acb3f5958e00d6ef5acd36f89a903fc54ba98084a2fccb7e2e051 + md5: a0d35978a4caf8b78957dac03e2bc039 + sha256: b67e93d4584b26e7cb6f98e7415daf72d531ca854fdc0d0fe2d5e281fad8ec28 category: main optional: false - name: scikit-learn - version: 1.4.0 + version: 1.4.1.post1 manager: conda platform: linux-64 dependencies: @@ -13512,29 +14058,29 @@ package: python_abi: 3.9.* scipy: '' threadpoolctl: '>=2.0.0' - url: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.4.0-py39ha22ef79_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.4.1.post1-py39ha22ef79_0.conda hash: - md5: cb8da9a55b56e7fda3553c919f89431b - sha256: 29080f3b936839256acbd3a686e912f2d00e97c84e79357e26ad7a7cfb67a4e9 + md5: 34570aedcdc0281c66ce0ed300844111 + sha256: 72fe5a1a19a4ed66a8e0aeceee256e58c7a7b3dd9a97139c6e7b2ba73e0c9f63 category: main optional: false - name: scikit-learn - version: 1.4.0 + version: 1.4.1.post1 manager: conda platform: osx-arm64 dependencies: joblib: '>=1.2.0' - libcxx: '>=15' + libcxx: '>=16' llvm-openmp: '>=17.0.6' numpy: '>=1.22.4,<2.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* scipy: '' threadpoolctl: '>=2.0.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.4.0-py39h6dd658b_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.4.1.post1-py39h6dd658b_0.conda hash: - md5: 177d0e427f7fe3e8fd0d8aa5c9a32de4 - sha256: 0b18ab4449e9bb1b18c84becdf6dbb4982fedd502e683dfe49299fde2c20e701 + md5: c69932cee8782d57e5b1287a4a1fcae0 + sha256: ec0e745737bf152dd4a4cce7031683f42f15be3295ab3874185f3bdf07e1d475 category: main optional: false - name: scipy @@ -13622,32 +14168,31 @@ package: category: main optional: false - name: setuptools - version: 69.0.3 + version: 69.2.0 manager: conda platform: linux-64 dependencies: - python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-69.0.3-pyhd8ed1ab_0.conda + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-69.2.0-pyhd8ed1ab_0.conda hash: - md5: 40695fdfd15a92121ed2922900d0308b - sha256: 0fe2a0473ad03dac6c7f5c42ef36a8e90673c88a0350dfefdea4b08d43803db2 + md5: da214ecd521a720a9d521c68047682dc + sha256: 78a75c75a5dacda6de5f4056c9c990141bdaf4f64245673a590594d00bc63713 category: main optional: false - name: setuptools - version: 59.8.0 + version: 69.2.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/setuptools-59.8.0-py39h2804cbe_1.tar.bz2 + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-69.2.0-pyhd8ed1ab_0.conda hash: - md5: 27c3effc9a6ae935378b603157461239 - sha256: 7c02e55039e0514184cb4debd2fadedf5223bf0ac9a5eae2ff49bf6e1e314285 + md5: da214ecd521a720a9d521c68047682dc + sha256: 78a75c75a5dacda6de5f4056c9c990141bdaf4f64245673a590594d00bc63713 category: main optional: false - name: shapely - version: 2.0.2 + version: 2.0.3 manager: conda platform: linux-64 dependencies: @@ -13656,14 +14201,14 @@ package: numpy: '>=1.22.4,<2.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.2-py39h6404dd3_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.3-py39h6404dd3_0.conda hash: - md5: 05623249055d99c51cde021b525611db - sha256: 3225b43b4be766d2bb1335b7942a76731f3bb69485f8bc49a76699e73336cc73 + md5: 1520f039123452cd2de847068449a618 + sha256: 43af6c106ff55be27be3be99b7f313fa3becee9aeeb826e31257c1159416f53a category: main optional: false - name: shapely - version: 2.0.2 + version: 2.0.3 manager: conda platform: osx-arm64 dependencies: @@ -13671,10 +14216,10 @@ package: numpy: '>=1.22.4,<2.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.0.2-py39ha70ab96_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.0.3-py39ha70ab96_0.conda hash: - md5: 9b71de8f21059eab1ec16941ff4b1780 - sha256: 6e3f7c0cc65326f0ebdf9f303e1f7151f2042ba0a2a224e45bda391a816aa15a + md5: 6f1f893210f9daa0fe5e0634c0e0d2b6 + sha256: 2bd385c02e2ef0a9a15bf3a1e79ab40119a441d03ffa72339ac2f5c73c583eed category: main optional: false - name: six @@ -13725,14 +14270,14 @@ package: manager: conda platform: osx-arm64 dependencies: + numpy: '>=1.15' + onnx: '>=1.2.1' + onnxconverter-common: '>=1.7.0' packaging: '' protobuf: '' python: '>=3.6' - numpy: '>=1.15' - scipy: '>=1.0' scikit-learn: '>=0.19' - onnxconverter-common: '>=1.7.0' - onnx: '>=1.2.1' + scipy: '>=1.0' url: https://conda.anaconda.org/conda-forge/noarch/skl2onnx-1.16.0-pyhd8ed1ab_0.conda hash: md5: 52a160919ba780e1971e6db6a9f91e81 @@ -13814,27 +14359,27 @@ package: category: main optional: false - name: sniffio - version: 1.3.0 + version: 1.3.1 manager: conda platform: linux-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda hash: - md5: dd6cbc539e74cb1f430efbd4575b9303 - sha256: a3fd30754c20ddb28b777db38345ea00d958f46701f0decd6291a81c0f4eee78 + md5: 490730480d76cf9c8f8f2849719c6e2b + sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b category: main optional: false - name: sniffio - version: 1.3.0 + version: 1.3.1 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda hash: - md5: dd6cbc539e74cb1f430efbd4575b9303 - sha256: a3fd30754c20ddb28b777db38345ea00d958f46701f0decd6291a81c0f4eee78 + md5: 490730480d76cf9c8f8f2849719c6e2b + sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b category: main optional: false - name: snowballstemmer @@ -13862,7 +14407,7 @@ package: category: main optional: false - name: snowflake-connector-python - version: 3.7.0 + version: 3.7.1 manager: conda platform: linux-64 dependencies: @@ -13870,16 +14415,16 @@ package: certifi: '>=2017.4.17' cffi: '>=1.9,<2.0.0' charset-normalizer: '>=2,<4' - cryptography: '>=3.1.0,<42.0.0' + cryptography: '>=3.1.0,<43.0.0' filelock: '>=3.5,<4' idna: '>=2.5,<4' libgcc-ng: '>=12' libstdcxx-ng: '>=12' numpy: '>=1.22.4,<2.0a0' packaging: '' - platformdirs: '>=2.6.0,<3.9.0' + platformdirs: '>=2.6.0,<4.0.0' pyjwt: <3.0.0 - pyopenssl: '>=16.2.0,<24.0.0' + pyopenssl: '>=16.2.0,<25.0.0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* pytz: '' @@ -13888,14 +14433,14 @@ package: tomlkit: '' typing_extensions: '>=4.3,<5' urllib3: '>=1.21.1,<2' - url: https://conda.anaconda.org/conda-forge/linux-64/snowflake-connector-python-3.7.0-py39hddac248_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/snowflake-connector-python-3.7.1-py39hddac248_2.conda hash: - md5: 2b1453ff0fe9466955e24ab1ce61cb00 - sha256: 1a93bf171964caaacbb388e7047e8f91568f5e7c4d3974e0473c3f4b76a4470f + md5: 4afb71844868347f9a1654f777b11fb2 + sha256: 58203509b4118463bb7e29ad29b96e2908e6f57efd44e38b32e57049eab0ecfc category: main optional: false - name: snowflake-connector-python - version: 3.7.0 + version: 3.7.1 manager: conda platform: osx-arm64 dependencies: @@ -13903,15 +14448,15 @@ package: certifi: '>=2017.4.17' cffi: '>=1.9,<2.0.0' charset-normalizer: '>=2,<4' - cryptography: '>=3.1.0,<42.0.0' + cryptography: '>=3.1.0,<43.0.0' filelock: '>=3.5,<4' idna: '>=2.5,<4' - libcxx: '>=15' + libcxx: '>=16' numpy: '>=1.22.4,<2.0a0' packaging: '' - platformdirs: '>=2.6.0,<3.9.0' + platformdirs: '>=2.6.0,<4.0.0' pyjwt: <3.0.0 - pyopenssl: '>=16.2.0,<24.0.0' + pyopenssl: '>=16.2.0,<25.0.0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* pytz: '' @@ -13920,10 +14465,10 @@ package: tomlkit: '' typing_extensions: '>=4.3,<5' urllib3: '>=1.21.1,<2' - url: https://conda.anaconda.org/conda-forge/osx-arm64/snowflake-connector-python-3.7.0-py39h47e51b9_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/snowflake-connector-python-3.7.1-py39h47e51b9_2.conda hash: - md5: d21d3818fff5abe2a1b910251389e8d0 - sha256: 849966206e3586363edac6bab6088a6c33d8b27981011e629a441d9768be1541 + md5: 6fc6d135b3110f0714e65a29caa84e1d + sha256: dd9426602bf20f0ac28c92ec3035ed6b0011194fb3a149f03acb37934bc35575 category: main optional: false - name: sortedcontainers @@ -14008,24 +14553,24 @@ package: manager: conda platform: osx-arm64 dependencies: - packaging: '' - sphinxcontrib-jsmath: '' - sphinxcontrib-applehelp: '' - sphinxcontrib-devhelp: '' - sphinxcontrib-qthelp: '' + alabaster: '>=0.7,<0.8' + babel: '>=1.3' + colorama: '>=0.3.5' + docutils: '>=0.14,<0.18' imagesize: '' - python: '>=3.6' importlib-metadata: '>=4.4' + jinja2: '>=2.3' + packaging: '' pygments: '>=2.0' - alabaster: '>=0.7,<0.8' + python: '>=3.6' requests: '>=2.5.0' - jinja2: '>=2.3' snowballstemmer: '>=1.1' - babel: '>=1.3' + sphinxcontrib-applehelp: '' + sphinxcontrib-devhelp: '' sphinxcontrib-htmlhelp: '>=2.0.0' + sphinxcontrib-jsmath: '' + sphinxcontrib-qthelp: '' sphinxcontrib-serializinghtml: '>=1.1.5' - colorama: '>=0.3.5' - docutils: '>=0.14,<0.18' url: https://conda.anaconda.org/conda-forge/noarch/sphinx-4.5.0-pyh6c4a22f_0.tar.bz2 hash: md5: 46b38d88c4270ff9ba78a89c83c66345 @@ -14056,14 +14601,14 @@ package: manager: conda platform: osx-arm64 dependencies: - pyyaml: '' + astroid: '>=2.7' jinja2: '' - unidecode: '' - sphinxcontrib-dotnetdomain: '' - sphinxcontrib-golangdomain: '' python: '>=3.6' + pyyaml: '' sphinx: '>=3.0' - astroid: '>=2.7' + sphinxcontrib-dotnetdomain: '' + sphinxcontrib-golangdomain: '' + unidecode: '' url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autoapi-2.1.0-pyhd8ed1ab_0.conda hash: md5: 6cb2b182390f837ce98737e92b9461f7 @@ -14115,8 +14660,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.6' click: '>=6.0' + python: '>=3.6' sphinx: '>=2.0' url: https://conda.anaconda.org/conda-forge/noarch/sphinx-click-5.1.0-pyhd8ed1ab_0.conda hash: @@ -14252,8 +14797,8 @@ package: platform: osx-arm64 dependencies: pygments: '' - sphinx: '' python: '>=3.0' + sphinx: '' url: https://conda.anaconda.org/conda-forge/noarch/sphinx-prompt-1.4.0-pyhd8ed1ab_0.tar.bz2 hash: md5: 88ee91e8679603f2a5bd036d52919cc2 @@ -14280,10 +14825,10 @@ package: manager: conda platform: osx-arm64 dependencies: + docutils: '>=0.16.0' pygments: '' python: '>=3.6' sphinx: '>=2,<5' - docutils: '>=0.16.0' url: https://conda.anaconda.org/conda-forge/noarch/sphinx-tabs-3.4.1-pyhd8ed1ab_0.tar.bz2 hash: md5: b04565a0bfac26170025770fe3256dcd @@ -14511,9 +15056,9 @@ package: manager: conda platform: osx-arm64 dependencies: - sphinx: '' docutils: '' python: '>=3.7' + sphinx: '' url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-0.9.2-pyhd8ed1ab_0.conda hash: md5: 54a6a75e5b3989f1d925d8e5674bbbcb @@ -14587,8 +15132,8 @@ package: manager: conda platform: osx-arm64 dependencies: - requests: '' python: '>=3.6' + requests: '' sphinx: '>=0.6' url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-youtube-1.2.0-pyhd8ed1ab_0.conda hash: @@ -14597,7 +15142,7 @@ package: category: main optional: false - name: sqlalchemy - version: 2.0.25 + version: 2.0.28 manager: conda platform: linux-64 dependencies: @@ -14606,14 +15151,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* typing-extensions: '>=4.6.0' - url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.25-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.28-py39hd1e30aa_0.conda hash: - md5: 36930c67bcfd8c1f1cf6cb5b9622e0fe - sha256: c4be30fbf84bc00f1d3f19eb03a2a105fa05183095d0f48fbc8a808e525c65b8 + md5: 0b3b73db2d2931fa07a98e0ba1a6764b + sha256: 5f2074a4750c14134f0c35a6c7f0a731534f78ecc3dd578dc4f362ea8dc62075 category: main optional: false - name: sqlalchemy - version: 2.0.25 + version: 2.0.28 manager: conda platform: osx-arm64 dependencies: @@ -14621,41 +15166,41 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* typing-extensions: '>=4.6.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.25-py39h17cfd9d_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.28-py39h17cfd9d_0.conda hash: - md5: a11c96827d0355cca921e77ad1973348 - sha256: 8c9f02958249dbe89433b93a921ec121821c970f1a53b63982d2c6359696d7e0 + md5: 1b66bccb5e13f902e86255d5ce8c8e8e + sha256: 8953b2bba824a6feaad98840aaa57a3c889f4621883bd67c41595ece7b5a599e category: main optional: false - name: sqlite - version: 3.44.2 + version: 3.45.2 manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' - libsqlite: 3.44.2 + libsqlite: 3.45.2 libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' readline: '>=8.2,<9.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.2-h2c6b66d_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.45.2-h2c6b66d_0.conda hash: - md5: 4f2892c672829693fd978d065db4e8be - sha256: bae479520fe770fe11996b4c240923ed097f851fbd2401d55540e551c9dbbef7 + md5: 1423efca06ed343c1da0fc429bae0779 + sha256: 22d2692c82b73480c9adc80472bfb241262586edaf1dac1a7504434e47185d3c category: main optional: false - name: sqlite - version: 3.44.2 + version: 3.45.2 manager: conda platform: osx-arm64 dependencies: - libsqlite: 3.44.2 + libsqlite: 3.45.2 libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' readline: '>=8.2,<9.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.44.2-hf2abe2d_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.45.2-hf2abe2d_0.conda hash: - md5: c98aa8eb8f02260610c5bb981027ba5d - sha256: b034405d93e7153f777d52c18fe26120356c568e4ca85626712d633d939a8923 + md5: 67af40712ec3989036429398b69ec206 + sha256: 43f30a40494bd631e7a19fa258115c09a3fed540e5398ba3a8da66f3e48942ca category: main optional: false - name: sqlparse @@ -14781,9 +15326,9 @@ package: platform: osx-arm64 dependencies: __unix: '' - python: '*' - mpmath: '>=0.19' gmpy2: '>=2.0.8' + mpmath: '>=0.19' + python: '>=3.8' url: https://conda.anaconda.org/conda-forge/noarch/sympy-1.12-pypyh9d50eac_103.conda hash: md5: 2f7d6347d7acf6edf1ac7f2189f44c8f @@ -14877,7 +15422,7 @@ package: category: main optional: false - name: tensorboard - version: 2.15.1 + version: 2.15.2 manager: conda platform: linux-64 dependencies: @@ -14894,34 +15439,34 @@ package: six: '>=1.9' tensorboard-data-server: '>=0.7.0,<0.8.0' werkzeug: '>=1.0.1' - url: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.2-pyhd8ed1ab_0.conda hash: - md5: 0bba0cc8e5247bca0411ee63e9b0bb2f - sha256: 652c97025f21fdb6473ccaa5b2c53ca8ae816d550a596a4544566cfcf5273591 + md5: be92712a3adb1f9371551a72c5881cd9 + sha256: 37c9ecd571c227f3c062d8d38c9e0b6c6454cb4533f498be5cf991a9cd370b99 category: main optional: false - name: tensorboard - version: 2.15.1 + version: 2.15.2 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' - six: '>=1.9' - numpy: '>=1.12.0' - setuptools: '>=41.0.0' - markdown: '>=2.6.8' absl-py: '>=0.4' - requests: '>=2.21.0,<3' - werkzeug: '>=1.0.1' google-auth: '>=1.6.3,<3' - protobuf: '>=3.19.6' + google-auth-oauthlib: '>=0.5,<2' grpcio: '>=1.48.2' + markdown: '>=2.6.8' + numpy: '>=1.12.0' + protobuf: '>=3.19.6' + python: '>=3.8' + requests: '>=2.21.0,<3' + setuptools: '>=41.0.0' + six: '>=1.9' tensorboard-data-server: '>=0.7.0,<0.8.0' - google-auth-oauthlib: '>=0.5,<2' - url: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.1-pyhd8ed1ab_0.conda + werkzeug: '>=1.0.1' + url: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.2-pyhd8ed1ab_0.conda hash: - md5: 0bba0cc8e5247bca0411ee63e9b0bb2f - sha256: 652c97025f21fdb6473ccaa5b2c53ca8ae816d550a596a4544566cfcf5273591 + md5: be92712a3adb1f9371551a72c5881cd9 + sha256: 37c9ecd571c227f3c062d8d38c9e0b6c6454cb4533f498be5cf991a9cd370b99 category: main optional: false - name: tensorboard-data-server @@ -15132,7 +15677,7 @@ package: category: main optional: false - name: terminado - version: 0.18.0 + version: 0.18.1 manager: conda platform: linux-64 dependencies: @@ -15140,14 +15685,14 @@ package: ptyprocess: '' python: '>=3.8' tornado: '>=6.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh0d859eb_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda hash: - md5: e463f348b8b0eb62c9f7c6fbc780286c - sha256: e90139ef15ea9d75a69cd6b6302c29ed5b01c03ddfa717b71acb32b60af74269 + md5: efba281bbdae5f6b0a1d53c6d4a97c93 + sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c category: main optional: false - name: terminado - version: 0.18.0 + version: 0.18.1 manager: conda platform: osx-arm64 dependencies: @@ -15155,10 +15700,10 @@ package: ptyprocess: '' python: '>=3.8' tornado: '>=6.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh31c8845_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda hash: - md5: 14759b57f5b9d97033e633fff0a2d27e - sha256: 8e8741c688ade9be8f86c0b209780c7fbe4a97e4265311ca9d8dda5fcedc6a28 + md5: 00b54981b923f5aefcd5e8547de056d5 + sha256: 4daae56fc8da17784578fbdd064f17e3b3076b394730a14119e571707568dc8a category: main optional: false - name: text-unidecode @@ -15232,13 +15777,13 @@ package: manager: conda platform: osx-arm64 dependencies: + numpy: '>=1.14.1' + onnx: '>=1.4.1' + python: '>=3.8' + python-flatbuffers: '>=1.12' requests: '' six: '' - python: '>=3.8' - numpy: '>=1.14.1' tensorflow: '>=2.6' - python-flatbuffers: '>=1.12' - onnx: '>=1.4.1' url: https://conda.anaconda.org/conda-forge/noarch/tf2onnx-1.16.1-pyhd8ed1ab_0.conda hash: md5: 3882e49e3d01c69231a7e48d09ca0ec6 @@ -15246,76 +15791,76 @@ package: category: main optional: false - name: threadpoolctl - version: 3.2.0 + version: 3.3.0 manager: conda platform: linux-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.3.0-pyhc1e730c_0.conda hash: - md5: 978d03388b62173b8e6f79162cf52b86 - sha256: 15e2f916fbfe3cc480160aa99eb6ba3edc183fceb234f10151d63870fdc4eccd + md5: 698d2d2b621640bddb9191f132967c9f + sha256: 5ba8bd3f2d49b3b860eb4481ca9505c57d4427212eb12cadd2b351309d5c28e6 category: main optional: false - name: threadpoolctl - version: 3.2.0 + version: 3.3.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.3.0-pyhc1e730c_0.conda hash: - md5: 978d03388b62173b8e6f79162cf52b86 - sha256: 15e2f916fbfe3cc480160aa99eb6ba3edc183fceb234f10151d63870fdc4eccd + md5: 698d2d2b621640bddb9191f132967c9f + sha256: 5ba8bd3f2d49b3b860eb4481ca9505c57d4427212eb12cadd2b351309d5c28e6 category: main optional: false - name: tiledb - version: 2.19.1 + version: 2.20.0 manager: conda platform: linux-64 dependencies: - azure-core-cpp: '>=1.10.3,<2.0a0' - azure-storage-blobs-cpp: '>=12.10.0,<13.0a0' - azure-storage-common-cpp: '>=12.5.0,<13.0a0' + azure-core-cpp: '>=1.10.3,<1.10.4.0a0' + azure-storage-blobs-cpp: '>=12.10.0,<12.10.1.0a0' + azure-storage-common-cpp: '>=12.5.0,<12.5.1.0a0' bzip2: '>=1.0.8,<2.0a0' libabseil: '>=20230802.1,<20230803.0a0' libcurl: '>=8.5.0,<9.0a0' libgcc-ng: '>=12' libgoogle-cloud: '>=2.12.0,<2.13.0a0' libstdcxx-ng: '>=12' - libxml2: '>=2.12.4,<3.0a0' + libxml2: '>=2.12.5,<3.0a0' libzlib: '>=1.2.13,<1.3.0a0' lz4-c: '>=1.9.3,<1.10.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' zstd: '>=1.5.5,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.19.1-h4386cac_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.20.0-h4386cac_0.conda hash: - md5: 8d16e7b2529607a12aa6722c7a7c7356 - sha256: c75ff0cdcf3e3dac837739e056c2dbd74f0b1055ed17ac1523856c44f208e5c1 + md5: 20101f907b5fab4089b034f827e01b91 + sha256: abc460ddf0205dfbeb987678ca882fedcf152d91fbfe7acba2a46c10a306d9cd category: main optional: false - name: tiledb - version: 2.19.1 + version: 2.20.0 manager: conda platform: osx-arm64 dependencies: - azure-core-cpp: '>=1.10.3,<2.0a0' - azure-storage-blobs-cpp: '>=12.10.0,<13.0a0' - azure-storage-common-cpp: '>=12.5.0,<13.0a0' + azure-core-cpp: '>=1.10.3,<1.10.4.0a0' + azure-storage-blobs-cpp: '>=12.10.0,<12.10.1.0a0' + azure-storage-common-cpp: '>=12.5.0,<12.5.1.0a0' bzip2: '>=1.0.8,<2.0a0' libabseil: '>=20230802.1,<20230803.0a0' libcurl: '>=8.5.0,<9.0a0' - libcxx: '>=15' + libcxx: '>=16' libgoogle-cloud: '>=2.12.0,<2.13.0a0' - libxml2: '>=2.12.4,<3.0a0' + libxml2: '>=2.12.5,<3.0a0' libzlib: '>=1.2.13,<1.3.0a0' lz4-c: '>=1.9.3,<1.10.0a0' - openssl: '>=3.2.0,<4.0a0' + openssl: '>=3.2.1,<4.0a0' zstd: '>=1.5.5,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/tiledb-2.19.1-h49d9ff7_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/tiledb-2.20.0-h49d9ff7_0.conda hash: - md5: dcd5b377b1d7784909acffd3bb6ca282 - sha256: 9264b07951317c6ce50d5b5e0f02fb4cbddd45cb26de09edb7bd267424adc6e4 + md5: 7bc3a4c19f431c4fd15bd5eec7ae56df + sha256: 326f35e114e993f92c68823faa9bdd8dcd2cd47a0e0a44cc0550fd89fbc05e82 category: main optional: false - name: tinycss2 @@ -15418,27 +15963,27 @@ package: category: main optional: false - name: tomlkit - version: 0.12.3 + version: 0.12.4 manager: conda platform: linux-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.4-pyha770c72_0.conda hash: - md5: 074d0ce7a6261ab8b497c3518796ef3e - sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117 + md5: 37c47ea93ef00dd80d880fc4ba21256a + sha256: 8d45c266bf919788abacd9828f4a2101d7216f6d4fc7c8d3417034fe0d795a18 category: main optional: false - name: tomlkit - version: 0.12.3 + version: 0.12.4 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.4-pyha770c72_0.conda hash: - md5: 074d0ce7a6261ab8b497c3518796ef3e - sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117 + md5: 37c47ea93ef00dd80d880fc4ba21256a + sha256: 8d45c266bf919788abacd9828f4a2101d7216f6d4fc7c8d3417034fe0d795a18 category: main optional: false - name: toolz @@ -15466,80 +16011,80 @@ package: category: main optional: false - name: tornado - version: 6.3.3 + version: '6.4' manager: conda platform: linux-64 dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py39hd1e30aa_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4-py39hd1e30aa_0.conda hash: - md5: cbe186eefb0bcd91e8f47c3908489874 - sha256: dc0df742be0e83a4286137d21f60ca829632c2ffd66d3bebb603afe5ce74cc68 + md5: 1e865e9188204cdfb1fd2531780add88 + sha256: 27ab8f208c9a8fef7341d8f603059073f445de39c52eed73218f5823212ca73c category: main optional: false - name: tornado - version: 6.3.3 + version: '6.4' manager: conda platform: osx-arm64 dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.3.3-py39h0f82c59_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4-py39h17cfd9d_0.conda hash: - md5: 6e7376dbfbe98b5537bfc9a1b8cf1e41 - sha256: e294cd0a32c14e6e879a202a50ae2ad393dd93e767b3f8e54be96cbcf32af595 + md5: 38274b171136956ae2edc0dd2772ab20 + sha256: 656b39d76d0a50b307a0c4876ab5d51ec03bc2b03570b236e79db7d1e12c4611 category: main optional: false - name: tqdm - version: 4.66.1 + version: 4.66.2 manager: conda platform: linux-64 dependencies: colorama: '' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.2-pyhd8ed1ab_0.conda hash: - md5: 03c97908b976498dcae97eb4e4f3149c - sha256: b61c9222af05e8c5ff27e4a4d2eb81870c21ffd7478346be3ef644b7a3759cc4 + md5: 2b8dfb969f984497f3f98409a9545776 + sha256: 416d1d9318f3267325ad7e2b8a575df20ff9031197b30c0222c3d3b023877260 category: main optional: false - name: tqdm - version: 4.66.1 + version: 4.66.2 manager: conda platform: osx-arm64 dependencies: colorama: '' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.2-pyhd8ed1ab_0.conda hash: - md5: 03c97908b976498dcae97eb4e4f3149c - sha256: b61c9222af05e8c5ff27e4a4d2eb81870c21ffd7478346be3ef644b7a3759cc4 + md5: 2b8dfb969f984497f3f98409a9545776 + sha256: 416d1d9318f3267325ad7e2b8a575df20ff9031197b30c0222c3d3b023877260 category: main optional: false - name: traitlets - version: 5.14.1 + version: 5.14.2 manager: conda platform: linux-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.2-pyhd8ed1ab_0.conda hash: - md5: 1c6acfdc7ecbfe09954c4216da99c146 - sha256: fa78d68f74ec8aae5c93f135140bfdbbf0ab60a79c6062b55d73c316068545ec + md5: af5fa2d2186003472e766a23c46cae04 + sha256: 9ea6073091c130470a51b51703c8d2d959434992e29c4aa4abeba07cd56533a3 category: main optional: false - name: traitlets - version: 5.14.1 + version: 5.14.2 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.2-pyhd8ed1ab_0.conda hash: - md5: 1c6acfdc7ecbfe09954c4216da99c146 - sha256: fa78d68f74ec8aae5c93f135140bfdbbf0ab60a79c6062b55d73c316068545ec + md5: af5fa2d2186003472e766a23c46cae04 + sha256: 9ea6073091c130470a51b51703c8d2d959434992e29c4aa4abeba07cd56533a3 category: main optional: false - name: typeguard @@ -15561,8 +16106,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' importlib_metadata: '>=3.6' + python: '>=3.8' typing_extensions: '>=4.7.0' url: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.1.5-pyhd8ed1ab_1.conda hash: @@ -15571,75 +16116,75 @@ package: category: main optional: false - name: types-python-dateutil - version: 2.8.19.20240106 + version: 2.9.0.20240316 manager: conda platform: linux-64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.20240106-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240316-pyhd8ed1ab_0.conda hash: - md5: c9096a546660b9079dce531c0039e074 - sha256: 09ef8cc587bdea80a83b6f820dbae24daadcf82be088fb0a9f6495781653e300 + md5: 7831efa91d57475373ee52fb92e8d137 + sha256: 6630bbc43dfb72339fadafc521db56c9d17af72bfce459af195eecb01163de20 category: main optional: false - name: types-python-dateutil - version: 2.8.19.20240106 + version: 2.9.0.20240316 manager: conda platform: osx-arm64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.20240106-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240316-pyhd8ed1ab_0.conda hash: - md5: c9096a546660b9079dce531c0039e074 - sha256: 09ef8cc587bdea80a83b6f820dbae24daadcf82be088fb0a9f6495781653e300 + md5: 7831efa91d57475373ee52fb92e8d137 + sha256: 6630bbc43dfb72339fadafc521db56c9d17af72bfce459af195eecb01163de20 category: main optional: false - name: typing-extensions - version: 4.9.0 + version: 4.10.0 manager: conda platform: linux-64 dependencies: - typing_extensions: 4.9.0 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda + typing_extensions: 4.10.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.10.0-hd8ed1ab_0.conda hash: - md5: c16524c1b7227dc80b36b4fa6f77cc86 - sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c + md5: 091683b9150d2ebaa62fd7e2c86433da + sha256: 0698fe2c4e555fb44c27c60f7a21fa0eea7f5bf8186ad109543c5b056e27f96a category: main optional: false - name: typing-extensions - version: 4.9.0 + version: 4.10.0 manager: conda platform: osx-arm64 dependencies: - typing_extensions: 4.9.0 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda + typing_extensions: 4.10.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.10.0-hd8ed1ab_0.conda hash: - md5: c16524c1b7227dc80b36b4fa6f77cc86 - sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c + md5: 091683b9150d2ebaa62fd7e2c86433da + sha256: 0698fe2c4e555fb44c27c60f7a21fa0eea7f5bf8186ad109543c5b056e27f96a category: main optional: false - name: typing_extensions - version: 4.9.0 + version: 4.10.0 manager: conda platform: linux-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.10.0-pyha770c72_0.conda hash: - md5: a92a6440c3fe7052d63244f3aba2a4a7 - sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905 + md5: 16ae769069b380646c47142d719ef466 + sha256: 4be24d557897b2f6609f5d5f7c437833c62f4d4a96581e39530067e96a2d0451 category: main optional: false - name: typing_extensions - version: 4.9.0 + version: 4.10.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.10.0-pyha770c72_0.conda hash: - md5: a92a6440c3fe7052d63244f3aba2a4a7 - sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905 + md5: 16ae769069b380646c47142d719ef466 + sha256: 4be24d557897b2f6609f5d5f7c437833c62f4d4a96581e39530067e96a2d0451 category: main optional: false - name: typing_inspect @@ -15661,9 +16206,9 @@ package: manager: conda platform: osx-arm64 dependencies: + mypy_extensions: '>=0.3.0' python: '>=3.5' typing_extensions: '>=3.7.4' - mypy_extensions: '>=0.3.0' url: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda hash: md5: 9e924b76b91908a17e28a19a0ab88687 @@ -15695,49 +16240,49 @@ package: category: main optional: false - name: tzcode - version: 2023d + version: 2024a manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' libgcc-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/tzcode-2023d-h3f72095_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/tzcode-2024a-h3f72095_0.conda hash: - md5: 1c63518899838477ebd497e3e3327f81 - sha256: 0eab7ec2f4c983efb365bacc2e7bd6620f516a50d2e9b183ba1c9c243601cce3 + md5: 32146e34aaec3745a08b6f49af3f41b0 + sha256: d3ea2927cabd6c9f27ee0cb498f893ac0133687d6a9e65e0bce4861c732a18df category: main optional: false - name: tzcode - version: 2023d + version: 2024a manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/tzcode-2023d-h93a5062_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/tzcode-2024a-h93a5062_0.conda hash: - md5: 8f6c1eef62c660bfb43897fe14b2ca95 - sha256: a4bed39a41b26d5f8134fd0cb0df15bc0b9e645e3ee6f88ee81c8d24651eb8cd + md5: 33ebc94eb6420500a4aeb0fc45112bba + sha256: 70bce0410d77b6ba3c32079aa87a98877ea970d8e96f2e4503e9b81198ece1f4 category: main optional: false - name: tzdata - version: 2023d + version: 2024a manager: conda platform: linux-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023d-h0c530f3_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda hash: - md5: 8dee24b8be2d9ff81e7bd4d7d97ff1b0 - sha256: 04f2ab3e36f2015841551415bf16bf62933bd94b7085d4be5493b388e95a9c3d + md5: 161081fc7cec0bfda0d86d7cb595f8d8 + sha256: 7b2b69c54ec62a243eb6fba2391b5e443421608c3ae5dbff938ad33ca8db5122 category: main optional: false - name: tzdata - version: 2023d + version: 2024a manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023d-h0c530f3_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda hash: - md5: 8dee24b8be2d9ff81e7bd4d7d97ff1b0 - sha256: 04f2ab3e36f2015841551415bf16bf62933bd94b7085d4be5493b388e95a9c3d + md5: 161081fc7cec0bfda0d86d7cb595f8d8 + sha256: 7b2b69c54ec62a243eb6fba2391b5e443421608c3ae5dbff938ad33ca8db5122 category: main optional: false - name: tzlocal @@ -15772,13 +16317,12 @@ package: platform: linux-64 dependencies: libgcc-ng: '>=12' - libnuma: '>=2.0.16,<3.0a0' libstdcxx-ng: '>=12' - rdma-core: '>=49' - url: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-h75e419f_3.conda + rdma-core: '>=50.0' + url: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-h11edf95_7.conda hash: - md5: 5baf4efbca923cdf73490c62cc7de1e2 - sha256: 7b5ccea54cac81bda2704e1c4cf06dba17dd683871e785fa11a1788ed289be9a + md5: 20a94f617ad76922f8737ad1fe317f4d + sha256: 3e381ec5918045a43e0f349214a4d38e53990897ba07a6abf025f9e0156acaf2 category: main optional: false - name: ukkonen @@ -15894,10 +16438,10 @@ package: dependencies: libgcc-ng: '>=12' libstdcxx-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.7-hcb278e6_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.7-h59595ed_1.conda hash: - md5: 2c46deb08ba9b10e90d0a6401ad65deb - sha256: bc7670384fc3e519b376eab25b2c747afe392b243f17e881075231f4a0f2e5a0 + md5: c5edf07141147789784f89d5b4e4a9ad + sha256: ec997599b6dcfef34242c67b695c4704d9ba6cb0b9de8f390defa475a95cdb3f category: main optional: false - name: uriparser @@ -15905,11 +16449,11 @@ package: manager: conda platform: osx-arm64 dependencies: - libcxx: '>=14.0.6' - url: https://conda.anaconda.org/conda-forge/osx-arm64/uriparser-0.9.7-hb7217d7_1.conda + libcxx: '>=14' + url: https://conda.anaconda.org/conda-forge/osx-arm64/uriparser-0.9.7-h13dd4ca_1.conda hash: - md5: 4fe532e3c6b0cfa5365eb01743d32578 - sha256: bedd03f3bb30b73ae7b0dc9626f1371a8568ce6d41303df3e8299688428dfa94 + md5: df83a53820f413eb8b14045433a2d587 + sha256: 019103df9eec86c9afa92dec21a849e63d57bfa9125ca811e68b78dab224c4ee category: main optional: false - name: urllib3 @@ -15931,9 +16475,9 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.7' brotli-python: '>=1.0.9' pysocks: '>=1.5.6,<2.0,!=1.5.7' + python: '>=3.7' url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda hash: md5: bf61cfd2a7f212efba378167a07d4a6a @@ -16008,33 +16552,33 @@ package: category: main optional: false - name: virtualenv - version: 20.24.1 + version: 20.25.1 manager: conda platform: linux-64 dependencies: - distlib: <1,>=0.3.6 - filelock: <4,>=3.12 - platformdirs: <4,>=3.5.1 + distlib: <1,>=0.3.7 + filelock: <4,>=3.12.2 + platformdirs: <5,>=3.9.1 python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.25.1-pyhd8ed1ab_0.conda hash: - md5: 428f6c7385636d72191cb4fa0e489503 - sha256: 462b2277ec75babc2ee69a24a74e673ac633f6056889ed8e54d111f770c40904 + md5: 8797a4e26be36880a603aba29c785352 + sha256: 1ced4445cf72cd9dc344ad04bdaf703a08cc428c8c46e4bda928ad79786ee153 category: main optional: false - name: virtualenv - version: 20.24.1 + version: 20.25.1 manager: conda platform: osx-arm64 dependencies: + distlib: <1,>=0.3.7 + filelock: <4,>=3.12.2 + platformdirs: <5,>=3.9.1 python: '>=3.8' - distlib: <1,>=0.3.6 - filelock: <4,>=3.12 - platformdirs: <4,>=3.5.1 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.25.1-pyhd8ed1ab_0.conda hash: - md5: 428f6c7385636d72191cb4fa0e489503 - sha256: 462b2277ec75babc2ee69a24a74e673ac633f6056889ed8e54d111f770c40904 + md5: 8797a4e26be36880a603aba29c785352 + sha256: 1ced4445cf72cd9dc344ad04bdaf703a08cc428c8c46e4bda928ad79786ee153 category: main optional: false - name: wcwidth @@ -16151,8 +16695,8 @@ package: manager: conda platform: osx-arm64 dependencies: - python: '>=3.8' markupsafe: '>=2.1.1' + python: '>=3.8' url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.0.1-pyhd8ed1ab_0.conda hash: md5: af8d825d93dbe6331ee6d61c69869ca0 @@ -16184,27 +16728,27 @@ package: category: main optional: false - name: widgetsnbextension - version: 4.0.9 + version: 4.0.10 manager: conda platform: linux-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.10-pyhd8ed1ab_0.conda hash: - md5: 82617d07b2f5f5a96296d3c19684b37a - sha256: 35dd47b3c117cd759ac46da0b69064bebccd94862e795615ee65dbbe3e6cd86b + md5: 521f489e3babeddeec638c2add7e9e64 + sha256: 981b06c76a1a86bb84be09522768be0458274926b22f4b0225dfcdd30a6593e0 category: main optional: false - name: widgetsnbextension - version: 4.0.9 + version: 4.0.10 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.10-pyhd8ed1ab_0.conda hash: - md5: 82617d07b2f5f5a96296d3c19684b37a - sha256: 35dd47b3c117cd759ac46da0b69064bebccd94862e795615ee65dbbe3e6cd86b + md5: 521f489e3babeddeec638c2add7e9e64 + sha256: 981b06c76a1a86bb84be09522768be0458274926b22f4b0225dfcdd30a6593e0 category: main optional: false - name: wrapt @@ -16560,10 +17104,10 @@ package: libgcc-ng: '>=12' libsodium: '>=1.0.18,<1.0.19.0a0' libstdcxx-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_1.conda hash: - md5: 8851084c192dbc56215ac4e3c9aa30fa - sha256: 53bf2a18224406e9806adb3b270a2c8a028aca0c89bd40114a85d6446f5c98d1 + md5: 7fc9d3288d2420bb3637647621018000 + sha256: 3bec658f5c23abf5e200d98418add7a20ff7b45c928ad4560525bef899496256 category: main optional: false - name: zeromq @@ -16571,13 +17115,12 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=10.9' - libcxx: '>=16.0.6' + libcxx: '>=16' libsodium: '>=1.0.18,<1.0.19.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h965bd2d_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hebf3989_1.conda hash: - md5: f460bbcb0ec8dc77989288fe8caa0f84 - sha256: 06abddc92d0bf83cd9faf25f26c98d7c2cc681cb50504011580b0584cf3cb1c5 + md5: 19cff1c627ff58429701113bf35300c8 + sha256: caf6df12d793600faec21b7e6025e2e8fb8de26672cce499f9471b99b6776eb1 category: main optional: false - name: zict @@ -16679,6 +17222,58 @@ package: sha256: 7e1fe6057628bbb56849a6741455bbb88705bae6d6646257e57904ac5ee5a481 category: main optional: false +- name: aioboto3 + version: 12.3.0 + manager: pip + platform: linux-64 + dependencies: + aiobotocore: 2.11.2 + url: https://files.pythonhosted.org/packages/2d/69/e375ee955f67eb468d5bc907423bdbdb39cbdd2012652e8abd98ba0bb255/aioboto3-12.3.0-py3-none-any.whl + hash: + sha256: 268b98046f8e1e303b4bbc553b60643b26c0031b4290ef163caf80c3be5ecf85 + category: main + optional: false +- name: aioboto3 + version: 12.3.0 + manager: pip + platform: osx-arm64 + dependencies: + aiobotocore: 2.11.2 + url: https://files.pythonhosted.org/packages/2d/69/e375ee955f67eb468d5bc907423bdbdb39cbdd2012652e8abd98ba0bb255/aioboto3-12.3.0-py3-none-any.whl + hash: + sha256: 268b98046f8e1e303b4bbc553b60643b26c0031b4290ef163caf80c3be5ecf85 + category: main + optional: false +- name: aiobotocore + version: 2.11.2 + manager: pip + platform: linux-64 + dependencies: + botocore: '>=1.33.2,<1.34.35' + aiohttp: '>=3.7.4.post0,<4.0.0' + wrapt: '>=1.10.10,<2.0.0' + aioitertools: '>=0.5.1,<1.0.0' + boto3: '>=1.33.2,<1.34.35' + url: https://files.pythonhosted.org/packages/25/cf/c695f7f3301117766d778f536082c41ba20fd01b02e14a5c06f92a5ea75e/aiobotocore-2.11.2-py3-none-any.whl + hash: + sha256: 487fede588040bfa3a43df945275c28c1c73ca75bf705295adb9fbadd2e89be7 + category: main + optional: false +- name: aiobotocore + version: 2.11.2 + manager: pip + platform: osx-arm64 + dependencies: + botocore: '>=1.33.2,<1.34.35' + aiohttp: '>=3.7.4.post0,<4.0.0' + wrapt: '>=1.10.10,<2.0.0' + aioitertools: '>=0.5.1,<1.0.0' + boto3: '>=1.33.2,<1.34.35' + url: https://files.pythonhosted.org/packages/25/cf/c695f7f3301117766d778f536082c41ba20fd01b02e14a5c06f92a5ea75e/aiobotocore-2.11.2-py3-none-any.whl + hash: + sha256: 487fede588040bfa3a43df945275c28c1c73ca75bf705295adb9fbadd2e89be7 + category: main + optional: false - name: annotated-types version: 0.6.0 manager: pip @@ -16699,6 +17294,58 @@ package: sha256: 0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 category: main optional: false +- name: boto3 + version: 1.34.34 + manager: pip + platform: linux-64 + dependencies: + botocore: '>=1.34.34,<1.35.0' + jmespath: '>=0.7.1,<2.0.0' + s3transfer: '>=0.10.0,<0.11.0' + url: https://files.pythonhosted.org/packages/0e/78/d505b8c71139d234e34df1c4a18d0567287494ce63f690337aa2af23219c/boto3-1.34.34-py3-none-any.whl + hash: + sha256: 33a8b6d9136fa7427160edb92d2e50f2035f04e9d63a2d1027349053e12626aa + category: main + optional: false +- name: boto3 + version: 1.34.34 + manager: pip + platform: osx-arm64 + dependencies: + botocore: '>=1.34.34,<1.35.0' + jmespath: '>=0.7.1,<2.0.0' + s3transfer: '>=0.10.0,<0.11.0' + url: https://files.pythonhosted.org/packages/0e/78/d505b8c71139d234e34df1c4a18d0567287494ce63f690337aa2af23219c/boto3-1.34.34-py3-none-any.whl + hash: + sha256: 33a8b6d9136fa7427160edb92d2e50f2035f04e9d63a2d1027349053e12626aa + category: main + optional: false +- name: botocore + version: 1.34.34 + manager: pip + platform: linux-64 + dependencies: + jmespath: '>=0.7.1,<2.0.0' + python-dateutil: '>=2.1,<3.0.0' + urllib3: '>=1.25.4,<1.27' + url: https://files.pythonhosted.org/packages/6e/71/b81be726c424784858e9b9ccada167dbb19364f37744d9d780c2f79f9e6e/botocore-1.34.34-py3-none-any.whl + hash: + sha256: cd060b0d88ebb2b893f1411c1db7f2ba66cc18e52dcc57ad029564ef5fec437b + category: main + optional: false +- name: botocore + version: 1.34.34 + manager: pip + platform: osx-arm64 + dependencies: + jmespath: '>=0.7.1,<2.0.0' + python-dateutil: '>=2.1,<3.0.0' + urllib3: '>=1.25.4,<1.27' + url: https://files.pythonhosted.org/packages/6e/71/b81be726c424784858e9b9ccada167dbb19364f37744d9d780c2f79f9e6e/botocore-1.34.34-py3-none-any.whl + hash: + sha256: cd060b0d88ebb2b893f1411c1db7f2ba66cc18e52dcc57ad029564ef5fec437b + category: main + optional: false - name: dacite version: 1.8.1 manager: pip @@ -17049,6 +17696,21 @@ package: sha256: bf14aa0eb22b58c231243dccf7e7f42f7beec48970f2549b3a6acc737d1a4ba4 category: main optional: false +- name: modin + version: 0.22.3 + manager: pip + platform: linux-64 + dependencies: + pandas: 1.5.3 + packaging: '*' + numpy: '>=1.18.5' + fsspec: '*' + psutil: '*' + url: https://files.pythonhosted.org/packages/79/68/e560890fe0b8b89eb55e30bf7c11c4f43d1975da578e516a0996a7fce562/modin-0.22.3-py3-none-any.whl + hash: + sha256: e438ead6eb8dc536dbf8c74365e007d88d6187196f2d0756b77d6551bf35a686 + category: main + optional: false - name: modin version: 0.22.3 manager: pip @@ -17088,6 +17750,19 @@ package: sha256: 9e9356e943617f5e35a74bf56ff6e7cc83e6b1865d5e13cee535d79bf2cae954 category: main optional: false +- name: pandas + version: 1.5.3 + manager: pip + platform: linux-64 + dependencies: + python-dateutil: '>=2.8.1' + pytz: '>=2020.1' + numpy: '>=1.20.3' + url: https://files.pythonhosted.org/packages/e1/4d/3eb96e53a9208350ee21615f850c4be9a246d32bf1d34cd36682cb58c3b7/pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + hash: + sha256: 9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5 + category: main + optional: false - name: pandas version: 1.5.3 manager: pip @@ -17295,6 +17970,28 @@ package: sha256: 77b5b12e9fa6bb7ab623e7be5bfbd7523c83a2ea72c48f6f6f4d5e3df87ac896 category: main optional: false +- name: s3transfer + version: 0.10.1 + manager: pip + platform: linux-64 + dependencies: + botocore: '>=1.33.2,<2.0a.0' + url: https://files.pythonhosted.org/packages/83/37/395cdb6ee92925fa211e55d8f07b9f93cf93f60d7d4ce5e66fd73f1ea986/s3transfer-0.10.1-py3-none-any.whl + hash: + sha256: ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d + category: main + optional: false +- name: s3transfer + version: 0.10.1 + manager: pip + platform: osx-arm64 + dependencies: + botocore: '>=1.33.2,<2.0a.0' + url: https://files.pythonhosted.org/packages/83/37/395cdb6ee92925fa211e55d8f07b9f93cf93f60d7d4ce5e66fd73f1ea986/s3transfer-0.10.1-py3-none-any.whl + hash: + sha256: ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d + category: main + optional: false - name: scipy version: 1.11.4 manager: pip diff --git a/monodocs-environment.yaml b/monodocs-environment.yaml index 78f85c19cff..82ce9868f1a 100644 --- a/monodocs-environment.yaml +++ b/monodocs-environment.yaml @@ -29,7 +29,6 @@ dependencies: # Packages for Plugin docs # Package name Plugin needing it - - retry # aws sagemaker - botocore # fsspec - fsspec # fsspec - google-cloud-bigquery # bigquery @@ -38,6 +37,7 @@ dependencies: - great-expectations # greatexpectations - datasets # huggingface - kubernetes # k8s-pod + - python-kubernetes # k8s-pod - modin # modin - pandera # pandera - pydantic # vaex, pydantic @@ -75,6 +75,7 @@ dependencies: - whylabs-client # whylogs - ray==2.6.3 - duckdb + - aioboto3>=12.3.0 # aws sagemaker inference platforms: - linux-64 From b6f35add1227c930e9208103235d89fe4b864b8e Mon Sep 17 00:00:00 2001 From: Cornelis Boon Date: Fri, 22 Mar 2024 16:06:16 +0100 Subject: [PATCH 102/107] add first version of gke-starter values file (#5026) * add first version of gke-starter values file Signed-off-by: Cornelis Boon * remove AWS metadata env var, add service account annotations, update templateUri Signed-off-by: Cornelis Boon * let user fill in GCP project ID in templateUri Signed-off-by: Cornelis Boon * add link to GCP workload identity configuration Signed-off-by: Cornelis Boon * run make helm Signed-off-by: Cornelis Boon * bump flyte-binary chart version to v0.1.11 Signed-off-by: Cornelis Boon * Revert "bump flyte-binary chart version to v0.1.11" This reverts commit ddfe8402182fe594edd6a47e096b344b712d0985. Signed-off-by: Cornelis Boon * add default configuration to allow scheduling on gpu nodes in GKE Signed-off-by: Cornelis Boon * add default gpu-partition-size label to allow scheduling on multi-instance GPUs in GKE Signed-off-by: Cornelis Boon * run make helm Signed-off-by: Cornelis Boon * fix linting errors Signed-off-by: Cornelis Boon --------- Signed-off-by: Cornelis Boon --- charts/flyte-binary/Chart.yaml | 1 + charts/flyte-binary/gke-starter.yaml | 146 ++++++++++++++++++ .../manifests/complete-agent.yaml | 4 +- .../sandbox-bundled/manifests/complete.yaml | 4 +- docker/sandbox-bundled/manifests/dev.yaml | 4 +- 5 files changed, 153 insertions(+), 6 deletions(-) create mode 100644 charts/flyte-binary/gke-starter.yaml diff --git a/charts/flyte-binary/Chart.yaml b/charts/flyte-binary/Chart.yaml index 730b109d0de..9c8ebc3d246 100644 --- a/charts/flyte-binary/Chart.yaml +++ b/charts/flyte-binary/Chart.yaml @@ -7,6 +7,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) + version: v0.1.10 # VERSION # This is the version number of the application being deployed. This version number should be diff --git a/charts/flyte-binary/gke-starter.yaml b/charts/flyte-binary/gke-starter.yaml new file mode 100644 index 00000000000..f9052a27fd7 --- /dev/null +++ b/charts/flyte-binary/gke-starter.yaml @@ -0,0 +1,146 @@ +# configuration Specify configuration for Flyte +configuration: + # database Specify configuration for Flyte's database connection + database: + # username Name for user to connect to database as + username: postgres + # password Password to connect to database with + # If set, a Secret will be created with this value and mounted to Flyte pod + password: "" + # host Hostname of database instance + host: 127.0.0.1 + # dbname Name of database to use + dbname: flyteadmin + # storage Specify configuration for object store + storage: + # metadataContainer Bucket to store Flyte metadata + metadataContainer: "my-organization-flyte-container" + # userDataContainer Bucket to store Flyte user data + userDataContainer: "my-organization-flyte-container" + # provider Object store provider (Supported values: s3, gcs) + provider: gcs + # providerConfig Additional object store provider-specific configuration + providerConfig: + # gcs Provider configuration for GCS object store + gcs: + # project Google Cloud project in which bucket resides + project: "my-organization-gcp-project" + # logging Specify configuration for logs emitted by Flyte + logging: + # level Set the log level + level: 5 + # plugins Specify additional logging plugins + plugins: + # stackdriver Configure logging plugin to have logs visible in StackDriver + stackdriver: + enabled: true + templateUri: | + "https://console.cloud.google.com/logs/query;query=resource.labels.namespace_name%3D%22{{.namespace}}%22%0Aresource.labels.pod_name%3D%22{{.podName}}%22%0Aresource.labels.container_name%3D%22{{.containerName}}%22?project=&angularJsUrl=%2Flogs%2Fviewer%3Fproject%3D" + # auth Specify configuration for Flyte authentication + auth: + # enabled Enable Flyte authentication + enabled: false + # oidc OIDC configuration for Flyte authentication + oidc: + # baseUrl URL for OIDC provider + baseUrl: "" + # clientId Flyte application client ID + clientId: "" + # clientSecret Flyte application client secret + clientSecret: "" + # internal Configuration for internal authentication + # The settings for internal still need to be defined if you wish to use an external auth server + # These credentials are used during communication between the FlyteAdmin and Propeller microservices + internal: + # clientId Client ID for internal authentication - set to flytepropeller or external auth server + clientId: flytepropeller + # clientSecret Client secret for internal authentication + clientSecret: "" + # clientSecretHash Bcrypt hash of clientSecret + clientSecretHash: "" + # authorizedUris Set of URIs that clients are allowed to visit the service on + authorizedUris: [] + + # inline Specify additional configuration or overrides for Flyte, to be merged with the base configuration + inline: + #This section automates the IAM Role annotation for the default KSA on each project namespace to enable IRSA + #Learn more: https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html + cluster_resources: + customData: + - production: + - defaultIamServiceAccount: + value: + - staging: + - defaultIamServiceAccount: + value: + - development: + - defaultIamServiceAccount: + value: + plugins: + k8s: + inject-finalizer: true + gpu-device-node-label: cloud.google.com/gke-accelerator + gpu-partition-size-node-label: cloud.google.com/gke-gpu-partition-size + resource-tolerations: + - nvidia.com/gpu: + - key: "nvidia.com/gpu" + operator: "Equal" + value: "present" + effect: "NoSchedule" + # Configuration for the Datacatalog engine, used when caching is enabled + # Learn more: https://docs.flyte.org/en/latest/deployment/configuration/generated/datacatalog_config.html + storage: + cache: + max_size_mbs: 10 + target_gc_percent: 100 + tasks: + task-plugins: + enabled-plugins: + - container + - sidecar + - K8S-ARRAY #used for MapTasks + default-for-task-types: + - container: container + - container_array: K8S-ARRAY + +# clusterResourceTemplates Specify templates for Kubernetes resources that should be created for new Flyte projects +clusterResourceTemplates: + # inline Specify additional cluster resource templates, to be merged with the base configuration + inline: + #This section automates the creation of the project-domain namespaces + 001_namespace.yaml: | + apiVersion: v1 + kind: Namespace + metadata: + name: '{{ namespace }}' + # This block performs the automated annotation of KSAs across all project-domain namespaces. Make sure to bind the KSA to the GSA after KSAs are created: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#authenticating_to + 002_serviceaccount.yaml: | + apiVersion: v1 + kind: ServiceAccount + metadata: + name: default + namespace: '{{ namespace }}' + annotations: + iam.gke.io/gcp-service-account: '{{ defaultIamServiceAccount }}' + +# serviceAccount Configure Flyte ServiceAccount +serviceAccount: + # create Create ServiceAccount for Flyte + create: true + #Automates annotation of default flyte-binary KSA. Make sure to bind the KSA to the GSA: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#authenticating_to + annotations: + iam.gke.io/gcp-service-account: +# rbac Configure Kubernetes RBAC for Flyte +rbac: + # create Create ClusterRole and ClusterRoleBinding resources + create: true + # extraRules Add additional rules to the ClusterRole + extraRules: + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - get + - patch diff --git a/docker/sandbox-bundled/manifests/complete-agent.yaml b/docker/sandbox-bundled/manifests/complete-agent.yaml index 1779389183e..3d40c5a8f82 100644 --- a/docker/sandbox-bundled/manifests/complete-agent.yaml +++ b/docker/sandbox-bundled/manifests/complete-agent.yaml @@ -816,7 +816,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: allvNmJ4bUxTcVo2Z0lObw== + haSharedSecret: QWVsREJpZnlIR2N1UXJSMg== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1412,7 +1412,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 7e2eea3d2c604971389c67f39e7d553b6329ea37af5254119febf0a125e55e64 + checksum/secret: 6eadd3a29b61a78cf3a7712f3370a10fc0ec1a61c40753a48c7fa8bea69a6ec6 labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/complete.yaml b/docker/sandbox-bundled/manifests/complete.yaml index 05e557ad962..69739d52d70 100644 --- a/docker/sandbox-bundled/manifests/complete.yaml +++ b/docker/sandbox-bundled/manifests/complete.yaml @@ -796,7 +796,7 @@ type: Opaque --- apiVersion: v1 data: - haSharedSecret: d2Fqb3NpcVh5a1JUaGR4Vg== + haSharedSecret: NmtkWjAwUWhadWlzb0xNcA== proxyPassword: "" proxyUsername: "" kind: Secret @@ -1360,7 +1360,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 087a8de1fb03ba21b367df5aa3a47d77ec2acbdeb9b6d2fa66c0caa04c304246 + checksum/secret: 98727a2bd78c4e88ef413663ebff406f78c8fdbda001f7ba7b6b784934cd4d4a labels: app: docker-registry release: flyte-sandbox diff --git a/docker/sandbox-bundled/manifests/dev.yaml b/docker/sandbox-bundled/manifests/dev.yaml index 71a34f8bed1..fd77ad44e0f 100644 --- a/docker/sandbox-bundled/manifests/dev.yaml +++ b/docker/sandbox-bundled/manifests/dev.yaml @@ -499,7 +499,7 @@ metadata: --- apiVersion: v1 data: - haSharedSecret: WGtoeXNQV2FrV0lGeWJMeg== + haSharedSecret: WG01UkdoN2dNTzBMRjJDVA== proxyPassword: "" proxyUsername: "" kind: Secret @@ -934,7 +934,7 @@ spec: metadata: annotations: checksum/config: 8f50e768255a87f078ba8b9879a0c174c3e045ffb46ac8723d2eedbe293c8d81 - checksum/secret: 63c7525d8f4e16616715d985d9581611a83fe095e65b51cc25c61f9009f595da + checksum/secret: 5400c48803b4ae9d08115e0f52f00245498c0b06d11d318a36590b01f91e2753 labels: app: docker-registry release: flyte-sandbox From feb4777a62419dbc729f76233231204918b69917 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Fri, 22 Mar 2024 22:00:36 -0700 Subject: [PATCH 103/107] Fix open ai secret name (#5098) Signed-off-by: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> --- docs/deployment/agents/chatgpt.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deployment/agents/chatgpt.rst b/docs/deployment/agents/chatgpt.rst index c3e5a490ea8..a810bf5fdfe 100644 --- a/docs/deployment/agents/chatgpt.rst +++ b/docs/deployment/agents/chatgpt.rst @@ -94,7 +94,7 @@ Add the OpenAI API token apiVersion: v1 data: - flyte_openai_access_token: + flyte_openai_api_key: kind: Secret metadata: annotations: From 2260ca2b9b09060bb805e28ff0dd14a8940738b9 Mon Sep 17 00:00:00 2001 From: Rafael Raposo <100569684+RRap0so@users.noreply.github.com> Date: Mon, 25 Mar 2024 18:23:36 +0000 Subject: [PATCH 104/107] Allow setting a ExecutionClusterLabel when triggering a Launchplan/Workflow/Task (#4998) Add ExecutionClusterLabel to the ExecutionSpec so users can override the label at kick off time. Closes https://github.com/flyteorg/flyte/issues/5081 Signed-off-by: Rafael Raposo --- .../pkg/executioncluster/execution_target.go | 14 +- .../pkg/executioncluster/impl/in_cluster.go | 3 + .../executioncluster/impl/in_cluster_test.go | 11 + .../impl/random_cluster_selector.go | 34 +- .../impl/random_cluster_selector_test.go | 32 + .../pkg/manager/impl/execution_manager.go | 51 +- .../manager/impl/execution_manager_test.go | 6 +- flyteadmin/pkg/server/service.go | 2 +- .../pkg/workflowengine/impl/k8s_executor.go | 11 +- .../pkg/workflowengine/interfaces/executor.go | 25 +- flyteadmin/tests/project_test.go | 2 +- flyteidl/clients/go/assets/admin.swagger.json | 4 + .../gen/pb-es/flyteidl/admin/execution_pb.ts | 9 + .../gen/pb-go/flyteidl/admin/execution.pb.go | 704 +-- .../flyteidl/service/admin.swagger.json | 4 + flyteidl/gen/pb-js/flyteidl.d.ts | 1842 +++---- flyteidl/gen/pb-js/flyteidl.js | 4687 +++++++++-------- .../pb_python/flyteidl/admin/execution_pb2.py | 103 +- .../flyteidl/admin/execution_pb2.pyi | 7 +- flyteidl/gen/pb_rust/flyteidl.admin.rs | 1545 +++--- .../protos/flyteidl/admin/execution.proto | 4 + 21 files changed, 4623 insertions(+), 4477 deletions(-) diff --git a/flyteadmin/pkg/executioncluster/execution_target.go b/flyteadmin/pkg/executioncluster/execution_target.go index 9691e12afbb..78667ed62c9 100644 --- a/flyteadmin/pkg/executioncluster/execution_target.go +++ b/flyteadmin/pkg/executioncluster/execution_target.go @@ -5,18 +5,20 @@ import ( restclient "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/client" + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" flyteclient "github.com/flyteorg/flyte/flytepropeller/pkg/client/clientset/versioned" "github.com/flyteorg/flyte/flytestdlib/random" ) // Spec to determine the execution target type ExecutionTargetSpec struct { - TargetID string - ExecutionID string - Project string - Domain string - Workflow string - LaunchPlan string + TargetID string + ExecutionID string + Project string + Domain string + Workflow string + LaunchPlan string + ExecutionClusterLabel *admin.ExecutionClusterLabel } // Client object of the target execution cluster diff --git a/flyteadmin/pkg/executioncluster/impl/in_cluster.go b/flyteadmin/pkg/executioncluster/impl/in_cluster.go index fb42178dec7..f06d1c4adfd 100644 --- a/flyteadmin/pkg/executioncluster/impl/in_cluster.go +++ b/flyteadmin/pkg/executioncluster/impl/in_cluster.go @@ -26,6 +26,9 @@ func (i InCluster) GetTarget(ctx context.Context, spec *executioncluster.Executi if spec != nil && !(spec.TargetID == "" || spec.TargetID == defaultInClusterTargetID) { return nil, errors.New(fmt.Sprintf("remote target %s is not supported", spec.TargetID)) } + if spec != nil && spec.ExecutionClusterLabel != nil && spec.ExecutionClusterLabel.Value != "" { + return nil, errors.New(fmt.Sprintf("execution cluster label %s is not supported", spec.ExecutionClusterLabel.Value)) + } return &i.target, nil } diff --git a/flyteadmin/pkg/executioncluster/impl/in_cluster_test.go b/flyteadmin/pkg/executioncluster/impl/in_cluster_test.go index e31cb8ad110..a02d735e46b 100644 --- a/flyteadmin/pkg/executioncluster/impl/in_cluster_test.go +++ b/flyteadmin/pkg/executioncluster/impl/in_cluster_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/flyteorg/flyte/flyteadmin/pkg/executioncluster" + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" ) func TestInClusterGetTarget(t *testing.T) { @@ -52,6 +53,16 @@ func TestInClusterGetRemoteTarget(t *testing.T) { assert.EqualError(t, err, "remote target t1 is not supported") } +func TestInClusterGetTargetWithExecutionClusterLabel(t *testing.T) { + cluster := InCluster{ + target: executioncluster.ExecutionTarget{}, + } + _, err := cluster.GetTarget(context.Background(), &executioncluster.ExecutionTargetSpec{ExecutionClusterLabel: &admin.ExecutionClusterLabel{ + Value: "l1", + }}) + assert.EqualError(t, err, "execution cluster label l1 is not supported") +} + func TestInClusterGetAllValidTargets(t *testing.T) { target := &executioncluster.ExecutionTarget{ Enabled: true, diff --git a/flyteadmin/pkg/executioncluster/impl/random_cluster_selector.go b/flyteadmin/pkg/executioncluster/impl/random_cluster_selector.go index 74dad42ce0e..35340d38229 100644 --- a/flyteadmin/pkg/executioncluster/impl/random_cluster_selector.go +++ b/flyteadmin/pkg/executioncluster/impl/random_cluster_selector.go @@ -93,21 +93,31 @@ func (s RandomClusterSelector) GetTarget(ctx context.Context, spec *executionclu } return nil, fmt.Errorf("invalid cluster target %s", spec.TargetID) } - resource, err := s.resourceManager.GetResource(ctx, managerInterfaces.ResourceRequest{ - Project: spec.Project, - Domain: spec.Domain, - Workflow: spec.Workflow, - LaunchPlan: spec.LaunchPlan, - ResourceType: admin.MatchableResource_EXECUTION_CLUSTER_LABEL, - }) - if err != nil && !errors.IsDoesNotExistError(err) { - return nil, err - } var weightedRandomList random.WeightedRandomList - if resource != nil && resource.Attributes.GetExecutionClusterLabel() != nil { - label := resource.Attributes.GetExecutionClusterLabel().Value + var label string + + if spec.ExecutionClusterLabel != nil && spec.ExecutionClusterLabel.Value != "" { + label = spec.ExecutionClusterLabel.Value + logger.Debugf(ctx, "Using execution cluster label %s", label) + } else { + resource, err := s.resourceManager.GetResource(ctx, managerInterfaces.ResourceRequest{ + Project: spec.Project, + Domain: spec.Domain, + Workflow: spec.Workflow, + LaunchPlan: spec.LaunchPlan, + ResourceType: admin.MatchableResource_EXECUTION_CLUSTER_LABEL, + }) + if err != nil && !errors.IsDoesNotExistError(err) { + return nil, err + } + if resource != nil && resource.Attributes.GetExecutionClusterLabel() != nil { + label = resource.Attributes.GetExecutionClusterLabel().Value + } + } + + if label != "" { if _, ok := s.labelWeightedRandomMap[label]; ok { weightedRandomList = s.labelWeightedRandomMap[label] } else { diff --git a/flyteadmin/pkg/executioncluster/impl/random_cluster_selector_test.go b/flyteadmin/pkg/executioncluster/impl/random_cluster_selector_test.go index 0564a054473..955d7401001 100644 --- a/flyteadmin/pkg/executioncluster/impl/random_cluster_selector_test.go +++ b/flyteadmin/pkg/executioncluster/impl/random_cluster_selector_test.go @@ -307,3 +307,35 @@ func TestRandomClusterSelectorGetTargetWithFallbackToDefault3(t *testing.T) { assert.Equal(t, testCluster1, target.ID) assert.True(t, target.Enabled) } + +func TestRandomClusterSelectorGetTargetWithExecutionClusterLabelClusterAssignmentOne(t *testing.T) { + cluster := getRandomClusterSelectorWithDefaultLabelForTest(t, clusterConfig2WithDefaultLabel) + target, err := cluster.GetTarget(context.Background(), &executioncluster.ExecutionTargetSpec{ + Project: testProject, + Domain: "different", + Workflow: testWorkflow, + ExecutionID: "e3", + ExecutionClusterLabel: &admin.ExecutionClusterLabel{ + Value: "one", + }, + }) + assert.Nil(t, err) + assert.Equal(t, "testcluster1", target.ID) + assert.True(t, target.Enabled) +} + +func TestRandomClusterSelectorGetTargetWithExecutionClusterLabelClusterAssignmentThree(t *testing.T) { + cluster := getRandomClusterSelectorWithDefaultLabelForTest(t, clusterConfig2WithDefaultLabel) + target, err := cluster.GetTarget(context.Background(), &executioncluster.ExecutionTargetSpec{ + Project: testProject, + Domain: "different", + Workflow: testWorkflow, + ExecutionID: "e3", + ExecutionClusterLabel: &admin.ExecutionClusterLabel{ + Value: "three", + }, + }) + assert.Nil(t, err) + assert.Equal(t, "testcluster3", target.ID) + assert.True(t, target.Enabled) +} diff --git a/flyteadmin/pkg/manager/impl/execution_manager.go b/flyteadmin/pkg/manager/impl/execution_manager.go index 16a36f895f8..e3fd87ba714 100644 --- a/flyteadmin/pkg/manager/impl/execution_manager.go +++ b/flyteadmin/pkg/manager/impl/execution_manager.go @@ -547,17 +547,22 @@ func (m *ExecutionManager) launchSingleTaskExecution( return nil, nil, err } + var executionClusterLabel *admin.ExecutionClusterLabel + if requestSpec.ExecutionClusterLabel != nil { + executionClusterLabel = requestSpec.ExecutionClusterLabel + } executionParameters := workflowengineInterfaces.ExecutionParameters{ - Inputs: executionInputs, - AcceptedAt: requestedAt, - Labels: labels, - Annotations: annotations, - ExecutionConfig: executionConfig, - TaskResources: &platformTaskResources, - EventVersion: m.config.ApplicationConfiguration().GetTopLevelConfig().EventVersion, - RoleNameKey: m.config.ApplicationConfiguration().GetTopLevelConfig().RoleNameKey, - RawOutputDataConfig: rawOutputDataConfig, - ClusterAssignment: clusterAssignment, + Inputs: executionInputs, + AcceptedAt: requestedAt, + Labels: labels, + Annotations: annotations, + ExecutionConfig: executionConfig, + TaskResources: &platformTaskResources, + EventVersion: m.config.ApplicationConfiguration().GetTopLevelConfig().EventVersion, + RoleNameKey: m.config.ApplicationConfiguration().GetTopLevelConfig().RoleNameKey, + RawOutputDataConfig: rawOutputDataConfig, + ClusterAssignment: clusterAssignment, + ExecutionClusterLabel: executionClusterLabel, } overrides, err := m.addPluginOverrides(ctx, &workflowExecutionID, workflowExecutionID.Name, "") @@ -947,17 +952,23 @@ func (m *ExecutionManager) launchExecutionAndPrepareModel( return nil, nil, err } + var executionClusterLabel *admin.ExecutionClusterLabel + if requestSpec.ExecutionClusterLabel != nil { + executionClusterLabel = requestSpec.ExecutionClusterLabel + } + executionParameters := workflowengineInterfaces.ExecutionParameters{ - Inputs: executionInputs, - AcceptedAt: requestedAt, - Labels: labels, - Annotations: annotations, - ExecutionConfig: executionConfig, - TaskResources: &platformTaskResources, - EventVersion: m.config.ApplicationConfiguration().GetTopLevelConfig().EventVersion, - RoleNameKey: m.config.ApplicationConfiguration().GetTopLevelConfig().RoleNameKey, - RawOutputDataConfig: rawOutputDataConfig, - ClusterAssignment: clusterAssignment, + Inputs: executionInputs, + AcceptedAt: requestedAt, + Labels: labels, + Annotations: annotations, + ExecutionConfig: executionConfig, + TaskResources: &platformTaskResources, + EventVersion: m.config.ApplicationConfiguration().GetTopLevelConfig().EventVersion, + RoleNameKey: m.config.ApplicationConfiguration().GetTopLevelConfig().RoleNameKey, + RawOutputDataConfig: rawOutputDataConfig, + ClusterAssignment: clusterAssignment, + ExecutionClusterLabel: executionClusterLabel, } overrides, err := m.addPluginOverrides(ctx, &workflowExecutionID, launchPlan.GetSpec().WorkflowId.Name, launchPlan.Id.Name) diff --git a/flyteadmin/pkg/manager/impl/execution_manager_test.go b/flyteadmin/pkg/manager/impl/execution_manager_test.go index d6a05cc214e..52ff6077257 100644 --- a/flyteadmin/pkg/manager/impl/execution_manager_test.go +++ b/flyteadmin/pkg/manager/impl/execution_manager_test.go @@ -54,8 +54,9 @@ import ( ) const ( - principal = "principal" - rawOutput = "raw_output" + principal = "principal" + rawOutput = "raw_output" + executionClusterLabel = "execution_cluster_label" ) var spec = testutils.GetExecutionRequest().Spec @@ -383,6 +384,7 @@ func TestCreateExecution(t *testing.T) { } request.Spec.RawOutputDataConfig = &admin.RawOutputDataConfig{OutputLocationPrefix: rawOutput} request.Spec.ClusterAssignment = &clusterAssignment + request.Spec.ExecutionClusterLabel = &admin.ExecutionClusterLabel{Value: executionClusterLabel} identity, err := auth.NewIdentityContext("", principal, "", time.Now(), sets.NewString(), nil, nil) assert.NoError(t, err) diff --git a/flyteadmin/pkg/server/service.go b/flyteadmin/pkg/server/service.go index 3a2eff220db..ff80c343d39 100644 --- a/flyteadmin/pkg/server/service.go +++ b/flyteadmin/pkg/server/service.go @@ -4,7 +4,6 @@ import ( "context" "crypto/tls" "fmt" - "google.golang.org/protobuf/encoding/protojson" "net" "net/http" "strings" @@ -24,6 +23,7 @@ import ( "google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/metadata" "google.golang.org/grpc/reflection" + "google.golang.org/protobuf/encoding/protojson" "k8s.io/apimachinery/pkg/util/rand" "github.com/flyteorg/flyte/flyteadmin/auth" diff --git a/flyteadmin/pkg/workflowengine/impl/k8s_executor.go b/flyteadmin/pkg/workflowengine/impl/k8s_executor.go index a141b14de90..f90051fabe4 100644 --- a/flyteadmin/pkg/workflowengine/impl/k8s_executor.go +++ b/flyteadmin/pkg/workflowengine/impl/k8s_executor.go @@ -56,11 +56,12 @@ func (e K8sWorkflowExecutor) Execute(ctx context.Context, data interfaces.Execut } executionTargetSpec := executioncluster.ExecutionTargetSpec{ - Project: data.ExecutionID.Project, - Domain: data.ExecutionID.Domain, - Workflow: data.ReferenceWorkflowName, - LaunchPlan: data.ReferenceWorkflowName, - ExecutionID: data.ExecutionID.Name, + Project: data.ExecutionID.Project, + Domain: data.ExecutionID.Domain, + Workflow: data.ReferenceWorkflowName, + LaunchPlan: data.ReferenceWorkflowName, + ExecutionID: data.ExecutionID.Name, + ExecutionClusterLabel: data.ExecutionParameters.ExecutionClusterLabel, } targetCluster, err := e.executionCluster.GetTarget(ctx, &executionTargetSpec) if err != nil { diff --git a/flyteadmin/pkg/workflowengine/interfaces/executor.go b/flyteadmin/pkg/workflowengine/interfaces/executor.go index 726423c3338..181986c2c34 100644 --- a/flyteadmin/pkg/workflowengine/interfaces/executor.go +++ b/flyteadmin/pkg/workflowengine/interfaces/executor.go @@ -18,18 +18,19 @@ type TaskResources struct { } type ExecutionParameters struct { - Inputs *core.LiteralMap - AcceptedAt time.Time - Labels map[string]string - Annotations map[string]string - TaskPluginOverrides []*admin.PluginOverride - ExecutionConfig *admin.WorkflowExecutionConfig - RecoveryExecution *core.WorkflowExecutionIdentifier - TaskResources *TaskResources - EventVersion int - RoleNameKey string - RawOutputDataConfig *admin.RawOutputDataConfig - ClusterAssignment *admin.ClusterAssignment + Inputs *core.LiteralMap + AcceptedAt time.Time + Labels map[string]string + Annotations map[string]string + TaskPluginOverrides []*admin.PluginOverride + ExecutionConfig *admin.WorkflowExecutionConfig + RecoveryExecution *core.WorkflowExecutionIdentifier + TaskResources *TaskResources + EventVersion int + RoleNameKey string + RawOutputDataConfig *admin.RawOutputDataConfig + ClusterAssignment *admin.ClusterAssignment + ExecutionClusterLabel *admin.ExecutionClusterLabel } // ExecutionData includes all parameters required to create an execution CRD object. diff --git a/flyteadmin/tests/project_test.go b/flyteadmin/tests/project_test.go index daf3c792f7f..0534ca1f3af 100644 --- a/flyteadmin/tests/project_test.go +++ b/flyteadmin/tests/project_test.go @@ -5,13 +5,13 @@ package tests import ( "context" - "github.com/flyteorg/flyte/flytestdlib/utils" "testing" "github.com/stretchr/testify/assert" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" + "github.com/flyteorg/flyte/flytestdlib/utils" ) func TestCreateProject(t *testing.T) { diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 226588a131b..dcbfa5ce372 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -5016,6 +5016,10 @@ "type": "string" }, "description": "Tags to be set for the execution." + }, + "execution_cluster_label": { + "$ref": "#/definitions/adminExecutionClusterLabel", + "description": "Execution cluster label to be set for the execution." } }, "description": "An ExecutionSpec encompasses all data used to launch this execution. The Spec does not change over the lifetime\nof an execution as it progresses across phase changes." diff --git a/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts b/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts index bce98af489c..185455bcb57 100644 --- a/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts @@ -12,6 +12,7 @@ import { Annotations, AuthRole, Envs, Labels, Notification, RawOutputDataConfig, import { ArtifactID } from "../core/artifact_id_pb.js"; import { SecurityContext } from "../core/security_pb.js"; import { ClusterAssignment } from "./cluster_assignment_pb.js"; +import { ExecutionClusterLabel } from "./matchable_resource_pb.js"; import { Span } from "../core/metrics_pb.js"; /** @@ -1115,6 +1116,13 @@ export class ExecutionSpec extends Message { */ tags: string[] = []; + /** + * Execution cluster label to be set for the execution. + * + * @generated from field: flyteidl.admin.ExecutionClusterLabel execution_cluster_label = 25; + */ + executionClusterLabel?: ExecutionClusterLabel; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -1140,6 +1148,7 @@ export class ExecutionSpec extends Message { { no: 22, name: "overwrite_cache", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 23, name: "envs", kind: "message", T: Envs }, { no: 24, name: "tags", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 25, name: "execution_cluster_label", kind: "message", T: ExecutionClusterLabel }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): ExecutionSpec { diff --git a/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go index e288f658adb..3fe65e1b887 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go @@ -1267,6 +1267,8 @@ type ExecutionSpec struct { Envs *Envs `protobuf:"bytes,23,opt,name=envs,proto3" json:"envs,omitempty"` // Tags to be set for the execution. Tags []string `protobuf:"bytes,24,rep,name=tags,proto3" json:"tags,omitempty"` + // Execution cluster label to be set for the execution. + ExecutionClusterLabel *ExecutionClusterLabel `protobuf:"bytes,25,opt,name=execution_cluster_label,json=executionClusterLabel,proto3" json:"execution_cluster_label,omitempty"` } func (x *ExecutionSpec) Reset() { @@ -1429,6 +1431,13 @@ func (x *ExecutionSpec) GetTags() []string { return nil } +func (x *ExecutionSpec) GetExecutionClusterLabel() *ExecutionClusterLabel { + if x != nil { + return x.ExecutionClusterLabel + } + return nil +} + type isExecutionSpec_NotificationOverrides interface { isExecutionSpec_NotificationOverrides() } @@ -1980,337 +1989,345 @@ var file_flyteidl_admin_execution_proto_rawDesc = []byte{ 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xd6, 0x01, 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, 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, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x31, 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, 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, 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, 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, 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, 0x90, 0x08, 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, + 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, 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, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 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, 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, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x61, 0x67, 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, + 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, 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, 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, + 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, 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, 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, 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, + 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, - 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, + 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, 0xef, 0x08, 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, 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, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 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, 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, 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, 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, + 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, } var ( @@ -2372,8 +2389,9 @@ var file_flyteidl_admin_execution_proto_goTypes = []interface{}{ (*ClusterAssignment)(nil), // 41: flyteidl.admin.ClusterAssignment (*wrapperspb.BoolValue)(nil), // 42: google.protobuf.BoolValue (*Envs)(nil), // 43: flyteidl.admin.Envs - (*UrlBlob)(nil), // 44: flyteidl.admin.UrlBlob - (*core.Span)(nil), // 45: flyteidl.core.Span + (*ExecutionClusterLabel)(nil), // 44: flyteidl.admin.ExecutionClusterLabel + (*UrlBlob)(nil), // 45: flyteidl.admin.UrlBlob + (*core.Span)(nil), // 46: flyteidl.core.Span } var file_flyteidl_admin_execution_proto_depIdxs = []int32{ 15, // 0: flyteidl.admin.ExecutionCreateRequest.spec:type_name -> flyteidl.admin.ExecutionSpec @@ -2421,23 +2439,24 @@ var file_flyteidl_admin_execution_proto_depIdxs = []int32{ 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 - 26, // 45: flyteidl.admin.ExecutionTerminateRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 26, // 46: flyteidl.admin.WorkflowExecutionGetDataRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 44, // 47: flyteidl.admin.WorkflowExecutionGetDataResponse.outputs:type_name -> flyteidl.admin.UrlBlob - 44, // 48: flyteidl.admin.WorkflowExecutionGetDataResponse.inputs:type_name -> flyteidl.admin.UrlBlob - 25, // 49: flyteidl.admin.WorkflowExecutionGetDataResponse.full_inputs:type_name -> flyteidl.core.LiteralMap - 25, // 50: flyteidl.admin.WorkflowExecutionGetDataResponse.full_outputs:type_name -> flyteidl.core.LiteralMap - 26, // 51: flyteidl.admin.ExecutionUpdateRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 0, // 52: flyteidl.admin.ExecutionUpdateRequest.state:type_name -> flyteidl.admin.ExecutionState - 0, // 53: flyteidl.admin.ExecutionStateChangeDetails.state:type_name -> flyteidl.admin.ExecutionState - 29, // 54: flyteidl.admin.ExecutionStateChangeDetails.occurred_at:type_name -> google.protobuf.Timestamp - 26, // 55: flyteidl.admin.WorkflowExecutionGetMetricsRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 45, // 56: flyteidl.admin.WorkflowExecutionGetMetricsResponse.span:type_name -> flyteidl.core.Span - 57, // [57:57] is the sub-list for method output_type - 57, // [57:57] is the sub-list for method input_type - 57, // [57:57] is the sub-list for extension type_name - 57, // [57:57] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 44, // 45: flyteidl.admin.ExecutionSpec.execution_cluster_label:type_name -> flyteidl.admin.ExecutionClusterLabel + 26, // 46: flyteidl.admin.ExecutionTerminateRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 26, // 47: flyteidl.admin.WorkflowExecutionGetDataRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 45, // 48: flyteidl.admin.WorkflowExecutionGetDataResponse.outputs:type_name -> flyteidl.admin.UrlBlob + 45, // 49: flyteidl.admin.WorkflowExecutionGetDataResponse.inputs:type_name -> flyteidl.admin.UrlBlob + 25, // 50: flyteidl.admin.WorkflowExecutionGetDataResponse.full_inputs:type_name -> flyteidl.core.LiteralMap + 25, // 51: flyteidl.admin.WorkflowExecutionGetDataResponse.full_outputs:type_name -> flyteidl.core.LiteralMap + 26, // 52: flyteidl.admin.ExecutionUpdateRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 0, // 53: flyteidl.admin.ExecutionUpdateRequest.state:type_name -> flyteidl.admin.ExecutionState + 0, // 54: flyteidl.admin.ExecutionStateChangeDetails.state:type_name -> flyteidl.admin.ExecutionState + 29, // 55: flyteidl.admin.ExecutionStateChangeDetails.occurred_at:type_name -> google.protobuf.Timestamp + 26, // 56: flyteidl.admin.WorkflowExecutionGetMetricsRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 46, // 57: flyteidl.admin.WorkflowExecutionGetMetricsResponse.span:type_name -> flyteidl.core.Span + 58, // [58:58] is the sub-list for method output_type + 58, // [58:58] is the sub-list for method input_type + 58, // [58:58] is the sub-list for extension type_name + 58, // [58:58] is the sub-list for extension extendee + 0, // [0:58] is the sub-list for field type_name } func init() { file_flyteidl_admin_execution_proto_init() } @@ -2447,6 +2466,7 @@ func file_flyteidl_admin_execution_proto_init() { } file_flyteidl_admin_cluster_assignment_proto_init() file_flyteidl_admin_common_proto_init() + file_flyteidl_admin_matchable_resource_proto_init() if !protoimpl.UnsafeEnabled { file_flyteidl_admin_execution_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecutionCreateRequest); i { 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 226588a131b..dcbfa5ce372 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -5016,6 +5016,10 @@ "type": "string" }, "description": "Tags to be set for the execution." + }, + "execution_cluster_label": { + "$ref": "#/definitions/adminExecutionClusterLabel", + "description": "Execution cluster label to be set for the execution." } }, "description": "An ExecutionSpec encompasses all data used to launch this execution. The Spec does not change over the lifetime\nof an execution as it progresses across phase changes." diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 8c1034865ba..a09e5aa7b9a 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -13928,6 +13928,9 @@ export namespace flyteidl { /** ExecutionSpec tags */ tags?: (string[]|null); + + /** ExecutionSpec executionClusterLabel */ + executionClusterLabel?: (flyteidl.admin.IExecutionClusterLabel|null); } /** Represents an ExecutionSpec. */ @@ -13990,6 +13993,9 @@ export namespace flyteidl { /** ExecutionSpec tags. */ public tags: string[]; + /** ExecutionSpec executionClusterLabel. */ + public executionClusterLabel?: (flyteidl.admin.IExecutionClusterLabel|null); + /** ExecutionSpec notificationOverrides. */ public notificationOverrides?: ("notifications"|"disableAll"); @@ -14536,1816 +14542,1816 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } - /** Properties of a LaunchPlanCreateRequest. */ - interface ILaunchPlanCreateRequest { + /** MatchableResource enum. */ + enum MatchableResource { + TASK_RESOURCE = 0, + CLUSTER_RESOURCE = 1, + EXECUTION_QUEUE = 2, + EXECUTION_CLUSTER_LABEL = 3, + QUALITY_OF_SERVICE_SPECIFICATION = 4, + PLUGIN_OVERRIDE = 5, + WORKFLOW_EXECUTION_CONFIG = 6, + CLUSTER_ASSIGNMENT = 7 + } - /** LaunchPlanCreateRequest id */ - id?: (flyteidl.core.IIdentifier|null); + /** Properties of a TaskResourceSpec. */ + interface ITaskResourceSpec { - /** LaunchPlanCreateRequest spec */ - spec?: (flyteidl.admin.ILaunchPlanSpec|null); + /** TaskResourceSpec cpu */ + cpu?: (string|null); + + /** TaskResourceSpec gpu */ + gpu?: (string|null); + + /** TaskResourceSpec memory */ + memory?: (string|null); + + /** TaskResourceSpec storage */ + storage?: (string|null); + + /** TaskResourceSpec ephemeralStorage */ + ephemeralStorage?: (string|null); } - /** Represents a LaunchPlanCreateRequest. */ - class LaunchPlanCreateRequest implements ILaunchPlanCreateRequest { + /** Represents a TaskResourceSpec. */ + class TaskResourceSpec implements ITaskResourceSpec { /** - * Constructs a new LaunchPlanCreateRequest. + * Constructs a new TaskResourceSpec. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ILaunchPlanCreateRequest); + constructor(properties?: flyteidl.admin.ITaskResourceSpec); - /** LaunchPlanCreateRequest id. */ - public id?: (flyteidl.core.IIdentifier|null); + /** TaskResourceSpec cpu. */ + public cpu: string; - /** LaunchPlanCreateRequest spec. */ - public spec?: (flyteidl.admin.ILaunchPlanSpec|null); + /** TaskResourceSpec gpu. */ + public gpu: string; + + /** TaskResourceSpec memory. */ + public memory: string; + + /** TaskResourceSpec storage. */ + public storage: string; + + /** TaskResourceSpec ephemeralStorage. */ + public ephemeralStorage: string; /** - * Creates a new LaunchPlanCreateRequest instance using the specified properties. + * Creates a new TaskResourceSpec instance using the specified properties. * @param [properties] Properties to set - * @returns LaunchPlanCreateRequest instance + * @returns TaskResourceSpec instance */ - public static create(properties?: flyteidl.admin.ILaunchPlanCreateRequest): flyteidl.admin.LaunchPlanCreateRequest; + public static create(properties?: flyteidl.admin.ITaskResourceSpec): flyteidl.admin.TaskResourceSpec; /** - * Encodes the specified LaunchPlanCreateRequest message. Does not implicitly {@link flyteidl.admin.LaunchPlanCreateRequest.verify|verify} messages. - * @param message LaunchPlanCreateRequest message or plain object to encode + * Encodes the specified TaskResourceSpec message. Does not implicitly {@link flyteidl.admin.TaskResourceSpec.verify|verify} messages. + * @param message TaskResourceSpec message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ILaunchPlanCreateRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ITaskResourceSpec, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LaunchPlanCreateRequest message from the specified reader or buffer. + * Decodes a TaskResourceSpec message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LaunchPlanCreateRequest + * @returns TaskResourceSpec * @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.admin.LaunchPlanCreateRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.TaskResourceSpec; /** - * Verifies a LaunchPlanCreateRequest message. + * Verifies a TaskResourceSpec 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 LaunchPlanCreateResponse. */ - interface ILaunchPlanCreateResponse { + /** Properties of a TaskResourceAttributes. */ + interface ITaskResourceAttributes { + + /** TaskResourceAttributes defaults */ + defaults?: (flyteidl.admin.ITaskResourceSpec|null); + + /** TaskResourceAttributes limits */ + limits?: (flyteidl.admin.ITaskResourceSpec|null); } - /** Represents a LaunchPlanCreateResponse. */ - class LaunchPlanCreateResponse implements ILaunchPlanCreateResponse { + /** Represents a TaskResourceAttributes. */ + class TaskResourceAttributes implements ITaskResourceAttributes { /** - * Constructs a new LaunchPlanCreateResponse. + * Constructs a new TaskResourceAttributes. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ILaunchPlanCreateResponse); + constructor(properties?: flyteidl.admin.ITaskResourceAttributes); + + /** TaskResourceAttributes defaults. */ + public defaults?: (flyteidl.admin.ITaskResourceSpec|null); + + /** TaskResourceAttributes limits. */ + public limits?: (flyteidl.admin.ITaskResourceSpec|null); /** - * Creates a new LaunchPlanCreateResponse instance using the specified properties. + * Creates a new TaskResourceAttributes instance using the specified properties. * @param [properties] Properties to set - * @returns LaunchPlanCreateResponse instance + * @returns TaskResourceAttributes instance */ - public static create(properties?: flyteidl.admin.ILaunchPlanCreateResponse): flyteidl.admin.LaunchPlanCreateResponse; + public static create(properties?: flyteidl.admin.ITaskResourceAttributes): flyteidl.admin.TaskResourceAttributes; /** - * Encodes the specified LaunchPlanCreateResponse message. Does not implicitly {@link flyteidl.admin.LaunchPlanCreateResponse.verify|verify} messages. - * @param message LaunchPlanCreateResponse message or plain object to encode + * Encodes the specified TaskResourceAttributes message. Does not implicitly {@link flyteidl.admin.TaskResourceAttributes.verify|verify} messages. + * @param message TaskResourceAttributes message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ILaunchPlanCreateResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ITaskResourceAttributes, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LaunchPlanCreateResponse message from the specified reader or buffer. + * Decodes a TaskResourceAttributes message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LaunchPlanCreateResponse + * @returns TaskResourceAttributes * @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.admin.LaunchPlanCreateResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.TaskResourceAttributes; /** - * Verifies a LaunchPlanCreateResponse message. + * Verifies a TaskResourceAttributes 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); } - /** LaunchPlanState enum. */ - enum LaunchPlanState { - INACTIVE = 0, - ACTIVE = 1 - } - - /** Properties of a LaunchPlan. */ - interface ILaunchPlan { - - /** LaunchPlan id */ - id?: (flyteidl.core.IIdentifier|null); - - /** LaunchPlan spec */ - spec?: (flyteidl.admin.ILaunchPlanSpec|null); + /** Properties of a ClusterResourceAttributes. */ + interface IClusterResourceAttributes { - /** LaunchPlan closure */ - closure?: (flyteidl.admin.ILaunchPlanClosure|null); + /** ClusterResourceAttributes attributes */ + attributes?: ({ [k: string]: string }|null); } - /** Represents a LaunchPlan. */ - class LaunchPlan implements ILaunchPlan { + /** Represents a ClusterResourceAttributes. */ + class ClusterResourceAttributes implements IClusterResourceAttributes { /** - * Constructs a new LaunchPlan. + * Constructs a new ClusterResourceAttributes. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ILaunchPlan); - - /** LaunchPlan id. */ - public id?: (flyteidl.core.IIdentifier|null); - - /** LaunchPlan spec. */ - public spec?: (flyteidl.admin.ILaunchPlanSpec|null); + constructor(properties?: flyteidl.admin.IClusterResourceAttributes); - /** LaunchPlan closure. */ - public closure?: (flyteidl.admin.ILaunchPlanClosure|null); + /** ClusterResourceAttributes attributes. */ + public attributes: { [k: string]: string }; /** - * Creates a new LaunchPlan instance using the specified properties. + * Creates a new ClusterResourceAttributes instance using the specified properties. * @param [properties] Properties to set - * @returns LaunchPlan instance + * @returns ClusterResourceAttributes instance */ - public static create(properties?: flyteidl.admin.ILaunchPlan): flyteidl.admin.LaunchPlan; + public static create(properties?: flyteidl.admin.IClusterResourceAttributes): flyteidl.admin.ClusterResourceAttributes; /** - * Encodes the specified LaunchPlan message. Does not implicitly {@link flyteidl.admin.LaunchPlan.verify|verify} messages. - * @param message LaunchPlan message or plain object to encode + * Encodes the specified ClusterResourceAttributes message. Does not implicitly {@link flyteidl.admin.ClusterResourceAttributes.verify|verify} messages. + * @param message ClusterResourceAttributes message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ILaunchPlan, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IClusterResourceAttributes, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LaunchPlan message from the specified reader or buffer. + * Decodes a ClusterResourceAttributes message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LaunchPlan + * @returns ClusterResourceAttributes * @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.admin.LaunchPlan; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.ClusterResourceAttributes; /** - * Verifies a LaunchPlan message. + * Verifies a ClusterResourceAttributes 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 LaunchPlanList. */ - interface ILaunchPlanList { - - /** LaunchPlanList launchPlans */ - launchPlans?: (flyteidl.admin.ILaunchPlan[]|null); + /** Properties of an ExecutionQueueAttributes. */ + interface IExecutionQueueAttributes { - /** LaunchPlanList token */ - token?: (string|null); + /** ExecutionQueueAttributes tags */ + tags?: (string[]|null); } - /** Represents a LaunchPlanList. */ - class LaunchPlanList implements ILaunchPlanList { + /** Represents an ExecutionQueueAttributes. */ + class ExecutionQueueAttributes implements IExecutionQueueAttributes { /** - * Constructs a new LaunchPlanList. + * Constructs a new ExecutionQueueAttributes. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ILaunchPlanList); - - /** LaunchPlanList launchPlans. */ - public launchPlans: flyteidl.admin.ILaunchPlan[]; + constructor(properties?: flyteidl.admin.IExecutionQueueAttributes); - /** LaunchPlanList token. */ - public token: string; + /** ExecutionQueueAttributes tags. */ + public tags: string[]; /** - * Creates a new LaunchPlanList instance using the specified properties. + * Creates a new ExecutionQueueAttributes instance using the specified properties. * @param [properties] Properties to set - * @returns LaunchPlanList instance + * @returns ExecutionQueueAttributes instance */ - public static create(properties?: flyteidl.admin.ILaunchPlanList): flyteidl.admin.LaunchPlanList; + public static create(properties?: flyteidl.admin.IExecutionQueueAttributes): flyteidl.admin.ExecutionQueueAttributes; /** - * Encodes the specified LaunchPlanList message. Does not implicitly {@link flyteidl.admin.LaunchPlanList.verify|verify} messages. - * @param message LaunchPlanList message or plain object to encode + * Encodes the specified ExecutionQueueAttributes message. Does not implicitly {@link flyteidl.admin.ExecutionQueueAttributes.verify|verify} messages. + * @param message ExecutionQueueAttributes message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ILaunchPlanList, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IExecutionQueueAttributes, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LaunchPlanList message from the specified reader or buffer. + * Decodes an ExecutionQueueAttributes message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LaunchPlanList + * @returns ExecutionQueueAttributes * @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.admin.LaunchPlanList; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.ExecutionQueueAttributes; /** - * Verifies a LaunchPlanList message. + * Verifies an ExecutionQueueAttributes 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 Auth. */ - interface IAuth { - - /** Auth assumableIamRole */ - assumableIamRole?: (string|null); + /** Properties of an ExecutionClusterLabel. */ + interface IExecutionClusterLabel { - /** Auth kubernetesServiceAccount */ - kubernetesServiceAccount?: (string|null); + /** ExecutionClusterLabel value */ + value?: (string|null); } - /** Represents an Auth. */ - class Auth implements IAuth { + /** Represents an ExecutionClusterLabel. */ + class ExecutionClusterLabel implements IExecutionClusterLabel { /** - * Constructs a new Auth. + * Constructs a new ExecutionClusterLabel. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IAuth); - - /** Auth assumableIamRole. */ - public assumableIamRole: string; + constructor(properties?: flyteidl.admin.IExecutionClusterLabel); - /** Auth kubernetesServiceAccount. */ - public kubernetesServiceAccount: string; + /** ExecutionClusterLabel value. */ + public value: string; /** - * Creates a new Auth instance using the specified properties. + * Creates a new ExecutionClusterLabel instance using the specified properties. * @param [properties] Properties to set - * @returns Auth instance + * @returns ExecutionClusterLabel instance */ - public static create(properties?: flyteidl.admin.IAuth): flyteidl.admin.Auth; + public static create(properties?: flyteidl.admin.IExecutionClusterLabel): flyteidl.admin.ExecutionClusterLabel; /** - * Encodes the specified Auth message. Does not implicitly {@link flyteidl.admin.Auth.verify|verify} messages. - * @param message Auth message or plain object to encode + * Encodes the specified ExecutionClusterLabel message. Does not implicitly {@link flyteidl.admin.ExecutionClusterLabel.verify|verify} messages. + * @param message ExecutionClusterLabel message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IAuth, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IExecutionClusterLabel, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Auth message from the specified reader or buffer. + * Decodes an ExecutionClusterLabel message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Auth + * @returns ExecutionClusterLabel * @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.admin.Auth; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.ExecutionClusterLabel; /** - * Verifies an Auth message. + * Verifies an ExecutionClusterLabel 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 LaunchPlanSpec. */ - interface ILaunchPlanSpec { - - /** LaunchPlanSpec workflowId */ - workflowId?: (flyteidl.core.IIdentifier|null); - - /** LaunchPlanSpec entityMetadata */ - entityMetadata?: (flyteidl.admin.ILaunchPlanMetadata|null); - - /** LaunchPlanSpec defaultInputs */ - defaultInputs?: (flyteidl.core.IParameterMap|null); - - /** LaunchPlanSpec fixedInputs */ - fixedInputs?: (flyteidl.core.ILiteralMap|null); - - /** LaunchPlanSpec role */ - role?: (string|null); - - /** LaunchPlanSpec labels */ - labels?: (flyteidl.admin.ILabels|null); - - /** LaunchPlanSpec annotations */ - annotations?: (flyteidl.admin.IAnnotations|null); - - /** LaunchPlanSpec auth */ - auth?: (flyteidl.admin.IAuth|null); - - /** LaunchPlanSpec authRole */ - authRole?: (flyteidl.admin.IAuthRole|null); - - /** LaunchPlanSpec securityContext */ - securityContext?: (flyteidl.core.ISecurityContext|null); - - /** LaunchPlanSpec qualityOfService */ - qualityOfService?: (flyteidl.core.IQualityOfService|null); - - /** LaunchPlanSpec rawOutputDataConfig */ - rawOutputDataConfig?: (flyteidl.admin.IRawOutputDataConfig|null); - - /** LaunchPlanSpec maxParallelism */ - maxParallelism?: (number|null); + /** Properties of a PluginOverride. */ + interface IPluginOverride { - /** LaunchPlanSpec interruptible */ - interruptible?: (google.protobuf.IBoolValue|null); + /** PluginOverride taskType */ + taskType?: (string|null); - /** LaunchPlanSpec overwriteCache */ - overwriteCache?: (boolean|null); + /** PluginOverride pluginId */ + pluginId?: (string[]|null); - /** LaunchPlanSpec envs */ - envs?: (flyteidl.admin.IEnvs|null); + /** PluginOverride missingPluginBehavior */ + missingPluginBehavior?: (flyteidl.admin.PluginOverride.MissingPluginBehavior|null); } - /** Represents a LaunchPlanSpec. */ - class LaunchPlanSpec implements ILaunchPlanSpec { + /** Represents a PluginOverride. */ + class PluginOverride implements IPluginOverride { /** - * Constructs a new LaunchPlanSpec. + * Constructs a new PluginOverride. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ILaunchPlanSpec); - - /** LaunchPlanSpec workflowId. */ - public workflowId?: (flyteidl.core.IIdentifier|null); - - /** LaunchPlanSpec entityMetadata. */ - public entityMetadata?: (flyteidl.admin.ILaunchPlanMetadata|null); - - /** LaunchPlanSpec defaultInputs. */ - public defaultInputs?: (flyteidl.core.IParameterMap|null); - - /** LaunchPlanSpec fixedInputs. */ - public fixedInputs?: (flyteidl.core.ILiteralMap|null); - - /** LaunchPlanSpec role. */ - public role: string; - - /** LaunchPlanSpec labels. */ - public labels?: (flyteidl.admin.ILabels|null); - - /** LaunchPlanSpec annotations. */ - public annotations?: (flyteidl.admin.IAnnotations|null); - - /** LaunchPlanSpec auth. */ - public auth?: (flyteidl.admin.IAuth|null); - - /** LaunchPlanSpec authRole. */ - public authRole?: (flyteidl.admin.IAuthRole|null); - - /** LaunchPlanSpec securityContext. */ - public securityContext?: (flyteidl.core.ISecurityContext|null); - - /** LaunchPlanSpec qualityOfService. */ - public qualityOfService?: (flyteidl.core.IQualityOfService|null); - - /** LaunchPlanSpec rawOutputDataConfig. */ - public rawOutputDataConfig?: (flyteidl.admin.IRawOutputDataConfig|null); - - /** LaunchPlanSpec maxParallelism. */ - public maxParallelism: number; + constructor(properties?: flyteidl.admin.IPluginOverride); - /** LaunchPlanSpec interruptible. */ - public interruptible?: (google.protobuf.IBoolValue|null); + /** PluginOverride taskType. */ + public taskType: string; - /** LaunchPlanSpec overwriteCache. */ - public overwriteCache: boolean; + /** PluginOverride pluginId. */ + public pluginId: string[]; - /** LaunchPlanSpec envs. */ - public envs?: (flyteidl.admin.IEnvs|null); + /** PluginOverride missingPluginBehavior. */ + public missingPluginBehavior: flyteidl.admin.PluginOverride.MissingPluginBehavior; /** - * Creates a new LaunchPlanSpec instance using the specified properties. + * Creates a new PluginOverride instance using the specified properties. * @param [properties] Properties to set - * @returns LaunchPlanSpec instance + * @returns PluginOverride instance */ - public static create(properties?: flyteidl.admin.ILaunchPlanSpec): flyteidl.admin.LaunchPlanSpec; + public static create(properties?: flyteidl.admin.IPluginOverride): flyteidl.admin.PluginOverride; /** - * Encodes the specified LaunchPlanSpec message. Does not implicitly {@link flyteidl.admin.LaunchPlanSpec.verify|verify} messages. - * @param message LaunchPlanSpec message or plain object to encode + * Encodes the specified PluginOverride message. Does not implicitly {@link flyteidl.admin.PluginOverride.verify|verify} messages. + * @param message PluginOverride message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ILaunchPlanSpec, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IPluginOverride, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LaunchPlanSpec message from the specified reader or buffer. + * Decodes a PluginOverride message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LaunchPlanSpec + * @returns PluginOverride * @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.admin.LaunchPlanSpec; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.PluginOverride; /** - * Verifies a LaunchPlanSpec message. + * Verifies a PluginOverride 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 LaunchPlanClosure. */ - interface ILaunchPlanClosure { - - /** LaunchPlanClosure state */ - state?: (flyteidl.admin.LaunchPlanState|null); - - /** LaunchPlanClosure expectedInputs */ - expectedInputs?: (flyteidl.core.IParameterMap|null); + namespace PluginOverride { - /** LaunchPlanClosure expectedOutputs */ - expectedOutputs?: (flyteidl.core.IVariableMap|null); + /** MissingPluginBehavior enum. */ + enum MissingPluginBehavior { + FAIL = 0, + USE_DEFAULT = 1 + } + } - /** LaunchPlanClosure createdAt */ - createdAt?: (google.protobuf.ITimestamp|null); + /** Properties of a PluginOverrides. */ + interface IPluginOverrides { - /** LaunchPlanClosure updatedAt */ - updatedAt?: (google.protobuf.ITimestamp|null); + /** PluginOverrides overrides */ + overrides?: (flyteidl.admin.IPluginOverride[]|null); } - /** Represents a LaunchPlanClosure. */ - class LaunchPlanClosure implements ILaunchPlanClosure { + /** Represents a PluginOverrides. */ + class PluginOverrides implements IPluginOverrides { /** - * Constructs a new LaunchPlanClosure. + * Constructs a new PluginOverrides. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ILaunchPlanClosure); - - /** LaunchPlanClosure state. */ - public state: flyteidl.admin.LaunchPlanState; - - /** LaunchPlanClosure expectedInputs. */ - public expectedInputs?: (flyteidl.core.IParameterMap|null); - - /** LaunchPlanClosure expectedOutputs. */ - public expectedOutputs?: (flyteidl.core.IVariableMap|null); - - /** LaunchPlanClosure createdAt. */ - public createdAt?: (google.protobuf.ITimestamp|null); + constructor(properties?: flyteidl.admin.IPluginOverrides); - /** LaunchPlanClosure updatedAt. */ - public updatedAt?: (google.protobuf.ITimestamp|null); + /** PluginOverrides overrides. */ + public overrides: flyteidl.admin.IPluginOverride[]; /** - * Creates a new LaunchPlanClosure instance using the specified properties. + * Creates a new PluginOverrides instance using the specified properties. * @param [properties] Properties to set - * @returns LaunchPlanClosure instance + * @returns PluginOverrides instance */ - public static create(properties?: flyteidl.admin.ILaunchPlanClosure): flyteidl.admin.LaunchPlanClosure; + public static create(properties?: flyteidl.admin.IPluginOverrides): flyteidl.admin.PluginOverrides; /** - * Encodes the specified LaunchPlanClosure message. Does not implicitly {@link flyteidl.admin.LaunchPlanClosure.verify|verify} messages. - * @param message LaunchPlanClosure message or plain object to encode + * Encodes the specified PluginOverrides message. Does not implicitly {@link flyteidl.admin.PluginOverrides.verify|verify} messages. + * @param message PluginOverrides message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ILaunchPlanClosure, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IPluginOverrides, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LaunchPlanClosure message from the specified reader or buffer. + * Decodes a PluginOverrides message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LaunchPlanClosure + * @returns PluginOverrides * @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.admin.LaunchPlanClosure; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.PluginOverrides; /** - * Verifies a LaunchPlanClosure message. + * Verifies a PluginOverrides 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 LaunchPlanMetadata. */ - interface ILaunchPlanMetadata { + /** Properties of a WorkflowExecutionConfig. */ + interface IWorkflowExecutionConfig { - /** LaunchPlanMetadata schedule */ - schedule?: (flyteidl.admin.ISchedule|null); + /** WorkflowExecutionConfig maxParallelism */ + maxParallelism?: (number|null); - /** LaunchPlanMetadata notifications */ - notifications?: (flyteidl.admin.INotification[]|null); + /** WorkflowExecutionConfig securityContext */ + securityContext?: (flyteidl.core.ISecurityContext|null); - /** LaunchPlanMetadata launchConditions */ - launchConditions?: (google.protobuf.IAny|null); + /** WorkflowExecutionConfig rawOutputDataConfig */ + rawOutputDataConfig?: (flyteidl.admin.IRawOutputDataConfig|null); + + /** WorkflowExecutionConfig labels */ + labels?: (flyteidl.admin.ILabels|null); + + /** WorkflowExecutionConfig annotations */ + annotations?: (flyteidl.admin.IAnnotations|null); + + /** WorkflowExecutionConfig interruptible */ + interruptible?: (google.protobuf.IBoolValue|null); + + /** WorkflowExecutionConfig overwriteCache */ + overwriteCache?: (boolean|null); + + /** WorkflowExecutionConfig envs */ + envs?: (flyteidl.admin.IEnvs|null); } - /** Represents a LaunchPlanMetadata. */ - class LaunchPlanMetadata implements ILaunchPlanMetadata { + /** Represents a WorkflowExecutionConfig. */ + class WorkflowExecutionConfig implements IWorkflowExecutionConfig { /** - * Constructs a new LaunchPlanMetadata. + * Constructs a new WorkflowExecutionConfig. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ILaunchPlanMetadata); + constructor(properties?: flyteidl.admin.IWorkflowExecutionConfig); - /** LaunchPlanMetadata schedule. */ - public schedule?: (flyteidl.admin.ISchedule|null); + /** WorkflowExecutionConfig maxParallelism. */ + public maxParallelism: number; - /** LaunchPlanMetadata notifications. */ - public notifications: flyteidl.admin.INotification[]; + /** WorkflowExecutionConfig securityContext. */ + public securityContext?: (flyteidl.core.ISecurityContext|null); - /** LaunchPlanMetadata launchConditions. */ - public launchConditions?: (google.protobuf.IAny|null); + /** WorkflowExecutionConfig rawOutputDataConfig. */ + public rawOutputDataConfig?: (flyteidl.admin.IRawOutputDataConfig|null); + + /** WorkflowExecutionConfig labels. */ + public labels?: (flyteidl.admin.ILabels|null); + + /** WorkflowExecutionConfig annotations. */ + public annotations?: (flyteidl.admin.IAnnotations|null); + + /** WorkflowExecutionConfig interruptible. */ + public interruptible?: (google.protobuf.IBoolValue|null); + + /** WorkflowExecutionConfig overwriteCache. */ + public overwriteCache: boolean; + + /** WorkflowExecutionConfig envs. */ + public envs?: (flyteidl.admin.IEnvs|null); /** - * Creates a new LaunchPlanMetadata instance using the specified properties. + * Creates a new WorkflowExecutionConfig instance using the specified properties. * @param [properties] Properties to set - * @returns LaunchPlanMetadata instance + * @returns WorkflowExecutionConfig instance */ - public static create(properties?: flyteidl.admin.ILaunchPlanMetadata): flyteidl.admin.LaunchPlanMetadata; + public static create(properties?: flyteidl.admin.IWorkflowExecutionConfig): flyteidl.admin.WorkflowExecutionConfig; /** - * Encodes the specified LaunchPlanMetadata message. Does not implicitly {@link flyteidl.admin.LaunchPlanMetadata.verify|verify} messages. - * @param message LaunchPlanMetadata message or plain object to encode + * Encodes the specified WorkflowExecutionConfig message. Does not implicitly {@link flyteidl.admin.WorkflowExecutionConfig.verify|verify} messages. + * @param message WorkflowExecutionConfig message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ILaunchPlanMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IWorkflowExecutionConfig, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LaunchPlanMetadata message from the specified reader or buffer. + * Decodes a WorkflowExecutionConfig message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LaunchPlanMetadata + * @returns WorkflowExecutionConfig * @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.admin.LaunchPlanMetadata; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.WorkflowExecutionConfig; /** - * Verifies a LaunchPlanMetadata message. + * Verifies a WorkflowExecutionConfig 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 LaunchPlanUpdateRequest. */ - interface ILaunchPlanUpdateRequest { + /** Properties of a MatchingAttributes. */ + interface IMatchingAttributes { - /** LaunchPlanUpdateRequest id */ - id?: (flyteidl.core.IIdentifier|null); + /** MatchingAttributes taskResourceAttributes */ + taskResourceAttributes?: (flyteidl.admin.ITaskResourceAttributes|null); - /** LaunchPlanUpdateRequest state */ - state?: (flyteidl.admin.LaunchPlanState|null); + /** MatchingAttributes clusterResourceAttributes */ + clusterResourceAttributes?: (flyteidl.admin.IClusterResourceAttributes|null); + + /** MatchingAttributes executionQueueAttributes */ + executionQueueAttributes?: (flyteidl.admin.IExecutionQueueAttributes|null); + + /** MatchingAttributes executionClusterLabel */ + executionClusterLabel?: (flyteidl.admin.IExecutionClusterLabel|null); + + /** MatchingAttributes qualityOfService */ + qualityOfService?: (flyteidl.core.IQualityOfService|null); + + /** MatchingAttributes pluginOverrides */ + pluginOverrides?: (flyteidl.admin.IPluginOverrides|null); + + /** MatchingAttributes workflowExecutionConfig */ + workflowExecutionConfig?: (flyteidl.admin.IWorkflowExecutionConfig|null); + + /** MatchingAttributes clusterAssignment */ + clusterAssignment?: (flyteidl.admin.IClusterAssignment|null); } - /** Represents a LaunchPlanUpdateRequest. */ - class LaunchPlanUpdateRequest implements ILaunchPlanUpdateRequest { + /** Represents a MatchingAttributes. */ + class MatchingAttributes implements IMatchingAttributes { /** - * Constructs a new LaunchPlanUpdateRequest. + * Constructs a new MatchingAttributes. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ILaunchPlanUpdateRequest); + constructor(properties?: flyteidl.admin.IMatchingAttributes); - /** LaunchPlanUpdateRequest id. */ - public id?: (flyteidl.core.IIdentifier|null); + /** MatchingAttributes taskResourceAttributes. */ + public taskResourceAttributes?: (flyteidl.admin.ITaskResourceAttributes|null); - /** LaunchPlanUpdateRequest state. */ - public state: flyteidl.admin.LaunchPlanState; + /** MatchingAttributes clusterResourceAttributes. */ + public clusterResourceAttributes?: (flyteidl.admin.IClusterResourceAttributes|null); + + /** MatchingAttributes executionQueueAttributes. */ + public executionQueueAttributes?: (flyteidl.admin.IExecutionQueueAttributes|null); + + /** MatchingAttributes executionClusterLabel. */ + public executionClusterLabel?: (flyteidl.admin.IExecutionClusterLabel|null); + + /** MatchingAttributes qualityOfService. */ + public qualityOfService?: (flyteidl.core.IQualityOfService|null); + + /** MatchingAttributes pluginOverrides. */ + public pluginOverrides?: (flyteidl.admin.IPluginOverrides|null); + + /** MatchingAttributes workflowExecutionConfig. */ + public workflowExecutionConfig?: (flyteidl.admin.IWorkflowExecutionConfig|null); + + /** MatchingAttributes clusterAssignment. */ + public clusterAssignment?: (flyteidl.admin.IClusterAssignment|null); + + /** MatchingAttributes target. */ + public target?: ("taskResourceAttributes"|"clusterResourceAttributes"|"executionQueueAttributes"|"executionClusterLabel"|"qualityOfService"|"pluginOverrides"|"workflowExecutionConfig"|"clusterAssignment"); /** - * Creates a new LaunchPlanUpdateRequest instance using the specified properties. + * Creates a new MatchingAttributes instance using the specified properties. * @param [properties] Properties to set - * @returns LaunchPlanUpdateRequest instance + * @returns MatchingAttributes instance */ - public static create(properties?: flyteidl.admin.ILaunchPlanUpdateRequest): flyteidl.admin.LaunchPlanUpdateRequest; + public static create(properties?: flyteidl.admin.IMatchingAttributes): flyteidl.admin.MatchingAttributes; /** - * Encodes the specified LaunchPlanUpdateRequest message. Does not implicitly {@link flyteidl.admin.LaunchPlanUpdateRequest.verify|verify} messages. - * @param message LaunchPlanUpdateRequest message or plain object to encode + * Encodes the specified MatchingAttributes message. Does not implicitly {@link flyteidl.admin.MatchingAttributes.verify|verify} messages. + * @param message MatchingAttributes message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ILaunchPlanUpdateRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IMatchingAttributes, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LaunchPlanUpdateRequest message from the specified reader or buffer. + * Decodes a MatchingAttributes message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LaunchPlanUpdateRequest + * @returns MatchingAttributes * @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.admin.LaunchPlanUpdateRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.MatchingAttributes; /** - * Verifies a LaunchPlanUpdateRequest message. + * Verifies a MatchingAttributes 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 LaunchPlanUpdateResponse. */ - interface ILaunchPlanUpdateResponse { + /** Properties of a MatchableAttributesConfiguration. */ + interface IMatchableAttributesConfiguration { + + /** MatchableAttributesConfiguration attributes */ + attributes?: (flyteidl.admin.IMatchingAttributes|null); + + /** MatchableAttributesConfiguration domain */ + domain?: (string|null); + + /** MatchableAttributesConfiguration project */ + project?: (string|null); + + /** MatchableAttributesConfiguration workflow */ + workflow?: (string|null); + + /** MatchableAttributesConfiguration launchPlan */ + launchPlan?: (string|null); + + /** MatchableAttributesConfiguration org */ + org?: (string|null); } - /** Represents a LaunchPlanUpdateResponse. */ - class LaunchPlanUpdateResponse implements ILaunchPlanUpdateResponse { + /** Represents a MatchableAttributesConfiguration. */ + class MatchableAttributesConfiguration implements IMatchableAttributesConfiguration { /** - * Constructs a new LaunchPlanUpdateResponse. + * Constructs a new MatchableAttributesConfiguration. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ILaunchPlanUpdateResponse); + constructor(properties?: flyteidl.admin.IMatchableAttributesConfiguration); + + /** MatchableAttributesConfiguration attributes. */ + public attributes?: (flyteidl.admin.IMatchingAttributes|null); + + /** MatchableAttributesConfiguration domain. */ + public domain: string; + + /** MatchableAttributesConfiguration project. */ + public project: string; + + /** MatchableAttributesConfiguration workflow. */ + public workflow: string; + + /** MatchableAttributesConfiguration launchPlan. */ + public launchPlan: string; + + /** MatchableAttributesConfiguration org. */ + public org: string; /** - * Creates a new LaunchPlanUpdateResponse instance using the specified properties. + * Creates a new MatchableAttributesConfiguration instance using the specified properties. * @param [properties] Properties to set - * @returns LaunchPlanUpdateResponse instance + * @returns MatchableAttributesConfiguration instance */ - public static create(properties?: flyteidl.admin.ILaunchPlanUpdateResponse): flyteidl.admin.LaunchPlanUpdateResponse; + public static create(properties?: flyteidl.admin.IMatchableAttributesConfiguration): flyteidl.admin.MatchableAttributesConfiguration; /** - * Encodes the specified LaunchPlanUpdateResponse message. Does not implicitly {@link flyteidl.admin.LaunchPlanUpdateResponse.verify|verify} messages. - * @param message LaunchPlanUpdateResponse message or plain object to encode + * Encodes the specified MatchableAttributesConfiguration message. Does not implicitly {@link flyteidl.admin.MatchableAttributesConfiguration.verify|verify} messages. + * @param message MatchableAttributesConfiguration message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ILaunchPlanUpdateResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IMatchableAttributesConfiguration, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LaunchPlanUpdateResponse message from the specified reader or buffer. + * Decodes a MatchableAttributesConfiguration message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LaunchPlanUpdateResponse + * @returns MatchableAttributesConfiguration * @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.admin.LaunchPlanUpdateResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.MatchableAttributesConfiguration; /** - * Verifies a LaunchPlanUpdateResponse message. + * Verifies a MatchableAttributesConfiguration 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 ActiveLaunchPlanRequest. */ - interface IActiveLaunchPlanRequest { + /** Properties of a ListMatchableAttributesRequest. */ + interface IListMatchableAttributesRequest { - /** ActiveLaunchPlanRequest id */ - id?: (flyteidl.admin.INamedEntityIdentifier|null); + /** ListMatchableAttributesRequest resourceType */ + resourceType?: (flyteidl.admin.MatchableResource|null); + + /** ListMatchableAttributesRequest org */ + org?: (string|null); } - /** Represents an ActiveLaunchPlanRequest. */ - class ActiveLaunchPlanRequest implements IActiveLaunchPlanRequest { + /** Represents a ListMatchableAttributesRequest. */ + class ListMatchableAttributesRequest implements IListMatchableAttributesRequest { /** - * Constructs a new ActiveLaunchPlanRequest. + * Constructs a new ListMatchableAttributesRequest. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IActiveLaunchPlanRequest); + constructor(properties?: flyteidl.admin.IListMatchableAttributesRequest); - /** ActiveLaunchPlanRequest id. */ - public id?: (flyteidl.admin.INamedEntityIdentifier|null); + /** ListMatchableAttributesRequest resourceType. */ + public resourceType: flyteidl.admin.MatchableResource; + + /** ListMatchableAttributesRequest org. */ + public org: string; /** - * Creates a new ActiveLaunchPlanRequest instance using the specified properties. + * Creates a new ListMatchableAttributesRequest instance using the specified properties. * @param [properties] Properties to set - * @returns ActiveLaunchPlanRequest instance + * @returns ListMatchableAttributesRequest instance */ - public static create(properties?: flyteidl.admin.IActiveLaunchPlanRequest): flyteidl.admin.ActiveLaunchPlanRequest; + public static create(properties?: flyteidl.admin.IListMatchableAttributesRequest): flyteidl.admin.ListMatchableAttributesRequest; /** - * Encodes the specified ActiveLaunchPlanRequest message. Does not implicitly {@link flyteidl.admin.ActiveLaunchPlanRequest.verify|verify} messages. - * @param message ActiveLaunchPlanRequest message or plain object to encode + * Encodes the specified ListMatchableAttributesRequest message. Does not implicitly {@link flyteidl.admin.ListMatchableAttributesRequest.verify|verify} messages. + * @param message ListMatchableAttributesRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IActiveLaunchPlanRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IListMatchableAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ActiveLaunchPlanRequest message from the specified reader or buffer. + * Decodes a ListMatchableAttributesRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ActiveLaunchPlanRequest + * @returns ListMatchableAttributesRequest * @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.admin.ActiveLaunchPlanRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.ListMatchableAttributesRequest; /** - * Verifies an ActiveLaunchPlanRequest message. + * Verifies a ListMatchableAttributesRequest 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 ActiveLaunchPlanListRequest. */ - interface IActiveLaunchPlanListRequest { - - /** ActiveLaunchPlanListRequest project */ - project?: (string|null); - - /** ActiveLaunchPlanListRequest domain */ - domain?: (string|null); - - /** ActiveLaunchPlanListRequest limit */ - limit?: (number|null); - - /** ActiveLaunchPlanListRequest token */ - token?: (string|null); - - /** ActiveLaunchPlanListRequest sortBy */ - sortBy?: (flyteidl.admin.ISort|null); + /** Properties of a ListMatchableAttributesResponse. */ + interface IListMatchableAttributesResponse { - /** ActiveLaunchPlanListRequest org */ - org?: (string|null); + /** ListMatchableAttributesResponse configurations */ + configurations?: (flyteidl.admin.IMatchableAttributesConfiguration[]|null); } - /** Represents an ActiveLaunchPlanListRequest. */ - class ActiveLaunchPlanListRequest implements IActiveLaunchPlanListRequest { + /** Represents a ListMatchableAttributesResponse. */ + class ListMatchableAttributesResponse implements IListMatchableAttributesResponse { /** - * Constructs a new ActiveLaunchPlanListRequest. + * Constructs a new ListMatchableAttributesResponse. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IActiveLaunchPlanListRequest); - - /** ActiveLaunchPlanListRequest project. */ - public project: string; - - /** ActiveLaunchPlanListRequest domain. */ - public domain: string; - - /** ActiveLaunchPlanListRequest limit. */ - public limit: number; - - /** ActiveLaunchPlanListRequest token. */ - public token: string; - - /** ActiveLaunchPlanListRequest sortBy. */ - public sortBy?: (flyteidl.admin.ISort|null); + constructor(properties?: flyteidl.admin.IListMatchableAttributesResponse); - /** ActiveLaunchPlanListRequest org. */ - public org: string; + /** ListMatchableAttributesResponse configurations. */ + public configurations: flyteidl.admin.IMatchableAttributesConfiguration[]; /** - * Creates a new ActiveLaunchPlanListRequest instance using the specified properties. + * Creates a new ListMatchableAttributesResponse instance using the specified properties. * @param [properties] Properties to set - * @returns ActiveLaunchPlanListRequest instance + * @returns ListMatchableAttributesResponse instance */ - public static create(properties?: flyteidl.admin.IActiveLaunchPlanListRequest): flyteidl.admin.ActiveLaunchPlanListRequest; + public static create(properties?: flyteidl.admin.IListMatchableAttributesResponse): flyteidl.admin.ListMatchableAttributesResponse; /** - * Encodes the specified ActiveLaunchPlanListRequest message. Does not implicitly {@link flyteidl.admin.ActiveLaunchPlanListRequest.verify|verify} messages. - * @param message ActiveLaunchPlanListRequest message or plain object to encode + * Encodes the specified ListMatchableAttributesResponse message. Does not implicitly {@link flyteidl.admin.ListMatchableAttributesResponse.verify|verify} messages. + * @param message ListMatchableAttributesResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IActiveLaunchPlanListRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IListMatchableAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ActiveLaunchPlanListRequest message from the specified reader or buffer. + * Decodes a ListMatchableAttributesResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ActiveLaunchPlanListRequest + * @returns ListMatchableAttributesResponse * @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.admin.ActiveLaunchPlanListRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.ListMatchableAttributesResponse; /** - * Verifies an ActiveLaunchPlanListRequest message. + * Verifies a ListMatchableAttributesResponse 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); } - /** FixedRateUnit enum. */ - enum FixedRateUnit { - MINUTE = 0, - HOUR = 1, - DAY = 2 - } - - /** Properties of a FixedRate. */ - interface IFixedRate { + /** Properties of a LaunchPlanCreateRequest. */ + interface ILaunchPlanCreateRequest { - /** FixedRate value */ - value?: (number|null); + /** LaunchPlanCreateRequest id */ + id?: (flyteidl.core.IIdentifier|null); - /** FixedRate unit */ - unit?: (flyteidl.admin.FixedRateUnit|null); + /** LaunchPlanCreateRequest spec */ + spec?: (flyteidl.admin.ILaunchPlanSpec|null); } - /** Represents a FixedRate. */ - class FixedRate implements IFixedRate { + /** Represents a LaunchPlanCreateRequest. */ + class LaunchPlanCreateRequest implements ILaunchPlanCreateRequest { /** - * Constructs a new FixedRate. + * Constructs a new LaunchPlanCreateRequest. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IFixedRate); + constructor(properties?: flyteidl.admin.ILaunchPlanCreateRequest); - /** FixedRate value. */ - public value: number; + /** LaunchPlanCreateRequest id. */ + public id?: (flyteidl.core.IIdentifier|null); - /** FixedRate unit. */ - public unit: flyteidl.admin.FixedRateUnit; + /** LaunchPlanCreateRequest spec. */ + public spec?: (flyteidl.admin.ILaunchPlanSpec|null); /** - * Creates a new FixedRate instance using the specified properties. + * Creates a new LaunchPlanCreateRequest instance using the specified properties. * @param [properties] Properties to set - * @returns FixedRate instance + * @returns LaunchPlanCreateRequest instance */ - public static create(properties?: flyteidl.admin.IFixedRate): flyteidl.admin.FixedRate; + public static create(properties?: flyteidl.admin.ILaunchPlanCreateRequest): flyteidl.admin.LaunchPlanCreateRequest; /** - * Encodes the specified FixedRate message. Does not implicitly {@link flyteidl.admin.FixedRate.verify|verify} messages. - * @param message FixedRate message or plain object to encode + * Encodes the specified LaunchPlanCreateRequest message. Does not implicitly {@link flyteidl.admin.LaunchPlanCreateRequest.verify|verify} messages. + * @param message LaunchPlanCreateRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IFixedRate, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ILaunchPlanCreateRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a FixedRate message from the specified reader or buffer. + * Decodes a LaunchPlanCreateRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns FixedRate + * @returns LaunchPlanCreateRequest * @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.admin.FixedRate; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.LaunchPlanCreateRequest; /** - * Verifies a FixedRate message. + * Verifies a LaunchPlanCreateRequest 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 CronSchedule. */ - interface ICronSchedule { - - /** CronSchedule schedule */ - schedule?: (string|null); - - /** CronSchedule offset */ - offset?: (string|null); + /** Properties of a LaunchPlanCreateResponse. */ + interface ILaunchPlanCreateResponse { } - /** Represents a CronSchedule. */ - class CronSchedule implements ICronSchedule { + /** Represents a LaunchPlanCreateResponse. */ + class LaunchPlanCreateResponse implements ILaunchPlanCreateResponse { /** - * Constructs a new CronSchedule. + * Constructs a new LaunchPlanCreateResponse. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ICronSchedule); - - /** CronSchedule schedule. */ - public schedule: string; - - /** CronSchedule offset. */ - public offset: string; + constructor(properties?: flyteidl.admin.ILaunchPlanCreateResponse); /** - * Creates a new CronSchedule instance using the specified properties. + * Creates a new LaunchPlanCreateResponse instance using the specified properties. * @param [properties] Properties to set - * @returns CronSchedule instance + * @returns LaunchPlanCreateResponse instance */ - public static create(properties?: flyteidl.admin.ICronSchedule): flyteidl.admin.CronSchedule; + public static create(properties?: flyteidl.admin.ILaunchPlanCreateResponse): flyteidl.admin.LaunchPlanCreateResponse; /** - * Encodes the specified CronSchedule message. Does not implicitly {@link flyteidl.admin.CronSchedule.verify|verify} messages. - * @param message CronSchedule message or plain object to encode + * Encodes the specified LaunchPlanCreateResponse message. Does not implicitly {@link flyteidl.admin.LaunchPlanCreateResponse.verify|verify} messages. + * @param message LaunchPlanCreateResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ICronSchedule, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ILaunchPlanCreateResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CronSchedule message from the specified reader or buffer. + * Decodes a LaunchPlanCreateResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CronSchedule + * @returns LaunchPlanCreateResponse * @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.admin.CronSchedule; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.LaunchPlanCreateResponse; /** - * Verifies a CronSchedule message. + * Verifies a LaunchPlanCreateResponse 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 Schedule. */ - interface ISchedule { + /** LaunchPlanState enum. */ + enum LaunchPlanState { + INACTIVE = 0, + ACTIVE = 1 + } - /** Schedule cronExpression */ - cronExpression?: (string|null); + /** Properties of a LaunchPlan. */ + interface ILaunchPlan { - /** Schedule rate */ - rate?: (flyteidl.admin.IFixedRate|null); + /** LaunchPlan id */ + id?: (flyteidl.core.IIdentifier|null); - /** Schedule cronSchedule */ - cronSchedule?: (flyteidl.admin.ICronSchedule|null); + /** LaunchPlan spec */ + spec?: (flyteidl.admin.ILaunchPlanSpec|null); - /** Schedule kickoffTimeInputArg */ - kickoffTimeInputArg?: (string|null); + /** LaunchPlan closure */ + closure?: (flyteidl.admin.ILaunchPlanClosure|null); } - /** Represents a Schedule. */ - class Schedule implements ISchedule { + /** Represents a LaunchPlan. */ + class LaunchPlan implements ILaunchPlan { /** - * Constructs a new Schedule. + * Constructs a new LaunchPlan. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ISchedule); - - /** Schedule cronExpression. */ - public cronExpression: string; - - /** Schedule rate. */ - public rate?: (flyteidl.admin.IFixedRate|null); + constructor(properties?: flyteidl.admin.ILaunchPlan); - /** Schedule cronSchedule. */ - public cronSchedule?: (flyteidl.admin.ICronSchedule|null); + /** LaunchPlan id. */ + public id?: (flyteidl.core.IIdentifier|null); - /** Schedule kickoffTimeInputArg. */ - public kickoffTimeInputArg: string; + /** LaunchPlan spec. */ + public spec?: (flyteidl.admin.ILaunchPlanSpec|null); - /** Schedule ScheduleExpression. */ - public ScheduleExpression?: ("cronExpression"|"rate"|"cronSchedule"); + /** LaunchPlan closure. */ + public closure?: (flyteidl.admin.ILaunchPlanClosure|null); /** - * Creates a new Schedule instance using the specified properties. + * Creates a new LaunchPlan instance using the specified properties. * @param [properties] Properties to set - * @returns Schedule instance + * @returns LaunchPlan instance */ - public static create(properties?: flyteidl.admin.ISchedule): flyteidl.admin.Schedule; + public static create(properties?: flyteidl.admin.ILaunchPlan): flyteidl.admin.LaunchPlan; /** - * Encodes the specified Schedule message. Does not implicitly {@link flyteidl.admin.Schedule.verify|verify} messages. - * @param message Schedule message or plain object to encode + * Encodes the specified LaunchPlan message. Does not implicitly {@link flyteidl.admin.LaunchPlan.verify|verify} messages. + * @param message LaunchPlan message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ISchedule, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ILaunchPlan, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Schedule message from the specified reader or buffer. + * Decodes a LaunchPlan message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Schedule + * @returns LaunchPlan * @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.admin.Schedule; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.LaunchPlan; /** - * Verifies a Schedule message. + * Verifies a LaunchPlan 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); } - /** MatchableResource enum. */ - enum MatchableResource { - TASK_RESOURCE = 0, - CLUSTER_RESOURCE = 1, - EXECUTION_QUEUE = 2, - EXECUTION_CLUSTER_LABEL = 3, - QUALITY_OF_SERVICE_SPECIFICATION = 4, - PLUGIN_OVERRIDE = 5, - WORKFLOW_EXECUTION_CONFIG = 6, - CLUSTER_ASSIGNMENT = 7 - } - - /** Properties of a TaskResourceSpec. */ - interface ITaskResourceSpec { - - /** TaskResourceSpec cpu */ - cpu?: (string|null); - - /** TaskResourceSpec gpu */ - gpu?: (string|null); - - /** TaskResourceSpec memory */ - memory?: (string|null); + /** Properties of a LaunchPlanList. */ + interface ILaunchPlanList { - /** TaskResourceSpec storage */ - storage?: (string|null); + /** LaunchPlanList launchPlans */ + launchPlans?: (flyteidl.admin.ILaunchPlan[]|null); - /** TaskResourceSpec ephemeralStorage */ - ephemeralStorage?: (string|null); + /** LaunchPlanList token */ + token?: (string|null); } - /** Represents a TaskResourceSpec. */ - class TaskResourceSpec implements ITaskResourceSpec { + /** Represents a LaunchPlanList. */ + class LaunchPlanList implements ILaunchPlanList { /** - * Constructs a new TaskResourceSpec. + * Constructs a new LaunchPlanList. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ITaskResourceSpec); - - /** TaskResourceSpec cpu. */ - public cpu: string; - - /** TaskResourceSpec gpu. */ - public gpu: string; - - /** TaskResourceSpec memory. */ - public memory: string; + constructor(properties?: flyteidl.admin.ILaunchPlanList); - /** TaskResourceSpec storage. */ - public storage: string; + /** LaunchPlanList launchPlans. */ + public launchPlans: flyteidl.admin.ILaunchPlan[]; - /** TaskResourceSpec ephemeralStorage. */ - public ephemeralStorage: string; + /** LaunchPlanList token. */ + public token: string; /** - * Creates a new TaskResourceSpec instance using the specified properties. + * Creates a new LaunchPlanList instance using the specified properties. * @param [properties] Properties to set - * @returns TaskResourceSpec instance + * @returns LaunchPlanList instance */ - public static create(properties?: flyteidl.admin.ITaskResourceSpec): flyteidl.admin.TaskResourceSpec; + public static create(properties?: flyteidl.admin.ILaunchPlanList): flyteidl.admin.LaunchPlanList; /** - * Encodes the specified TaskResourceSpec message. Does not implicitly {@link flyteidl.admin.TaskResourceSpec.verify|verify} messages. - * @param message TaskResourceSpec message or plain object to encode + * Encodes the specified LaunchPlanList message. Does not implicitly {@link flyteidl.admin.LaunchPlanList.verify|verify} messages. + * @param message LaunchPlanList message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ITaskResourceSpec, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ILaunchPlanList, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TaskResourceSpec message from the specified reader or buffer. + * Decodes a LaunchPlanList message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TaskResourceSpec + * @returns LaunchPlanList * @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.admin.TaskResourceSpec; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.LaunchPlanList; /** - * Verifies a TaskResourceSpec message. + * Verifies a LaunchPlanList 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 TaskResourceAttributes. */ - interface ITaskResourceAttributes { + /** Properties of an Auth. */ + interface IAuth { - /** TaskResourceAttributes defaults */ - defaults?: (flyteidl.admin.ITaskResourceSpec|null); + /** Auth assumableIamRole */ + assumableIamRole?: (string|null); - /** TaskResourceAttributes limits */ - limits?: (flyteidl.admin.ITaskResourceSpec|null); + /** Auth kubernetesServiceAccount */ + kubernetesServiceAccount?: (string|null); } - /** Represents a TaskResourceAttributes. */ - class TaskResourceAttributes implements ITaskResourceAttributes { + /** Represents an Auth. */ + class Auth implements IAuth { /** - * Constructs a new TaskResourceAttributes. + * Constructs a new Auth. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.ITaskResourceAttributes); + constructor(properties?: flyteidl.admin.IAuth); - /** TaskResourceAttributes defaults. */ - public defaults?: (flyteidl.admin.ITaskResourceSpec|null); + /** Auth assumableIamRole. */ + public assumableIamRole: string; - /** TaskResourceAttributes limits. */ - public limits?: (flyteidl.admin.ITaskResourceSpec|null); + /** Auth kubernetesServiceAccount. */ + public kubernetesServiceAccount: string; /** - * Creates a new TaskResourceAttributes instance using the specified properties. + * Creates a new Auth instance using the specified properties. * @param [properties] Properties to set - * @returns TaskResourceAttributes instance + * @returns Auth instance */ - public static create(properties?: flyteidl.admin.ITaskResourceAttributes): flyteidl.admin.TaskResourceAttributes; + public static create(properties?: flyteidl.admin.IAuth): flyteidl.admin.Auth; /** - * Encodes the specified TaskResourceAttributes message. Does not implicitly {@link flyteidl.admin.TaskResourceAttributes.verify|verify} messages. - * @param message TaskResourceAttributes message or plain object to encode + * Encodes the specified Auth message. Does not implicitly {@link flyteidl.admin.Auth.verify|verify} messages. + * @param message Auth message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.ITaskResourceAttributes, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IAuth, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TaskResourceAttributes message from the specified reader or buffer. + * Decodes an Auth message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TaskResourceAttributes + * @returns Auth * @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.admin.TaskResourceAttributes; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.Auth; /** - * Verifies a TaskResourceAttributes message. + * Verifies an Auth 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 ClusterResourceAttributes. */ - interface IClusterResourceAttributes { + /** Properties of a LaunchPlanSpec. */ + interface ILaunchPlanSpec { - /** ClusterResourceAttributes attributes */ - attributes?: ({ [k: string]: string }|null); + /** LaunchPlanSpec workflowId */ + workflowId?: (flyteidl.core.IIdentifier|null); + + /** LaunchPlanSpec entityMetadata */ + entityMetadata?: (flyteidl.admin.ILaunchPlanMetadata|null); + + /** LaunchPlanSpec defaultInputs */ + defaultInputs?: (flyteidl.core.IParameterMap|null); + + /** LaunchPlanSpec fixedInputs */ + fixedInputs?: (flyteidl.core.ILiteralMap|null); + + /** LaunchPlanSpec role */ + role?: (string|null); + + /** LaunchPlanSpec labels */ + labels?: (flyteidl.admin.ILabels|null); + + /** LaunchPlanSpec annotations */ + annotations?: (flyteidl.admin.IAnnotations|null); + + /** LaunchPlanSpec auth */ + auth?: (flyteidl.admin.IAuth|null); + + /** LaunchPlanSpec authRole */ + authRole?: (flyteidl.admin.IAuthRole|null); + + /** LaunchPlanSpec securityContext */ + securityContext?: (flyteidl.core.ISecurityContext|null); + + /** LaunchPlanSpec qualityOfService */ + qualityOfService?: (flyteidl.core.IQualityOfService|null); + + /** LaunchPlanSpec rawOutputDataConfig */ + rawOutputDataConfig?: (flyteidl.admin.IRawOutputDataConfig|null); + + /** LaunchPlanSpec maxParallelism */ + maxParallelism?: (number|null); + + /** LaunchPlanSpec interruptible */ + interruptible?: (google.protobuf.IBoolValue|null); + + /** LaunchPlanSpec overwriteCache */ + overwriteCache?: (boolean|null); + + /** LaunchPlanSpec envs */ + envs?: (flyteidl.admin.IEnvs|null); } - /** Represents a ClusterResourceAttributes. */ - class ClusterResourceAttributes implements IClusterResourceAttributes { + /** Represents a LaunchPlanSpec. */ + class LaunchPlanSpec implements ILaunchPlanSpec { /** - * Constructs a new ClusterResourceAttributes. + * Constructs a new LaunchPlanSpec. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IClusterResourceAttributes); + constructor(properties?: flyteidl.admin.ILaunchPlanSpec); - /** ClusterResourceAttributes attributes. */ - public attributes: { [k: string]: string }; + /** LaunchPlanSpec workflowId. */ + public workflowId?: (flyteidl.core.IIdentifier|null); + + /** LaunchPlanSpec entityMetadata. */ + public entityMetadata?: (flyteidl.admin.ILaunchPlanMetadata|null); + + /** LaunchPlanSpec defaultInputs. */ + public defaultInputs?: (flyteidl.core.IParameterMap|null); + + /** LaunchPlanSpec fixedInputs. */ + public fixedInputs?: (flyteidl.core.ILiteralMap|null); + + /** LaunchPlanSpec role. */ + public role: string; + + /** LaunchPlanSpec labels. */ + public labels?: (flyteidl.admin.ILabels|null); + + /** LaunchPlanSpec annotations. */ + public annotations?: (flyteidl.admin.IAnnotations|null); + + /** LaunchPlanSpec auth. */ + public auth?: (flyteidl.admin.IAuth|null); + + /** LaunchPlanSpec authRole. */ + public authRole?: (flyteidl.admin.IAuthRole|null); + + /** LaunchPlanSpec securityContext. */ + public securityContext?: (flyteidl.core.ISecurityContext|null); + + /** LaunchPlanSpec qualityOfService. */ + public qualityOfService?: (flyteidl.core.IQualityOfService|null); + + /** LaunchPlanSpec rawOutputDataConfig. */ + public rawOutputDataConfig?: (flyteidl.admin.IRawOutputDataConfig|null); + + /** LaunchPlanSpec maxParallelism. */ + public maxParallelism: number; + + /** LaunchPlanSpec interruptible. */ + public interruptible?: (google.protobuf.IBoolValue|null); + + /** LaunchPlanSpec overwriteCache. */ + public overwriteCache: boolean; + + /** LaunchPlanSpec envs. */ + public envs?: (flyteidl.admin.IEnvs|null); /** - * Creates a new ClusterResourceAttributes instance using the specified properties. + * Creates a new LaunchPlanSpec instance using the specified properties. * @param [properties] Properties to set - * @returns ClusterResourceAttributes instance + * @returns LaunchPlanSpec instance */ - public static create(properties?: flyteidl.admin.IClusterResourceAttributes): flyteidl.admin.ClusterResourceAttributes; + public static create(properties?: flyteidl.admin.ILaunchPlanSpec): flyteidl.admin.LaunchPlanSpec; /** - * Encodes the specified ClusterResourceAttributes message. Does not implicitly {@link flyteidl.admin.ClusterResourceAttributes.verify|verify} messages. - * @param message ClusterResourceAttributes message or plain object to encode + * Encodes the specified LaunchPlanSpec message. Does not implicitly {@link flyteidl.admin.LaunchPlanSpec.verify|verify} messages. + * @param message LaunchPlanSpec message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IClusterResourceAttributes, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ILaunchPlanSpec, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ClusterResourceAttributes message from the specified reader or buffer. + * Decodes a LaunchPlanSpec message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ClusterResourceAttributes + * @returns LaunchPlanSpec * @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.admin.ClusterResourceAttributes; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.LaunchPlanSpec; /** - * Verifies a ClusterResourceAttributes message. + * Verifies a LaunchPlanSpec 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 ExecutionQueueAttributes. */ - interface IExecutionQueueAttributes { + /** Properties of a LaunchPlanClosure. */ + interface ILaunchPlanClosure { - /** ExecutionQueueAttributes tags */ - tags?: (string[]|null); + /** LaunchPlanClosure state */ + state?: (flyteidl.admin.LaunchPlanState|null); + + /** LaunchPlanClosure expectedInputs */ + expectedInputs?: (flyteidl.core.IParameterMap|null); + + /** LaunchPlanClosure expectedOutputs */ + expectedOutputs?: (flyteidl.core.IVariableMap|null); + + /** LaunchPlanClosure createdAt */ + createdAt?: (google.protobuf.ITimestamp|null); + + /** LaunchPlanClosure updatedAt */ + updatedAt?: (google.protobuf.ITimestamp|null); } - /** Represents an ExecutionQueueAttributes. */ - class ExecutionQueueAttributes implements IExecutionQueueAttributes { + /** Represents a LaunchPlanClosure. */ + class LaunchPlanClosure implements ILaunchPlanClosure { /** - * Constructs a new ExecutionQueueAttributes. + * Constructs a new LaunchPlanClosure. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IExecutionQueueAttributes); + constructor(properties?: flyteidl.admin.ILaunchPlanClosure); - /** ExecutionQueueAttributes tags. */ - public tags: string[]; + /** LaunchPlanClosure state. */ + public state: flyteidl.admin.LaunchPlanState; + + /** LaunchPlanClosure expectedInputs. */ + public expectedInputs?: (flyteidl.core.IParameterMap|null); + + /** LaunchPlanClosure expectedOutputs. */ + public expectedOutputs?: (flyteidl.core.IVariableMap|null); + + /** LaunchPlanClosure createdAt. */ + public createdAt?: (google.protobuf.ITimestamp|null); + + /** LaunchPlanClosure updatedAt. */ + public updatedAt?: (google.protobuf.ITimestamp|null); /** - * Creates a new ExecutionQueueAttributes instance using the specified properties. + * Creates a new LaunchPlanClosure instance using the specified properties. * @param [properties] Properties to set - * @returns ExecutionQueueAttributes instance + * @returns LaunchPlanClosure instance */ - public static create(properties?: flyteidl.admin.IExecutionQueueAttributes): flyteidl.admin.ExecutionQueueAttributes; + public static create(properties?: flyteidl.admin.ILaunchPlanClosure): flyteidl.admin.LaunchPlanClosure; /** - * Encodes the specified ExecutionQueueAttributes message. Does not implicitly {@link flyteidl.admin.ExecutionQueueAttributes.verify|verify} messages. - * @param message ExecutionQueueAttributes message or plain object to encode + * Encodes the specified LaunchPlanClosure message. Does not implicitly {@link flyteidl.admin.LaunchPlanClosure.verify|verify} messages. + * @param message LaunchPlanClosure message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IExecutionQueueAttributes, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ILaunchPlanClosure, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ExecutionQueueAttributes message from the specified reader or buffer. + * Decodes a LaunchPlanClosure message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ExecutionQueueAttributes + * @returns LaunchPlanClosure * @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.admin.ExecutionQueueAttributes; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.LaunchPlanClosure; /** - * Verifies an ExecutionQueueAttributes message. + * Verifies a LaunchPlanClosure 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 ExecutionClusterLabel. */ - interface IExecutionClusterLabel { + /** Properties of a LaunchPlanMetadata. */ + interface ILaunchPlanMetadata { + + /** LaunchPlanMetadata schedule */ + schedule?: (flyteidl.admin.ISchedule|null); + + /** LaunchPlanMetadata notifications */ + notifications?: (flyteidl.admin.INotification[]|null); - /** ExecutionClusterLabel value */ - value?: (string|null); + /** LaunchPlanMetadata launchConditions */ + launchConditions?: (google.protobuf.IAny|null); } - /** Represents an ExecutionClusterLabel. */ - class ExecutionClusterLabel implements IExecutionClusterLabel { + /** Represents a LaunchPlanMetadata. */ + class LaunchPlanMetadata implements ILaunchPlanMetadata { /** - * Constructs a new ExecutionClusterLabel. + * Constructs a new LaunchPlanMetadata. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IExecutionClusterLabel); + constructor(properties?: flyteidl.admin.ILaunchPlanMetadata); - /** ExecutionClusterLabel value. */ - public value: string; + /** LaunchPlanMetadata schedule. */ + public schedule?: (flyteidl.admin.ISchedule|null); + + /** LaunchPlanMetadata notifications. */ + public notifications: flyteidl.admin.INotification[]; + + /** LaunchPlanMetadata launchConditions. */ + public launchConditions?: (google.protobuf.IAny|null); /** - * Creates a new ExecutionClusterLabel instance using the specified properties. + * Creates a new LaunchPlanMetadata instance using the specified properties. * @param [properties] Properties to set - * @returns ExecutionClusterLabel instance + * @returns LaunchPlanMetadata instance */ - public static create(properties?: flyteidl.admin.IExecutionClusterLabel): flyteidl.admin.ExecutionClusterLabel; + public static create(properties?: flyteidl.admin.ILaunchPlanMetadata): flyteidl.admin.LaunchPlanMetadata; /** - * Encodes the specified ExecutionClusterLabel message. Does not implicitly {@link flyteidl.admin.ExecutionClusterLabel.verify|verify} messages. - * @param message ExecutionClusterLabel message or plain object to encode + * Encodes the specified LaunchPlanMetadata message. Does not implicitly {@link flyteidl.admin.LaunchPlanMetadata.verify|verify} messages. + * @param message LaunchPlanMetadata message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IExecutionClusterLabel, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ILaunchPlanMetadata, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ExecutionClusterLabel message from the specified reader or buffer. + * Decodes a LaunchPlanMetadata message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ExecutionClusterLabel + * @returns LaunchPlanMetadata * @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.admin.ExecutionClusterLabel; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.LaunchPlanMetadata; /** - * Verifies an ExecutionClusterLabel message. + * Verifies a LaunchPlanMetadata 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 PluginOverride. */ - interface IPluginOverride { - - /** PluginOverride taskType */ - taskType?: (string|null); + /** Properties of a LaunchPlanUpdateRequest. */ + interface ILaunchPlanUpdateRequest { - /** PluginOverride pluginId */ - pluginId?: (string[]|null); + /** LaunchPlanUpdateRequest id */ + id?: (flyteidl.core.IIdentifier|null); - /** PluginOverride missingPluginBehavior */ - missingPluginBehavior?: (flyteidl.admin.PluginOverride.MissingPluginBehavior|null); + /** LaunchPlanUpdateRequest state */ + state?: (flyteidl.admin.LaunchPlanState|null); } - /** Represents a PluginOverride. */ - class PluginOverride implements IPluginOverride { + /** Represents a LaunchPlanUpdateRequest. */ + class LaunchPlanUpdateRequest implements ILaunchPlanUpdateRequest { /** - * Constructs a new PluginOverride. + * Constructs a new LaunchPlanUpdateRequest. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IPluginOverride); - - /** PluginOverride taskType. */ - public taskType: string; + constructor(properties?: flyteidl.admin.ILaunchPlanUpdateRequest); - /** PluginOverride pluginId. */ - public pluginId: string[]; + /** LaunchPlanUpdateRequest id. */ + public id?: (flyteidl.core.IIdentifier|null); - /** PluginOverride missingPluginBehavior. */ - public missingPluginBehavior: flyteidl.admin.PluginOverride.MissingPluginBehavior; + /** LaunchPlanUpdateRequest state. */ + public state: flyteidl.admin.LaunchPlanState; /** - * Creates a new PluginOverride instance using the specified properties. + * Creates a new LaunchPlanUpdateRequest instance using the specified properties. * @param [properties] Properties to set - * @returns PluginOverride instance + * @returns LaunchPlanUpdateRequest instance */ - public static create(properties?: flyteidl.admin.IPluginOverride): flyteidl.admin.PluginOverride; + public static create(properties?: flyteidl.admin.ILaunchPlanUpdateRequest): flyteidl.admin.LaunchPlanUpdateRequest; /** - * Encodes the specified PluginOverride message. Does not implicitly {@link flyteidl.admin.PluginOverride.verify|verify} messages. - * @param message PluginOverride message or plain object to encode + * Encodes the specified LaunchPlanUpdateRequest message. Does not implicitly {@link flyteidl.admin.LaunchPlanUpdateRequest.verify|verify} messages. + * @param message LaunchPlanUpdateRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IPluginOverride, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ILaunchPlanUpdateRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PluginOverride message from the specified reader or buffer. + * Decodes a LaunchPlanUpdateRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PluginOverride + * @returns LaunchPlanUpdateRequest * @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.admin.PluginOverride; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.LaunchPlanUpdateRequest; /** - * Verifies a PluginOverride message. + * Verifies a LaunchPlanUpdateRequest 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); } - namespace PluginOverride { - - /** MissingPluginBehavior enum. */ - enum MissingPluginBehavior { - FAIL = 0, - USE_DEFAULT = 1 - } - } - - /** Properties of a PluginOverrides. */ - interface IPluginOverrides { - - /** PluginOverrides overrides */ - overrides?: (flyteidl.admin.IPluginOverride[]|null); + /** Properties of a LaunchPlanUpdateResponse. */ + interface ILaunchPlanUpdateResponse { } - /** Represents a PluginOverrides. */ - class PluginOverrides implements IPluginOverrides { + /** Represents a LaunchPlanUpdateResponse. */ + class LaunchPlanUpdateResponse implements ILaunchPlanUpdateResponse { /** - * Constructs a new PluginOverrides. + * Constructs a new LaunchPlanUpdateResponse. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IPluginOverrides); - - /** PluginOverrides overrides. */ - public overrides: flyteidl.admin.IPluginOverride[]; + constructor(properties?: flyteidl.admin.ILaunchPlanUpdateResponse); /** - * Creates a new PluginOverrides instance using the specified properties. + * Creates a new LaunchPlanUpdateResponse instance using the specified properties. * @param [properties] Properties to set - * @returns PluginOverrides instance + * @returns LaunchPlanUpdateResponse instance */ - public static create(properties?: flyteidl.admin.IPluginOverrides): flyteidl.admin.PluginOverrides; + public static create(properties?: flyteidl.admin.ILaunchPlanUpdateResponse): flyteidl.admin.LaunchPlanUpdateResponse; /** - * Encodes the specified PluginOverrides message. Does not implicitly {@link flyteidl.admin.PluginOverrides.verify|verify} messages. - * @param message PluginOverrides message or plain object to encode + * Encodes the specified LaunchPlanUpdateResponse message. Does not implicitly {@link flyteidl.admin.LaunchPlanUpdateResponse.verify|verify} messages. + * @param message LaunchPlanUpdateResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IPluginOverrides, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ILaunchPlanUpdateResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PluginOverrides message from the specified reader or buffer. + * Decodes a LaunchPlanUpdateResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PluginOverrides + * @returns LaunchPlanUpdateResponse * @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.admin.PluginOverrides; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.LaunchPlanUpdateResponse; /** - * Verifies a PluginOverrides message. + * Verifies a LaunchPlanUpdateResponse 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 WorkflowExecutionConfig. */ - interface IWorkflowExecutionConfig { - - /** WorkflowExecutionConfig maxParallelism */ - maxParallelism?: (number|null); - - /** WorkflowExecutionConfig securityContext */ - securityContext?: (flyteidl.core.ISecurityContext|null); - - /** WorkflowExecutionConfig rawOutputDataConfig */ - rawOutputDataConfig?: (flyteidl.admin.IRawOutputDataConfig|null); - - /** WorkflowExecutionConfig labels */ - labels?: (flyteidl.admin.ILabels|null); - - /** WorkflowExecutionConfig annotations */ - annotations?: (flyteidl.admin.IAnnotations|null); - - /** WorkflowExecutionConfig interruptible */ - interruptible?: (google.protobuf.IBoolValue|null); - - /** WorkflowExecutionConfig overwriteCache */ - overwriteCache?: (boolean|null); + /** Properties of an ActiveLaunchPlanRequest. */ + interface IActiveLaunchPlanRequest { - /** WorkflowExecutionConfig envs */ - envs?: (flyteidl.admin.IEnvs|null); + /** ActiveLaunchPlanRequest id */ + id?: (flyteidl.admin.INamedEntityIdentifier|null); } - /** Represents a WorkflowExecutionConfig. */ - class WorkflowExecutionConfig implements IWorkflowExecutionConfig { + /** Represents an ActiveLaunchPlanRequest. */ + class ActiveLaunchPlanRequest implements IActiveLaunchPlanRequest { /** - * Constructs a new WorkflowExecutionConfig. + * Constructs a new ActiveLaunchPlanRequest. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IWorkflowExecutionConfig); - - /** WorkflowExecutionConfig maxParallelism. */ - public maxParallelism: number; - - /** WorkflowExecutionConfig securityContext. */ - public securityContext?: (flyteidl.core.ISecurityContext|null); - - /** WorkflowExecutionConfig rawOutputDataConfig. */ - public rawOutputDataConfig?: (flyteidl.admin.IRawOutputDataConfig|null); - - /** WorkflowExecutionConfig labels. */ - public labels?: (flyteidl.admin.ILabels|null); - - /** WorkflowExecutionConfig annotations. */ - public annotations?: (flyteidl.admin.IAnnotations|null); - - /** WorkflowExecutionConfig interruptible. */ - public interruptible?: (google.protobuf.IBoolValue|null); - - /** WorkflowExecutionConfig overwriteCache. */ - public overwriteCache: boolean; + constructor(properties?: flyteidl.admin.IActiveLaunchPlanRequest); - /** WorkflowExecutionConfig envs. */ - public envs?: (flyteidl.admin.IEnvs|null); + /** ActiveLaunchPlanRequest id. */ + public id?: (flyteidl.admin.INamedEntityIdentifier|null); /** - * Creates a new WorkflowExecutionConfig instance using the specified properties. + * Creates a new ActiveLaunchPlanRequest instance using the specified properties. * @param [properties] Properties to set - * @returns WorkflowExecutionConfig instance + * @returns ActiveLaunchPlanRequest instance */ - public static create(properties?: flyteidl.admin.IWorkflowExecutionConfig): flyteidl.admin.WorkflowExecutionConfig; + public static create(properties?: flyteidl.admin.IActiveLaunchPlanRequest): flyteidl.admin.ActiveLaunchPlanRequest; /** - * Encodes the specified WorkflowExecutionConfig message. Does not implicitly {@link flyteidl.admin.WorkflowExecutionConfig.verify|verify} messages. - * @param message WorkflowExecutionConfig message or plain object to encode + * Encodes the specified ActiveLaunchPlanRequest message. Does not implicitly {@link flyteidl.admin.ActiveLaunchPlanRequest.verify|verify} messages. + * @param message ActiveLaunchPlanRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IWorkflowExecutionConfig, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IActiveLaunchPlanRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a WorkflowExecutionConfig message from the specified reader or buffer. + * Decodes an ActiveLaunchPlanRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns WorkflowExecutionConfig + * @returns ActiveLaunchPlanRequest * @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.admin.WorkflowExecutionConfig; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.ActiveLaunchPlanRequest; /** - * Verifies a WorkflowExecutionConfig message. + * Verifies an ActiveLaunchPlanRequest 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 MatchingAttributes. */ - interface IMatchingAttributes { - - /** MatchingAttributes taskResourceAttributes */ - taskResourceAttributes?: (flyteidl.admin.ITaskResourceAttributes|null); - - /** MatchingAttributes clusterResourceAttributes */ - clusterResourceAttributes?: (flyteidl.admin.IClusterResourceAttributes|null); + /** Properties of an ActiveLaunchPlanListRequest. */ + interface IActiveLaunchPlanListRequest { - /** MatchingAttributes executionQueueAttributes */ - executionQueueAttributes?: (flyteidl.admin.IExecutionQueueAttributes|null); + /** ActiveLaunchPlanListRequest project */ + project?: (string|null); - /** MatchingAttributes executionClusterLabel */ - executionClusterLabel?: (flyteidl.admin.IExecutionClusterLabel|null); + /** ActiveLaunchPlanListRequest domain */ + domain?: (string|null); - /** MatchingAttributes qualityOfService */ - qualityOfService?: (flyteidl.core.IQualityOfService|null); + /** ActiveLaunchPlanListRequest limit */ + limit?: (number|null); - /** MatchingAttributes pluginOverrides */ - pluginOverrides?: (flyteidl.admin.IPluginOverrides|null); + /** ActiveLaunchPlanListRequest token */ + token?: (string|null); - /** MatchingAttributes workflowExecutionConfig */ - workflowExecutionConfig?: (flyteidl.admin.IWorkflowExecutionConfig|null); + /** ActiveLaunchPlanListRequest sortBy */ + sortBy?: (flyteidl.admin.ISort|null); - /** MatchingAttributes clusterAssignment */ - clusterAssignment?: (flyteidl.admin.IClusterAssignment|null); + /** ActiveLaunchPlanListRequest org */ + org?: (string|null); } - /** Represents a MatchingAttributes. */ - class MatchingAttributes implements IMatchingAttributes { + /** Represents an ActiveLaunchPlanListRequest. */ + class ActiveLaunchPlanListRequest implements IActiveLaunchPlanListRequest { /** - * Constructs a new MatchingAttributes. + * Constructs a new ActiveLaunchPlanListRequest. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IMatchingAttributes); - - /** MatchingAttributes taskResourceAttributes. */ - public taskResourceAttributes?: (flyteidl.admin.ITaskResourceAttributes|null); - - /** MatchingAttributes clusterResourceAttributes. */ - public clusterResourceAttributes?: (flyteidl.admin.IClusterResourceAttributes|null); - - /** MatchingAttributes executionQueueAttributes. */ - public executionQueueAttributes?: (flyteidl.admin.IExecutionQueueAttributes|null); + constructor(properties?: flyteidl.admin.IActiveLaunchPlanListRequest); - /** MatchingAttributes executionClusterLabel. */ - public executionClusterLabel?: (flyteidl.admin.IExecutionClusterLabel|null); + /** ActiveLaunchPlanListRequest project. */ + public project: string; - /** MatchingAttributes qualityOfService. */ - public qualityOfService?: (flyteidl.core.IQualityOfService|null); + /** ActiveLaunchPlanListRequest domain. */ + public domain: string; - /** MatchingAttributes pluginOverrides. */ - public pluginOverrides?: (flyteidl.admin.IPluginOverrides|null); + /** ActiveLaunchPlanListRequest limit. */ + public limit: number; - /** MatchingAttributes workflowExecutionConfig. */ - public workflowExecutionConfig?: (flyteidl.admin.IWorkflowExecutionConfig|null); + /** ActiveLaunchPlanListRequest token. */ + public token: string; - /** MatchingAttributes clusterAssignment. */ - public clusterAssignment?: (flyteidl.admin.IClusterAssignment|null); + /** ActiveLaunchPlanListRequest sortBy. */ + public sortBy?: (flyteidl.admin.ISort|null); - /** MatchingAttributes target. */ - public target?: ("taskResourceAttributes"|"clusterResourceAttributes"|"executionQueueAttributes"|"executionClusterLabel"|"qualityOfService"|"pluginOverrides"|"workflowExecutionConfig"|"clusterAssignment"); + /** ActiveLaunchPlanListRequest org. */ + public org: string; /** - * Creates a new MatchingAttributes instance using the specified properties. + * Creates a new ActiveLaunchPlanListRequest instance using the specified properties. * @param [properties] Properties to set - * @returns MatchingAttributes instance + * @returns ActiveLaunchPlanListRequest instance */ - public static create(properties?: flyteidl.admin.IMatchingAttributes): flyteidl.admin.MatchingAttributes; + public static create(properties?: flyteidl.admin.IActiveLaunchPlanListRequest): flyteidl.admin.ActiveLaunchPlanListRequest; /** - * Encodes the specified MatchingAttributes message. Does not implicitly {@link flyteidl.admin.MatchingAttributes.verify|verify} messages. - * @param message MatchingAttributes message or plain object to encode + * Encodes the specified ActiveLaunchPlanListRequest message. Does not implicitly {@link flyteidl.admin.ActiveLaunchPlanListRequest.verify|verify} messages. + * @param message ActiveLaunchPlanListRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IMatchingAttributes, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IActiveLaunchPlanListRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a MatchingAttributes message from the specified reader or buffer. + * Decodes an ActiveLaunchPlanListRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns MatchingAttributes + * @returns ActiveLaunchPlanListRequest * @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.admin.MatchingAttributes; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.ActiveLaunchPlanListRequest; /** - * Verifies a MatchingAttributes message. + * Verifies an ActiveLaunchPlanListRequest 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 MatchableAttributesConfiguration. */ - interface IMatchableAttributesConfiguration { - - /** MatchableAttributesConfiguration attributes */ - attributes?: (flyteidl.admin.IMatchingAttributes|null); - - /** MatchableAttributesConfiguration domain */ - domain?: (string|null); - - /** MatchableAttributesConfiguration project */ - project?: (string|null); + /** FixedRateUnit enum. */ + enum FixedRateUnit { + MINUTE = 0, + HOUR = 1, + DAY = 2 + } - /** MatchableAttributesConfiguration workflow */ - workflow?: (string|null); + /** Properties of a FixedRate. */ + interface IFixedRate { - /** MatchableAttributesConfiguration launchPlan */ - launchPlan?: (string|null); + /** FixedRate value */ + value?: (number|null); - /** MatchableAttributesConfiguration org */ - org?: (string|null); + /** FixedRate unit */ + unit?: (flyteidl.admin.FixedRateUnit|null); } - /** Represents a MatchableAttributesConfiguration. */ - class MatchableAttributesConfiguration implements IMatchableAttributesConfiguration { + /** Represents a FixedRate. */ + class FixedRate implements IFixedRate { /** - * Constructs a new MatchableAttributesConfiguration. + * Constructs a new FixedRate. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IMatchableAttributesConfiguration); - - /** MatchableAttributesConfiguration attributes. */ - public attributes?: (flyteidl.admin.IMatchingAttributes|null); - - /** MatchableAttributesConfiguration domain. */ - public domain: string; - - /** MatchableAttributesConfiguration project. */ - public project: string; - - /** MatchableAttributesConfiguration workflow. */ - public workflow: string; + constructor(properties?: flyteidl.admin.IFixedRate); - /** MatchableAttributesConfiguration launchPlan. */ - public launchPlan: string; + /** FixedRate value. */ + public value: number; - /** MatchableAttributesConfiguration org. */ - public org: string; + /** FixedRate unit. */ + public unit: flyteidl.admin.FixedRateUnit; /** - * Creates a new MatchableAttributesConfiguration instance using the specified properties. + * Creates a new FixedRate instance using the specified properties. * @param [properties] Properties to set - * @returns MatchableAttributesConfiguration instance + * @returns FixedRate instance */ - public static create(properties?: flyteidl.admin.IMatchableAttributesConfiguration): flyteidl.admin.MatchableAttributesConfiguration; + public static create(properties?: flyteidl.admin.IFixedRate): flyteidl.admin.FixedRate; /** - * Encodes the specified MatchableAttributesConfiguration message. Does not implicitly {@link flyteidl.admin.MatchableAttributesConfiguration.verify|verify} messages. - * @param message MatchableAttributesConfiguration message or plain object to encode + * Encodes the specified FixedRate message. Does not implicitly {@link flyteidl.admin.FixedRate.verify|verify} messages. + * @param message FixedRate message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IMatchableAttributesConfiguration, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.IFixedRate, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a MatchableAttributesConfiguration message from the specified reader or buffer. + * Decodes a FixedRate message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns MatchableAttributesConfiguration + * @returns FixedRate * @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.admin.MatchableAttributesConfiguration; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.FixedRate; /** - * Verifies a MatchableAttributesConfiguration message. + * Verifies a FixedRate 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 ListMatchableAttributesRequest. */ - interface IListMatchableAttributesRequest { + /** Properties of a CronSchedule. */ + interface ICronSchedule { - /** ListMatchableAttributesRequest resourceType */ - resourceType?: (flyteidl.admin.MatchableResource|null); + /** CronSchedule schedule */ + schedule?: (string|null); - /** ListMatchableAttributesRequest org */ - org?: (string|null); + /** CronSchedule offset */ + offset?: (string|null); } - /** Represents a ListMatchableAttributesRequest. */ - class ListMatchableAttributesRequest implements IListMatchableAttributesRequest { + /** Represents a CronSchedule. */ + class CronSchedule implements ICronSchedule { /** - * Constructs a new ListMatchableAttributesRequest. + * Constructs a new CronSchedule. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IListMatchableAttributesRequest); + constructor(properties?: flyteidl.admin.ICronSchedule); - /** ListMatchableAttributesRequest resourceType. */ - public resourceType: flyteidl.admin.MatchableResource; + /** CronSchedule schedule. */ + public schedule: string; - /** ListMatchableAttributesRequest org. */ - public org: string; + /** CronSchedule offset. */ + public offset: string; /** - * Creates a new ListMatchableAttributesRequest instance using the specified properties. + * Creates a new CronSchedule instance using the specified properties. * @param [properties] Properties to set - * @returns ListMatchableAttributesRequest instance + * @returns CronSchedule instance */ - public static create(properties?: flyteidl.admin.IListMatchableAttributesRequest): flyteidl.admin.ListMatchableAttributesRequest; + public static create(properties?: flyteidl.admin.ICronSchedule): flyteidl.admin.CronSchedule; /** - * Encodes the specified ListMatchableAttributesRequest message. Does not implicitly {@link flyteidl.admin.ListMatchableAttributesRequest.verify|verify} messages. - * @param message ListMatchableAttributesRequest message or plain object to encode + * Encodes the specified CronSchedule message. Does not implicitly {@link flyteidl.admin.CronSchedule.verify|verify} messages. + * @param message CronSchedule message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IListMatchableAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ICronSchedule, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ListMatchableAttributesRequest message from the specified reader or buffer. + * Decodes a CronSchedule message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ListMatchableAttributesRequest + * @returns CronSchedule * @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.admin.ListMatchableAttributesRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.CronSchedule; /** - * Verifies a ListMatchableAttributesRequest message. + * Verifies a CronSchedule 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 ListMatchableAttributesResponse. */ - interface IListMatchableAttributesResponse { + /** Properties of a Schedule. */ + interface ISchedule { - /** ListMatchableAttributesResponse configurations */ - configurations?: (flyteidl.admin.IMatchableAttributesConfiguration[]|null); + /** Schedule cronExpression */ + cronExpression?: (string|null); + + /** Schedule rate */ + rate?: (flyteidl.admin.IFixedRate|null); + + /** Schedule cronSchedule */ + cronSchedule?: (flyteidl.admin.ICronSchedule|null); + + /** Schedule kickoffTimeInputArg */ + kickoffTimeInputArg?: (string|null); } - /** Represents a ListMatchableAttributesResponse. */ - class ListMatchableAttributesResponse implements IListMatchableAttributesResponse { + /** Represents a Schedule. */ + class Schedule implements ISchedule { /** - * Constructs a new ListMatchableAttributesResponse. + * Constructs a new Schedule. * @param [properties] Properties to set */ - constructor(properties?: flyteidl.admin.IListMatchableAttributesResponse); + constructor(properties?: flyteidl.admin.ISchedule); - /** ListMatchableAttributesResponse configurations. */ - public configurations: flyteidl.admin.IMatchableAttributesConfiguration[]; + /** Schedule cronExpression. */ + public cronExpression: string; + + /** Schedule rate. */ + public rate?: (flyteidl.admin.IFixedRate|null); + + /** Schedule cronSchedule. */ + public cronSchedule?: (flyteidl.admin.ICronSchedule|null); + + /** Schedule kickoffTimeInputArg. */ + public kickoffTimeInputArg: string; + + /** Schedule ScheduleExpression. */ + public ScheduleExpression?: ("cronExpression"|"rate"|"cronSchedule"); /** - * Creates a new ListMatchableAttributesResponse instance using the specified properties. + * Creates a new Schedule instance using the specified properties. * @param [properties] Properties to set - * @returns ListMatchableAttributesResponse instance + * @returns Schedule instance */ - public static create(properties?: flyteidl.admin.IListMatchableAttributesResponse): flyteidl.admin.ListMatchableAttributesResponse; + public static create(properties?: flyteidl.admin.ISchedule): flyteidl.admin.Schedule; /** - * Encodes the specified ListMatchableAttributesResponse message. Does not implicitly {@link flyteidl.admin.ListMatchableAttributesResponse.verify|verify} messages. - * @param message ListMatchableAttributesResponse message or plain object to encode + * Encodes the specified Schedule message. Does not implicitly {@link flyteidl.admin.Schedule.verify|verify} messages. + * @param message Schedule message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: flyteidl.admin.IListMatchableAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: flyteidl.admin.ISchedule, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ListMatchableAttributesResponse message from the specified reader or buffer. + * Decodes a Schedule message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ListMatchableAttributesResponse + * @returns Schedule * @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.admin.ListMatchableAttributesResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.Schedule; /** - * Verifies a ListMatchableAttributesResponse message. + * Verifies a Schedule message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 680cf11ee26..41484ba0ef8 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -33630,6 +33630,7 @@ * @property {boolean|null} [overwriteCache] ExecutionSpec overwriteCache * @property {flyteidl.admin.IEnvs|null} [envs] ExecutionSpec envs * @property {Array.|null} [tags] ExecutionSpec tags + * @property {flyteidl.admin.IExecutionClusterLabel|null} [executionClusterLabel] ExecutionSpec executionClusterLabel */ /** @@ -33784,6 +33785,14 @@ */ ExecutionSpec.prototype.tags = $util.emptyArray; + /** + * ExecutionSpec executionClusterLabel. + * @member {flyteidl.admin.IExecutionClusterLabel|null|undefined} executionClusterLabel + * @memberof flyteidl.admin.ExecutionSpec + * @instance + */ + ExecutionSpec.prototype.executionClusterLabel = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -33857,6 +33866,8 @@ if (message.tags != null && message.tags.length) for (var i = 0; i < message.tags.length; ++i) writer.uint32(/* id 24, wireType 2 =*/194).string(message.tags[i]); + if (message.executionClusterLabel != null && message.hasOwnProperty("executionClusterLabel")) + $root.flyteidl.admin.ExecutionClusterLabel.encode(message.executionClusterLabel, writer.uint32(/* id 25, wireType 2 =*/202).fork()).ldelim(); return writer; }; @@ -33931,6 +33942,9 @@ message.tags = []; message.tags.push(reader.string()); break; + case 25: + message.executionClusterLabel = $root.flyteidl.admin.ExecutionClusterLabel.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -34039,6 +34053,11 @@ if (!$util.isString(message.tags[i])) return "tags: string[] expected"; } + if (message.executionClusterLabel != null && message.hasOwnProperty("executionClusterLabel")) { + var error = $root.flyteidl.admin.ExecutionClusterLabel.verify(message.executionClusterLabel); + if (error) + return "executionClusterLabel." + error; + } return null; }; @@ -35181,25 +35200,54 @@ return WorkflowExecutionGetMetricsResponse; })(); - admin.LaunchPlanCreateRequest = (function() { + /** + * MatchableResource enum. + * @name flyteidl.admin.MatchableResource + * @enum {string} + * @property {number} TASK_RESOURCE=0 TASK_RESOURCE value + * @property {number} CLUSTER_RESOURCE=1 CLUSTER_RESOURCE value + * @property {number} EXECUTION_QUEUE=2 EXECUTION_QUEUE value + * @property {number} EXECUTION_CLUSTER_LABEL=3 EXECUTION_CLUSTER_LABEL value + * @property {number} QUALITY_OF_SERVICE_SPECIFICATION=4 QUALITY_OF_SERVICE_SPECIFICATION value + * @property {number} PLUGIN_OVERRIDE=5 PLUGIN_OVERRIDE value + * @property {number} WORKFLOW_EXECUTION_CONFIG=6 WORKFLOW_EXECUTION_CONFIG value + * @property {number} CLUSTER_ASSIGNMENT=7 CLUSTER_ASSIGNMENT value + */ + admin.MatchableResource = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "TASK_RESOURCE"] = 0; + values[valuesById[1] = "CLUSTER_RESOURCE"] = 1; + values[valuesById[2] = "EXECUTION_QUEUE"] = 2; + values[valuesById[3] = "EXECUTION_CLUSTER_LABEL"] = 3; + values[valuesById[4] = "QUALITY_OF_SERVICE_SPECIFICATION"] = 4; + values[valuesById[5] = "PLUGIN_OVERRIDE"] = 5; + values[valuesById[6] = "WORKFLOW_EXECUTION_CONFIG"] = 6; + values[valuesById[7] = "CLUSTER_ASSIGNMENT"] = 7; + return values; + })(); + + admin.TaskResourceSpec = (function() { /** - * Properties of a LaunchPlanCreateRequest. + * Properties of a TaskResourceSpec. * @memberof flyteidl.admin - * @interface ILaunchPlanCreateRequest - * @property {flyteidl.core.IIdentifier|null} [id] LaunchPlanCreateRequest id - * @property {flyteidl.admin.ILaunchPlanSpec|null} [spec] LaunchPlanCreateRequest spec + * @interface ITaskResourceSpec + * @property {string|null} [cpu] TaskResourceSpec cpu + * @property {string|null} [gpu] TaskResourceSpec gpu + * @property {string|null} [memory] TaskResourceSpec memory + * @property {string|null} [storage] TaskResourceSpec storage + * @property {string|null} [ephemeralStorage] TaskResourceSpec ephemeralStorage */ /** - * Constructs a new LaunchPlanCreateRequest. + * Constructs a new TaskResourceSpec. * @memberof flyteidl.admin - * @classdesc Represents a LaunchPlanCreateRequest. - * @implements ILaunchPlanCreateRequest + * @classdesc Represents a TaskResourceSpec. + * @implements ITaskResourceSpec * @constructor - * @param {flyteidl.admin.ILaunchPlanCreateRequest=} [properties] Properties to set + * @param {flyteidl.admin.ITaskResourceSpec=} [properties] Properties to set */ - function LaunchPlanCreateRequest(properties) { + function TaskResourceSpec(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -35207,75 +35255,114 @@ } /** - * LaunchPlanCreateRequest id. - * @member {flyteidl.core.IIdentifier|null|undefined} id - * @memberof flyteidl.admin.LaunchPlanCreateRequest + * TaskResourceSpec cpu. + * @member {string} cpu + * @memberof flyteidl.admin.TaskResourceSpec * @instance */ - LaunchPlanCreateRequest.prototype.id = null; + TaskResourceSpec.prototype.cpu = ""; /** - * LaunchPlanCreateRequest spec. - * @member {flyteidl.admin.ILaunchPlanSpec|null|undefined} spec - * @memberof flyteidl.admin.LaunchPlanCreateRequest + * TaskResourceSpec gpu. + * @member {string} gpu + * @memberof flyteidl.admin.TaskResourceSpec * @instance */ - LaunchPlanCreateRequest.prototype.spec = null; + TaskResourceSpec.prototype.gpu = ""; /** - * Creates a new LaunchPlanCreateRequest instance using the specified properties. + * TaskResourceSpec memory. + * @member {string} memory + * @memberof flyteidl.admin.TaskResourceSpec + * @instance + */ + TaskResourceSpec.prototype.memory = ""; + + /** + * TaskResourceSpec storage. + * @member {string} storage + * @memberof flyteidl.admin.TaskResourceSpec + * @instance + */ + TaskResourceSpec.prototype.storage = ""; + + /** + * TaskResourceSpec ephemeralStorage. + * @member {string} ephemeralStorage + * @memberof flyteidl.admin.TaskResourceSpec + * @instance + */ + TaskResourceSpec.prototype.ephemeralStorage = ""; + + /** + * Creates a new TaskResourceSpec instance using the specified properties. * @function create - * @memberof flyteidl.admin.LaunchPlanCreateRequest + * @memberof flyteidl.admin.TaskResourceSpec * @static - * @param {flyteidl.admin.ILaunchPlanCreateRequest=} [properties] Properties to set - * @returns {flyteidl.admin.LaunchPlanCreateRequest} LaunchPlanCreateRequest instance + * @param {flyteidl.admin.ITaskResourceSpec=} [properties] Properties to set + * @returns {flyteidl.admin.TaskResourceSpec} TaskResourceSpec instance */ - LaunchPlanCreateRequest.create = function create(properties) { - return new LaunchPlanCreateRequest(properties); + TaskResourceSpec.create = function create(properties) { + return new TaskResourceSpec(properties); }; /** - * Encodes the specified LaunchPlanCreateRequest message. Does not implicitly {@link flyteidl.admin.LaunchPlanCreateRequest.verify|verify} messages. + * Encodes the specified TaskResourceSpec message. Does not implicitly {@link flyteidl.admin.TaskResourceSpec.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.LaunchPlanCreateRequest + * @memberof flyteidl.admin.TaskResourceSpec * @static - * @param {flyteidl.admin.ILaunchPlanCreateRequest} message LaunchPlanCreateRequest message or plain object to encode + * @param {flyteidl.admin.ITaskResourceSpec} message TaskResourceSpec message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LaunchPlanCreateRequest.encode = function encode(message, writer) { + TaskResourceSpec.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.id != null && message.hasOwnProperty("id")) - $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.spec != null && message.hasOwnProperty("spec")) - $root.flyteidl.admin.LaunchPlanSpec.encode(message.spec, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.cpu != null && message.hasOwnProperty("cpu")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.cpu); + if (message.gpu != null && message.hasOwnProperty("gpu")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.gpu); + if (message.memory != null && message.hasOwnProperty("memory")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.memory); + if (message.storage != null && message.hasOwnProperty("storage")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.storage); + if (message.ephemeralStorage != null && message.hasOwnProperty("ephemeralStorage")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.ephemeralStorage); return writer; }; /** - * Decodes a LaunchPlanCreateRequest message from the specified reader or buffer. + * Decodes a TaskResourceSpec message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.LaunchPlanCreateRequest + * @memberof flyteidl.admin.TaskResourceSpec * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.LaunchPlanCreateRequest} LaunchPlanCreateRequest + * @returns {flyteidl.admin.TaskResourceSpec} TaskResourceSpec * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlanCreateRequest.decode = function decode(reader, length) { + TaskResourceSpec.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.admin.LaunchPlanCreateRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.TaskResourceSpec(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); + message.cpu = reader.string(); break; case 2: - message.spec = $root.flyteidl.admin.LaunchPlanSpec.decode(reader, reader.uint32()); + message.gpu = reader.string(); + break; + case 3: + message.memory = reader.string(); + break; + case 4: + message.storage = reader.string(); + break; + case 5: + message.ephemeralStorage = reader.string(); break; default: reader.skipType(tag & 7); @@ -35286,49 +35373,56 @@ }; /** - * Verifies a LaunchPlanCreateRequest message. + * Verifies a TaskResourceSpec message. * @function verify - * @memberof flyteidl.admin.LaunchPlanCreateRequest + * @memberof flyteidl.admin.TaskResourceSpec * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlanCreateRequest.verify = function verify(message) { + TaskResourceSpec.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) { - var error = $root.flyteidl.core.Identifier.verify(message.id); - if (error) - return "id." + error; - } - if (message.spec != null && message.hasOwnProperty("spec")) { - var error = $root.flyteidl.admin.LaunchPlanSpec.verify(message.spec); - if (error) - return "spec." + error; - } + if (message.cpu != null && message.hasOwnProperty("cpu")) + if (!$util.isString(message.cpu)) + return "cpu: string expected"; + if (message.gpu != null && message.hasOwnProperty("gpu")) + if (!$util.isString(message.gpu)) + return "gpu: string expected"; + if (message.memory != null && message.hasOwnProperty("memory")) + if (!$util.isString(message.memory)) + return "memory: string expected"; + if (message.storage != null && message.hasOwnProperty("storage")) + if (!$util.isString(message.storage)) + return "storage: string expected"; + if (message.ephemeralStorage != null && message.hasOwnProperty("ephemeralStorage")) + if (!$util.isString(message.ephemeralStorage)) + return "ephemeralStorage: string expected"; return null; }; - return LaunchPlanCreateRequest; + return TaskResourceSpec; })(); - admin.LaunchPlanCreateResponse = (function() { + admin.TaskResourceAttributes = (function() { /** - * Properties of a LaunchPlanCreateResponse. + * Properties of a TaskResourceAttributes. * @memberof flyteidl.admin - * @interface ILaunchPlanCreateResponse + * @interface ITaskResourceAttributes + * @property {flyteidl.admin.ITaskResourceSpec|null} [defaults] TaskResourceAttributes defaults + * @property {flyteidl.admin.ITaskResourceSpec|null} [limits] TaskResourceAttributes limits */ /** - * Constructs a new LaunchPlanCreateResponse. + * Constructs a new TaskResourceAttributes. * @memberof flyteidl.admin - * @classdesc Represents a LaunchPlanCreateResponse. - * @implements ILaunchPlanCreateResponse + * @classdesc Represents a TaskResourceAttributes. + * @implements ITaskResourceAttributes * @constructor - * @param {flyteidl.admin.ILaunchPlanCreateResponse=} [properties] Properties to set + * @param {flyteidl.admin.ITaskResourceAttributes=} [properties] Properties to set */ - function LaunchPlanCreateResponse(properties) { + function TaskResourceAttributes(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -35336,50 +35430,76 @@ } /** - * Creates a new LaunchPlanCreateResponse instance using the specified properties. + * TaskResourceAttributes defaults. + * @member {flyteidl.admin.ITaskResourceSpec|null|undefined} defaults + * @memberof flyteidl.admin.TaskResourceAttributes + * @instance + */ + TaskResourceAttributes.prototype.defaults = null; + + /** + * TaskResourceAttributes limits. + * @member {flyteidl.admin.ITaskResourceSpec|null|undefined} limits + * @memberof flyteidl.admin.TaskResourceAttributes + * @instance + */ + TaskResourceAttributes.prototype.limits = null; + + /** + * Creates a new TaskResourceAttributes instance using the specified properties. * @function create - * @memberof flyteidl.admin.LaunchPlanCreateResponse + * @memberof flyteidl.admin.TaskResourceAttributes * @static - * @param {flyteidl.admin.ILaunchPlanCreateResponse=} [properties] Properties to set - * @returns {flyteidl.admin.LaunchPlanCreateResponse} LaunchPlanCreateResponse instance + * @param {flyteidl.admin.ITaskResourceAttributes=} [properties] Properties to set + * @returns {flyteidl.admin.TaskResourceAttributes} TaskResourceAttributes instance */ - LaunchPlanCreateResponse.create = function create(properties) { - return new LaunchPlanCreateResponse(properties); + TaskResourceAttributes.create = function create(properties) { + return new TaskResourceAttributes(properties); }; /** - * Encodes the specified LaunchPlanCreateResponse message. Does not implicitly {@link flyteidl.admin.LaunchPlanCreateResponse.verify|verify} messages. + * Encodes the specified TaskResourceAttributes message. Does not implicitly {@link flyteidl.admin.TaskResourceAttributes.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.LaunchPlanCreateResponse + * @memberof flyteidl.admin.TaskResourceAttributes * @static - * @param {flyteidl.admin.ILaunchPlanCreateResponse} message LaunchPlanCreateResponse message or plain object to encode + * @param {flyteidl.admin.ITaskResourceAttributes} message TaskResourceAttributes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LaunchPlanCreateResponse.encode = function encode(message, writer) { + TaskResourceAttributes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.defaults != null && message.hasOwnProperty("defaults")) + $root.flyteidl.admin.TaskResourceSpec.encode(message.defaults, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.limits != null && message.hasOwnProperty("limits")) + $root.flyteidl.admin.TaskResourceSpec.encode(message.limits, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes a LaunchPlanCreateResponse message from the specified reader or buffer. + * Decodes a TaskResourceAttributes message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.LaunchPlanCreateResponse + * @memberof flyteidl.admin.TaskResourceAttributes * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.LaunchPlanCreateResponse} LaunchPlanCreateResponse + * @returns {flyteidl.admin.TaskResourceAttributes} TaskResourceAttributes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlanCreateResponse.decode = function decode(reader, length) { + TaskResourceAttributes.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.admin.LaunchPlanCreateResponse(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.TaskResourceAttributes(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: + message.defaults = $root.flyteidl.admin.TaskResourceSpec.decode(reader, reader.uint32()); + break; + case 2: + message.limits = $root.flyteidl.admin.TaskResourceSpec.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -35389,56 +35509,51 @@ }; /** - * Verifies a LaunchPlanCreateResponse message. + * Verifies a TaskResourceAttributes message. * @function verify - * @memberof flyteidl.admin.LaunchPlanCreateResponse + * @memberof flyteidl.admin.TaskResourceAttributes * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlanCreateResponse.verify = function verify(message) { + TaskResourceAttributes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.defaults != null && message.hasOwnProperty("defaults")) { + var error = $root.flyteidl.admin.TaskResourceSpec.verify(message.defaults); + if (error) + return "defaults." + error; + } + if (message.limits != null && message.hasOwnProperty("limits")) { + var error = $root.flyteidl.admin.TaskResourceSpec.verify(message.limits); + if (error) + return "limits." + error; + } return null; }; - return LaunchPlanCreateResponse; - })(); - - /** - * LaunchPlanState enum. - * @name flyteidl.admin.LaunchPlanState - * @enum {string} - * @property {number} INACTIVE=0 INACTIVE value - * @property {number} ACTIVE=1 ACTIVE value - */ - admin.LaunchPlanState = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "INACTIVE"] = 0; - values[valuesById[1] = "ACTIVE"] = 1; - return values; + return TaskResourceAttributes; })(); - admin.LaunchPlan = (function() { + admin.ClusterResourceAttributes = (function() { /** - * Properties of a LaunchPlan. + * Properties of a ClusterResourceAttributes. * @memberof flyteidl.admin - * @interface ILaunchPlan - * @property {flyteidl.core.IIdentifier|null} [id] LaunchPlan id - * @property {flyteidl.admin.ILaunchPlanSpec|null} [spec] LaunchPlan spec - * @property {flyteidl.admin.ILaunchPlanClosure|null} [closure] LaunchPlan closure + * @interface IClusterResourceAttributes + * @property {Object.|null} [attributes] ClusterResourceAttributes attributes */ /** - * Constructs a new LaunchPlan. + * Constructs a new ClusterResourceAttributes. * @memberof flyteidl.admin - * @classdesc Represents a LaunchPlan. - * @implements ILaunchPlan + * @classdesc Represents a ClusterResourceAttributes. + * @implements IClusterResourceAttributes * @constructor - * @param {flyteidl.admin.ILaunchPlan=} [properties] Properties to set + * @param {flyteidl.admin.IClusterResourceAttributes=} [properties] Properties to set */ - function LaunchPlan(properties) { + function ClusterResourceAttributes(properties) { + this.attributes = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -35446,88 +35561,68 @@ } /** - * LaunchPlan id. - * @member {flyteidl.core.IIdentifier|null|undefined} id - * @memberof flyteidl.admin.LaunchPlan - * @instance - */ - LaunchPlan.prototype.id = null; - - /** - * LaunchPlan spec. - * @member {flyteidl.admin.ILaunchPlanSpec|null|undefined} spec - * @memberof flyteidl.admin.LaunchPlan - * @instance - */ - LaunchPlan.prototype.spec = null; - - /** - * LaunchPlan closure. - * @member {flyteidl.admin.ILaunchPlanClosure|null|undefined} closure - * @memberof flyteidl.admin.LaunchPlan + * ClusterResourceAttributes attributes. + * @member {Object.} attributes + * @memberof flyteidl.admin.ClusterResourceAttributes * @instance */ - LaunchPlan.prototype.closure = null; + ClusterResourceAttributes.prototype.attributes = $util.emptyObject; /** - * Creates a new LaunchPlan instance using the specified properties. + * Creates a new ClusterResourceAttributes instance using the specified properties. * @function create - * @memberof flyteidl.admin.LaunchPlan + * @memberof flyteidl.admin.ClusterResourceAttributes * @static - * @param {flyteidl.admin.ILaunchPlan=} [properties] Properties to set - * @returns {flyteidl.admin.LaunchPlan} LaunchPlan instance + * @param {flyteidl.admin.IClusterResourceAttributes=} [properties] Properties to set + * @returns {flyteidl.admin.ClusterResourceAttributes} ClusterResourceAttributes instance */ - LaunchPlan.create = function create(properties) { - return new LaunchPlan(properties); + ClusterResourceAttributes.create = function create(properties) { + return new ClusterResourceAttributes(properties); }; /** - * Encodes the specified LaunchPlan message. Does not implicitly {@link flyteidl.admin.LaunchPlan.verify|verify} messages. + * Encodes the specified ClusterResourceAttributes message. Does not implicitly {@link flyteidl.admin.ClusterResourceAttributes.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.LaunchPlan + * @memberof flyteidl.admin.ClusterResourceAttributes * @static - * @param {flyteidl.admin.ILaunchPlan} message LaunchPlan message or plain object to encode + * @param {flyteidl.admin.IClusterResourceAttributes} message ClusterResourceAttributes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LaunchPlan.encode = function encode(message, writer) { + ClusterResourceAttributes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.id != null && message.hasOwnProperty("id")) - $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.spec != null && message.hasOwnProperty("spec")) - $root.flyteidl.admin.LaunchPlanSpec.encode(message.spec, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.closure != null && message.hasOwnProperty("closure")) - $root.flyteidl.admin.LaunchPlanClosure.encode(message.closure, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.attributes != null && message.hasOwnProperty("attributes")) + for (var keys = Object.keys(message.attributes), i = 0; i < keys.length; ++i) + writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.attributes[keys[i]]).ldelim(); return writer; }; /** - * Decodes a LaunchPlan message from the specified reader or buffer. + * Decodes a ClusterResourceAttributes message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.LaunchPlan + * @memberof flyteidl.admin.ClusterResourceAttributes * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.LaunchPlan} LaunchPlan + * @returns {flyteidl.admin.ClusterResourceAttributes} ClusterResourceAttributes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlan.decode = function decode(reader, length) { + ClusterResourceAttributes.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.admin.LaunchPlan(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.ClusterResourceAttributes(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); - break; - case 2: - message.spec = $root.flyteidl.admin.LaunchPlanSpec.decode(reader, reader.uint32()); - break; - case 3: - message.closure = $root.flyteidl.admin.LaunchPlanClosure.decode(reader, reader.uint32()); + reader.skip().pos++; + if (message.attributes === $util.emptyObject) + message.attributes = {}; + key = reader.string(); + reader.pos++; + message.attributes[key] = reader.string(); break; default: reader.skipType(tag & 7); @@ -35538,57 +35633,49 @@ }; /** - * Verifies a LaunchPlan message. + * Verifies a ClusterResourceAttributes message. * @function verify - * @memberof flyteidl.admin.LaunchPlan + * @memberof flyteidl.admin.ClusterResourceAttributes * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlan.verify = function verify(message) { + ClusterResourceAttributes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) { - var error = $root.flyteidl.core.Identifier.verify(message.id); - if (error) - return "id." + error; - } - if (message.spec != null && message.hasOwnProperty("spec")) { - var error = $root.flyteidl.admin.LaunchPlanSpec.verify(message.spec); - if (error) - return "spec." + error; - } - if (message.closure != null && message.hasOwnProperty("closure")) { - var error = $root.flyteidl.admin.LaunchPlanClosure.verify(message.closure); - if (error) - return "closure." + error; + if (message.attributes != null && message.hasOwnProperty("attributes")) { + if (!$util.isObject(message.attributes)) + return "attributes: object expected"; + var key = Object.keys(message.attributes); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.attributes[key[i]])) + return "attributes: string{k:string} expected"; } return null; }; - return LaunchPlan; + return ClusterResourceAttributes; })(); - admin.LaunchPlanList = (function() { + admin.ExecutionQueueAttributes = (function() { /** - * Properties of a LaunchPlanList. + * Properties of an ExecutionQueueAttributes. * @memberof flyteidl.admin - * @interface ILaunchPlanList - * @property {Array.|null} [launchPlans] LaunchPlanList launchPlans - * @property {string|null} [token] LaunchPlanList token + * @interface IExecutionQueueAttributes + * @property {Array.|null} [tags] ExecutionQueueAttributes tags */ /** - * Constructs a new LaunchPlanList. + * Constructs a new ExecutionQueueAttributes. * @memberof flyteidl.admin - * @classdesc Represents a LaunchPlanList. - * @implements ILaunchPlanList + * @classdesc Represents an ExecutionQueueAttributes. + * @implements IExecutionQueueAttributes * @constructor - * @param {flyteidl.admin.ILaunchPlanList=} [properties] Properties to set + * @param {flyteidl.admin.IExecutionQueueAttributes=} [properties] Properties to set */ - function LaunchPlanList(properties) { - this.launchPlans = []; + function ExecutionQueueAttributes(properties) { + this.tags = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -35596,78 +35683,65 @@ } /** - * LaunchPlanList launchPlans. - * @member {Array.} launchPlans - * @memberof flyteidl.admin.LaunchPlanList - * @instance - */ - LaunchPlanList.prototype.launchPlans = $util.emptyArray; - - /** - * LaunchPlanList token. - * @member {string} token - * @memberof flyteidl.admin.LaunchPlanList + * ExecutionQueueAttributes tags. + * @member {Array.} tags + * @memberof flyteidl.admin.ExecutionQueueAttributes * @instance */ - LaunchPlanList.prototype.token = ""; + ExecutionQueueAttributes.prototype.tags = $util.emptyArray; /** - * Creates a new LaunchPlanList instance using the specified properties. + * Creates a new ExecutionQueueAttributes instance using the specified properties. * @function create - * @memberof flyteidl.admin.LaunchPlanList + * @memberof flyteidl.admin.ExecutionQueueAttributes * @static - * @param {flyteidl.admin.ILaunchPlanList=} [properties] Properties to set - * @returns {flyteidl.admin.LaunchPlanList} LaunchPlanList instance + * @param {flyteidl.admin.IExecutionQueueAttributes=} [properties] Properties to set + * @returns {flyteidl.admin.ExecutionQueueAttributes} ExecutionQueueAttributes instance */ - LaunchPlanList.create = function create(properties) { - return new LaunchPlanList(properties); + ExecutionQueueAttributes.create = function create(properties) { + return new ExecutionQueueAttributes(properties); }; /** - * Encodes the specified LaunchPlanList message. Does not implicitly {@link flyteidl.admin.LaunchPlanList.verify|verify} messages. + * Encodes the specified ExecutionQueueAttributes message. Does not implicitly {@link flyteidl.admin.ExecutionQueueAttributes.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.LaunchPlanList + * @memberof flyteidl.admin.ExecutionQueueAttributes * @static - * @param {flyteidl.admin.ILaunchPlanList} message LaunchPlanList message or plain object to encode + * @param {flyteidl.admin.IExecutionQueueAttributes} message ExecutionQueueAttributes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LaunchPlanList.encode = function encode(message, writer) { + ExecutionQueueAttributes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.launchPlans != null && message.launchPlans.length) - for (var i = 0; i < message.launchPlans.length; ++i) - $root.flyteidl.admin.LaunchPlan.encode(message.launchPlans[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.token != null && message.hasOwnProperty("token")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.token); + if (message.tags != null && message.tags.length) + for (var i = 0; i < message.tags.length; ++i) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.tags[i]); return writer; }; /** - * Decodes a LaunchPlanList message from the specified reader or buffer. + * Decodes an ExecutionQueueAttributes message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.LaunchPlanList + * @memberof flyteidl.admin.ExecutionQueueAttributes * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.LaunchPlanList} LaunchPlanList + * @returns {flyteidl.admin.ExecutionQueueAttributes} ExecutionQueueAttributes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlanList.decode = function decode(reader, length) { + ExecutionQueueAttributes.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.admin.LaunchPlanList(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.ExecutionQueueAttributes(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.launchPlans && message.launchPlans.length)) - message.launchPlans = []; - message.launchPlans.push($root.flyteidl.admin.LaunchPlan.decode(reader, reader.uint32())); - break; - case 2: - message.token = reader.string(); + if (!(message.tags && message.tags.length)) + message.tags = []; + message.tags.push(reader.string()); break; default: reader.skipType(tag & 7); @@ -35678,53 +35752,47 @@ }; /** - * Verifies a LaunchPlanList message. + * Verifies an ExecutionQueueAttributes message. * @function verify - * @memberof flyteidl.admin.LaunchPlanList + * @memberof flyteidl.admin.ExecutionQueueAttributes * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlanList.verify = function verify(message) { + ExecutionQueueAttributes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.launchPlans != null && message.hasOwnProperty("launchPlans")) { - if (!Array.isArray(message.launchPlans)) - return "launchPlans: array expected"; - for (var i = 0; i < message.launchPlans.length; ++i) { - var error = $root.flyteidl.admin.LaunchPlan.verify(message.launchPlans[i]); - if (error) - return "launchPlans." + error; - } + if (message.tags != null && message.hasOwnProperty("tags")) { + if (!Array.isArray(message.tags)) + return "tags: array expected"; + for (var i = 0; i < message.tags.length; ++i) + if (!$util.isString(message.tags[i])) + return "tags: string[] expected"; } - if (message.token != null && message.hasOwnProperty("token")) - if (!$util.isString(message.token)) - return "token: string expected"; return null; }; - return LaunchPlanList; + return ExecutionQueueAttributes; })(); - admin.Auth = (function() { + admin.ExecutionClusterLabel = (function() { /** - * Properties of an Auth. + * Properties of an ExecutionClusterLabel. * @memberof flyteidl.admin - * @interface IAuth - * @property {string|null} [assumableIamRole] Auth assumableIamRole - * @property {string|null} [kubernetesServiceAccount] Auth kubernetesServiceAccount + * @interface IExecutionClusterLabel + * @property {string|null} [value] ExecutionClusterLabel value */ /** - * Constructs a new Auth. + * Constructs a new ExecutionClusterLabel. * @memberof flyteidl.admin - * @classdesc Represents an Auth. - * @implements IAuth + * @classdesc Represents an ExecutionClusterLabel. + * @implements IExecutionClusterLabel * @constructor - * @param {flyteidl.admin.IAuth=} [properties] Properties to set + * @param {flyteidl.admin.IExecutionClusterLabel=} [properties] Properties to set */ - function Auth(properties) { + function ExecutionClusterLabel(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -35732,75 +35800,62 @@ } /** - * Auth assumableIamRole. - * @member {string} assumableIamRole - * @memberof flyteidl.admin.Auth - * @instance - */ - Auth.prototype.assumableIamRole = ""; - - /** - * Auth kubernetesServiceAccount. - * @member {string} kubernetesServiceAccount - * @memberof flyteidl.admin.Auth + * ExecutionClusterLabel value. + * @member {string} value + * @memberof flyteidl.admin.ExecutionClusterLabel * @instance */ - Auth.prototype.kubernetesServiceAccount = ""; + ExecutionClusterLabel.prototype.value = ""; /** - * Creates a new Auth instance using the specified properties. + * Creates a new ExecutionClusterLabel instance using the specified properties. * @function create - * @memberof flyteidl.admin.Auth + * @memberof flyteidl.admin.ExecutionClusterLabel * @static - * @param {flyteidl.admin.IAuth=} [properties] Properties to set - * @returns {flyteidl.admin.Auth} Auth instance + * @param {flyteidl.admin.IExecutionClusterLabel=} [properties] Properties to set + * @returns {flyteidl.admin.ExecutionClusterLabel} ExecutionClusterLabel instance */ - Auth.create = function create(properties) { - return new Auth(properties); + ExecutionClusterLabel.create = function create(properties) { + return new ExecutionClusterLabel(properties); }; /** - * Encodes the specified Auth message. Does not implicitly {@link flyteidl.admin.Auth.verify|verify} messages. + * Encodes the specified ExecutionClusterLabel message. Does not implicitly {@link flyteidl.admin.ExecutionClusterLabel.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.Auth + * @memberof flyteidl.admin.ExecutionClusterLabel * @static - * @param {flyteidl.admin.IAuth} message Auth message or plain object to encode + * @param {flyteidl.admin.IExecutionClusterLabel} message ExecutionClusterLabel message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Auth.encode = function encode(message, writer) { + ExecutionClusterLabel.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.assumableIamRole != null && message.hasOwnProperty("assumableIamRole")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.assumableIamRole); - if (message.kubernetesServiceAccount != null && message.hasOwnProperty("kubernetesServiceAccount")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.kubernetesServiceAccount); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.value); return writer; }; /** - * Decodes an Auth message from the specified reader or buffer. + * Decodes an ExecutionClusterLabel message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.Auth + * @memberof flyteidl.admin.ExecutionClusterLabel * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.Auth} Auth + * @returns {flyteidl.admin.ExecutionClusterLabel} ExecutionClusterLabel * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Auth.decode = function decode(reader, length) { + ExecutionClusterLabel.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.admin.Auth(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.ExecutionClusterLabel(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.assumableIamRole = reader.string(); - break; - case 2: - message.kubernetesServiceAccount = reader.string(); + message.value = reader.string(); break; default: reader.skipType(tag & 7); @@ -35811,61 +35866,46 @@ }; /** - * Verifies an Auth message. + * Verifies an ExecutionClusterLabel message. * @function verify - * @memberof flyteidl.admin.Auth + * @memberof flyteidl.admin.ExecutionClusterLabel * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Auth.verify = function verify(message) { + ExecutionClusterLabel.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.assumableIamRole != null && message.hasOwnProperty("assumableIamRole")) - if (!$util.isString(message.assumableIamRole)) - return "assumableIamRole: string expected"; - if (message.kubernetesServiceAccount != null && message.hasOwnProperty("kubernetesServiceAccount")) - if (!$util.isString(message.kubernetesServiceAccount)) - return "kubernetesServiceAccount: string expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isString(message.value)) + return "value: string expected"; return null; }; - return Auth; + return ExecutionClusterLabel; })(); - admin.LaunchPlanSpec = (function() { + admin.PluginOverride = (function() { /** - * Properties of a LaunchPlanSpec. + * Properties of a PluginOverride. * @memberof flyteidl.admin - * @interface ILaunchPlanSpec - * @property {flyteidl.core.IIdentifier|null} [workflowId] LaunchPlanSpec workflowId - * @property {flyteidl.admin.ILaunchPlanMetadata|null} [entityMetadata] LaunchPlanSpec entityMetadata - * @property {flyteidl.core.IParameterMap|null} [defaultInputs] LaunchPlanSpec defaultInputs - * @property {flyteidl.core.ILiteralMap|null} [fixedInputs] LaunchPlanSpec fixedInputs - * @property {string|null} [role] LaunchPlanSpec role - * @property {flyteidl.admin.ILabels|null} [labels] LaunchPlanSpec labels - * @property {flyteidl.admin.IAnnotations|null} [annotations] LaunchPlanSpec annotations - * @property {flyteidl.admin.IAuth|null} [auth] LaunchPlanSpec auth - * @property {flyteidl.admin.IAuthRole|null} [authRole] LaunchPlanSpec authRole - * @property {flyteidl.core.ISecurityContext|null} [securityContext] LaunchPlanSpec securityContext - * @property {flyteidl.core.IQualityOfService|null} [qualityOfService] LaunchPlanSpec qualityOfService - * @property {flyteidl.admin.IRawOutputDataConfig|null} [rawOutputDataConfig] LaunchPlanSpec rawOutputDataConfig - * @property {number|null} [maxParallelism] LaunchPlanSpec maxParallelism - * @property {google.protobuf.IBoolValue|null} [interruptible] LaunchPlanSpec interruptible - * @property {boolean|null} [overwriteCache] LaunchPlanSpec overwriteCache - * @property {flyteidl.admin.IEnvs|null} [envs] LaunchPlanSpec envs + * @interface IPluginOverride + * @property {string|null} [taskType] PluginOverride taskType + * @property {Array.|null} [pluginId] PluginOverride pluginId + * @property {flyteidl.admin.PluginOverride.MissingPluginBehavior|null} [missingPluginBehavior] PluginOverride missingPluginBehavior */ /** - * Constructs a new LaunchPlanSpec. + * Constructs a new PluginOverride. * @memberof flyteidl.admin - * @classdesc Represents a LaunchPlanSpec. - * @implements ILaunchPlanSpec + * @classdesc Represents a PluginOverride. + * @implements IPluginOverride * @constructor - * @param {flyteidl.admin.ILaunchPlanSpec=} [properties] Properties to set + * @param {flyteidl.admin.IPluginOverride=} [properties] Properties to set */ - function LaunchPlanSpec(properties) { + function PluginOverride(properties) { + this.pluginId = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -35873,257 +35913,234 @@ } /** - * LaunchPlanSpec workflowId. - * @member {flyteidl.core.IIdentifier|null|undefined} workflowId - * @memberof flyteidl.admin.LaunchPlanSpec + * PluginOverride taskType. + * @member {string} taskType + * @memberof flyteidl.admin.PluginOverride * @instance */ - LaunchPlanSpec.prototype.workflowId = null; + PluginOverride.prototype.taskType = ""; /** - * LaunchPlanSpec entityMetadata. - * @member {flyteidl.admin.ILaunchPlanMetadata|null|undefined} entityMetadata - * @memberof flyteidl.admin.LaunchPlanSpec + * PluginOverride pluginId. + * @member {Array.} pluginId + * @memberof flyteidl.admin.PluginOverride * @instance */ - LaunchPlanSpec.prototype.entityMetadata = null; + PluginOverride.prototype.pluginId = $util.emptyArray; /** - * LaunchPlanSpec defaultInputs. - * @member {flyteidl.core.IParameterMap|null|undefined} defaultInputs - * @memberof flyteidl.admin.LaunchPlanSpec + * PluginOverride missingPluginBehavior. + * @member {flyteidl.admin.PluginOverride.MissingPluginBehavior} missingPluginBehavior + * @memberof flyteidl.admin.PluginOverride * @instance */ - LaunchPlanSpec.prototype.defaultInputs = null; + PluginOverride.prototype.missingPluginBehavior = 0; /** - * LaunchPlanSpec fixedInputs. - * @member {flyteidl.core.ILiteralMap|null|undefined} fixedInputs - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance + * Creates a new PluginOverride instance using the specified properties. + * @function create + * @memberof flyteidl.admin.PluginOverride + * @static + * @param {flyteidl.admin.IPluginOverride=} [properties] Properties to set + * @returns {flyteidl.admin.PluginOverride} PluginOverride instance */ - LaunchPlanSpec.prototype.fixedInputs = null; + PluginOverride.create = function create(properties) { + return new PluginOverride(properties); + }; /** - * LaunchPlanSpec role. - * @member {string} role - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance + * Encodes the specified PluginOverride message. Does not implicitly {@link flyteidl.admin.PluginOverride.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.PluginOverride + * @static + * @param {flyteidl.admin.IPluginOverride} message PluginOverride message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - LaunchPlanSpec.prototype.role = ""; + PluginOverride.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.taskType != null && message.hasOwnProperty("taskType")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.taskType); + if (message.pluginId != null && message.pluginId.length) + for (var i = 0; i < message.pluginId.length; ++i) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.pluginId[i]); + if (message.missingPluginBehavior != null && message.hasOwnProperty("missingPluginBehavior")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.missingPluginBehavior); + return writer; + }; /** - * LaunchPlanSpec labels. - * @member {flyteidl.admin.ILabels|null|undefined} labels - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance + * Decodes a PluginOverride message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.PluginOverride + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.PluginOverride} PluginOverride + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlanSpec.prototype.labels = null; + PluginOverride.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.admin.PluginOverride(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.taskType = reader.string(); + break; + case 2: + if (!(message.pluginId && message.pluginId.length)) + message.pluginId = []; + message.pluginId.push(reader.string()); + break; + case 4: + message.missingPluginBehavior = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; /** - * LaunchPlanSpec annotations. - * @member {flyteidl.admin.IAnnotations|null|undefined} annotations - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance - */ - LaunchPlanSpec.prototype.annotations = null; - - /** - * LaunchPlanSpec auth. - * @member {flyteidl.admin.IAuth|null|undefined} auth - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance - */ - LaunchPlanSpec.prototype.auth = null; - - /** - * LaunchPlanSpec authRole. - * @member {flyteidl.admin.IAuthRole|null|undefined} authRole - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance - */ - LaunchPlanSpec.prototype.authRole = null; - - /** - * LaunchPlanSpec securityContext. - * @member {flyteidl.core.ISecurityContext|null|undefined} securityContext - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance + * Verifies a PluginOverride message. + * @function verify + * @memberof flyteidl.admin.PluginOverride + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlanSpec.prototype.securityContext = null; + PluginOverride.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.taskType != null && message.hasOwnProperty("taskType")) + if (!$util.isString(message.taskType)) + return "taskType: string expected"; + if (message.pluginId != null && message.hasOwnProperty("pluginId")) { + if (!Array.isArray(message.pluginId)) + return "pluginId: array expected"; + for (var i = 0; i < message.pluginId.length; ++i) + if (!$util.isString(message.pluginId[i])) + return "pluginId: string[] expected"; + } + if (message.missingPluginBehavior != null && message.hasOwnProperty("missingPluginBehavior")) + switch (message.missingPluginBehavior) { + default: + return "missingPluginBehavior: enum value expected"; + case 0: + case 1: + break; + } + return null; + }; /** - * LaunchPlanSpec qualityOfService. - * @member {flyteidl.core.IQualityOfService|null|undefined} qualityOfService - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance + * MissingPluginBehavior enum. + * @name flyteidl.admin.PluginOverride.MissingPluginBehavior + * @enum {string} + * @property {number} FAIL=0 FAIL value + * @property {number} USE_DEFAULT=1 USE_DEFAULT value */ - LaunchPlanSpec.prototype.qualityOfService = null; + PluginOverride.MissingPluginBehavior = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "FAIL"] = 0; + values[valuesById[1] = "USE_DEFAULT"] = 1; + return values; + })(); - /** - * LaunchPlanSpec rawOutputDataConfig. - * @member {flyteidl.admin.IRawOutputDataConfig|null|undefined} rawOutputDataConfig - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance - */ - LaunchPlanSpec.prototype.rawOutputDataConfig = null; + return PluginOverride; + })(); - /** - * LaunchPlanSpec maxParallelism. - * @member {number} maxParallelism - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance - */ - LaunchPlanSpec.prototype.maxParallelism = 0; + admin.PluginOverrides = (function() { /** - * LaunchPlanSpec interruptible. - * @member {google.protobuf.IBoolValue|null|undefined} interruptible - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance + * Properties of a PluginOverrides. + * @memberof flyteidl.admin + * @interface IPluginOverrides + * @property {Array.|null} [overrides] PluginOverrides overrides */ - LaunchPlanSpec.prototype.interruptible = null; /** - * LaunchPlanSpec overwriteCache. - * @member {boolean} overwriteCache - * @memberof flyteidl.admin.LaunchPlanSpec - * @instance + * Constructs a new PluginOverrides. + * @memberof flyteidl.admin + * @classdesc Represents a PluginOverrides. + * @implements IPluginOverrides + * @constructor + * @param {flyteidl.admin.IPluginOverrides=} [properties] Properties to set */ - LaunchPlanSpec.prototype.overwriteCache = false; + function PluginOverrides(properties) { + this.overrides = []; + 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]]; + } /** - * LaunchPlanSpec envs. - * @member {flyteidl.admin.IEnvs|null|undefined} envs - * @memberof flyteidl.admin.LaunchPlanSpec + * PluginOverrides overrides. + * @member {Array.} overrides + * @memberof flyteidl.admin.PluginOverrides * @instance */ - LaunchPlanSpec.prototype.envs = null; + PluginOverrides.prototype.overrides = $util.emptyArray; /** - * Creates a new LaunchPlanSpec instance using the specified properties. + * Creates a new PluginOverrides instance using the specified properties. * @function create - * @memberof flyteidl.admin.LaunchPlanSpec + * @memberof flyteidl.admin.PluginOverrides * @static - * @param {flyteidl.admin.ILaunchPlanSpec=} [properties] Properties to set - * @returns {flyteidl.admin.LaunchPlanSpec} LaunchPlanSpec instance + * @param {flyteidl.admin.IPluginOverrides=} [properties] Properties to set + * @returns {flyteidl.admin.PluginOverrides} PluginOverrides instance */ - LaunchPlanSpec.create = function create(properties) { - return new LaunchPlanSpec(properties); + PluginOverrides.create = function create(properties) { + return new PluginOverrides(properties); }; /** - * Encodes the specified LaunchPlanSpec message. Does not implicitly {@link flyteidl.admin.LaunchPlanSpec.verify|verify} messages. + * Encodes the specified PluginOverrides message. Does not implicitly {@link flyteidl.admin.PluginOverrides.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.LaunchPlanSpec + * @memberof flyteidl.admin.PluginOverrides * @static - * @param {flyteidl.admin.ILaunchPlanSpec} message LaunchPlanSpec message or plain object to encode + * @param {flyteidl.admin.IPluginOverrides} message PluginOverrides message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LaunchPlanSpec.encode = function encode(message, writer) { + PluginOverrides.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.workflowId != null && message.hasOwnProperty("workflowId")) - $root.flyteidl.core.Identifier.encode(message.workflowId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.entityMetadata != null && message.hasOwnProperty("entityMetadata")) - $root.flyteidl.admin.LaunchPlanMetadata.encode(message.entityMetadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.defaultInputs != null && message.hasOwnProperty("defaultInputs")) - $root.flyteidl.core.ParameterMap.encode(message.defaultInputs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.fixedInputs != null && message.hasOwnProperty("fixedInputs")) - $root.flyteidl.core.LiteralMap.encode(message.fixedInputs, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.role != null && message.hasOwnProperty("role")) - writer.uint32(/* id 5, wireType 2 =*/42).string(message.role); - if (message.labels != null && message.hasOwnProperty("labels")) - $root.flyteidl.admin.Labels.encode(message.labels, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.annotations != null && message.hasOwnProperty("annotations")) - $root.flyteidl.admin.Annotations.encode(message.annotations, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.auth != null && message.hasOwnProperty("auth")) - $root.flyteidl.admin.Auth.encode(message.auth, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.authRole != null && message.hasOwnProperty("authRole")) - $root.flyteidl.admin.AuthRole.encode(message.authRole, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.securityContext != null && message.hasOwnProperty("securityContext")) - $root.flyteidl.core.SecurityContext.encode(message.securityContext, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); - if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) - $root.flyteidl.core.QualityOfService.encode(message.qualityOfService, writer.uint32(/* id 16, wireType 2 =*/130).fork()).ldelim(); - if (message.rawOutputDataConfig != null && message.hasOwnProperty("rawOutputDataConfig")) - $root.flyteidl.admin.RawOutputDataConfig.encode(message.rawOutputDataConfig, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); - if (message.maxParallelism != null && message.hasOwnProperty("maxParallelism")) - writer.uint32(/* id 18, wireType 0 =*/144).int32(message.maxParallelism); - if (message.interruptible != null && message.hasOwnProperty("interruptible")) - $root.google.protobuf.BoolValue.encode(message.interruptible, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); - if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) - writer.uint32(/* id 20, wireType 0 =*/160).bool(message.overwriteCache); - if (message.envs != null && message.hasOwnProperty("envs")) - $root.flyteidl.admin.Envs.encode(message.envs, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); + if (message.overrides != null && message.overrides.length) + for (var i = 0; i < message.overrides.length; ++i) + $root.flyteidl.admin.PluginOverride.encode(message.overrides[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a LaunchPlanSpec message from the specified reader or buffer. + * Decodes a PluginOverrides message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.LaunchPlanSpec + * @memberof flyteidl.admin.PluginOverrides * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.LaunchPlanSpec} LaunchPlanSpec + * @returns {flyteidl.admin.PluginOverrides} PluginOverrides * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlanSpec.decode = function decode(reader, length) { + PluginOverrides.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.admin.LaunchPlanSpec(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.PluginOverrides(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.workflowId = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); - break; - case 2: - message.entityMetadata = $root.flyteidl.admin.LaunchPlanMetadata.decode(reader, reader.uint32()); - break; - case 3: - message.defaultInputs = $root.flyteidl.core.ParameterMap.decode(reader, reader.uint32()); - break; - case 4: - message.fixedInputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); - break; - case 5: - message.role = reader.string(); - break; - case 6: - message.labels = $root.flyteidl.admin.Labels.decode(reader, reader.uint32()); - break; - case 7: - message.annotations = $root.flyteidl.admin.Annotations.decode(reader, reader.uint32()); - break; - case 8: - message.auth = $root.flyteidl.admin.Auth.decode(reader, reader.uint32()); - break; - case 9: - message.authRole = $root.flyteidl.admin.AuthRole.decode(reader, reader.uint32()); - break; - case 10: - message.securityContext = $root.flyteidl.core.SecurityContext.decode(reader, reader.uint32()); - break; - case 16: - message.qualityOfService = $root.flyteidl.core.QualityOfService.decode(reader, reader.uint32()); - break; - case 17: - message.rawOutputDataConfig = $root.flyteidl.admin.RawOutputDataConfig.decode(reader, reader.uint32()); - break; - case 18: - message.maxParallelism = reader.int32(); - break; - case 19: - message.interruptible = $root.google.protobuf.BoolValue.decode(reader, reader.uint32()); - break; - case 20: - message.overwriteCache = reader.bool(); - break; - case 21: - message.envs = $root.flyteidl.admin.Envs.decode(reader, reader.uint32()); + if (!(message.overrides && message.overrides.length)) + message.overrides = []; + message.overrides.push($root.flyteidl.admin.PluginOverride.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -36134,118 +36151,56 @@ }; /** - * Verifies a LaunchPlanSpec message. + * Verifies a PluginOverrides message. * @function verify - * @memberof flyteidl.admin.LaunchPlanSpec + * @memberof flyteidl.admin.PluginOverrides * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlanSpec.verify = function verify(message) { + PluginOverrides.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.workflowId != null && message.hasOwnProperty("workflowId")) { - var error = $root.flyteidl.core.Identifier.verify(message.workflowId); - if (error) - return "workflowId." + error; - } - if (message.entityMetadata != null && message.hasOwnProperty("entityMetadata")) { - var error = $root.flyteidl.admin.LaunchPlanMetadata.verify(message.entityMetadata); - if (error) - return "entityMetadata." + error; - } - if (message.defaultInputs != null && message.hasOwnProperty("defaultInputs")) { - var error = $root.flyteidl.core.ParameterMap.verify(message.defaultInputs); - if (error) - return "defaultInputs." + error; - } - if (message.fixedInputs != null && message.hasOwnProperty("fixedInputs")) { - var error = $root.flyteidl.core.LiteralMap.verify(message.fixedInputs); - if (error) - return "fixedInputs." + error; - } - if (message.role != null && message.hasOwnProperty("role")) - if (!$util.isString(message.role)) - return "role: string expected"; - if (message.labels != null && message.hasOwnProperty("labels")) { - var error = $root.flyteidl.admin.Labels.verify(message.labels); - if (error) - return "labels." + error; - } - if (message.annotations != null && message.hasOwnProperty("annotations")) { - var error = $root.flyteidl.admin.Annotations.verify(message.annotations); - if (error) - return "annotations." + error; - } - if (message.auth != null && message.hasOwnProperty("auth")) { - var error = $root.flyteidl.admin.Auth.verify(message.auth); - if (error) - return "auth." + error; - } - if (message.authRole != null && message.hasOwnProperty("authRole")) { - var error = $root.flyteidl.admin.AuthRole.verify(message.authRole); - if (error) - return "authRole." + error; - } - if (message.securityContext != null && message.hasOwnProperty("securityContext")) { - var error = $root.flyteidl.core.SecurityContext.verify(message.securityContext); - if (error) - return "securityContext." + error; - } - if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) { - var error = $root.flyteidl.core.QualityOfService.verify(message.qualityOfService); - if (error) - return "qualityOfService." + error; - } - if (message.rawOutputDataConfig != null && message.hasOwnProperty("rawOutputDataConfig")) { - var error = $root.flyteidl.admin.RawOutputDataConfig.verify(message.rawOutputDataConfig); - if (error) - return "rawOutputDataConfig." + error; - } - if (message.maxParallelism != null && message.hasOwnProperty("maxParallelism")) - if (!$util.isInteger(message.maxParallelism)) - return "maxParallelism: integer expected"; - if (message.interruptible != null && message.hasOwnProperty("interruptible")) { - var error = $root.google.protobuf.BoolValue.verify(message.interruptible); - if (error) - return "interruptible." + error; - } - if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) - if (typeof message.overwriteCache !== "boolean") - return "overwriteCache: boolean expected"; - if (message.envs != null && message.hasOwnProperty("envs")) { - var error = $root.flyteidl.admin.Envs.verify(message.envs); - if (error) - return "envs." + error; + if (message.overrides != null && message.hasOwnProperty("overrides")) { + if (!Array.isArray(message.overrides)) + return "overrides: array expected"; + for (var i = 0; i < message.overrides.length; ++i) { + var error = $root.flyteidl.admin.PluginOverride.verify(message.overrides[i]); + if (error) + return "overrides." + error; + } } return null; }; - return LaunchPlanSpec; + return PluginOverrides; })(); - admin.LaunchPlanClosure = (function() { + admin.WorkflowExecutionConfig = (function() { /** - * Properties of a LaunchPlanClosure. + * Properties of a WorkflowExecutionConfig. * @memberof flyteidl.admin - * @interface ILaunchPlanClosure - * @property {flyteidl.admin.LaunchPlanState|null} [state] LaunchPlanClosure state - * @property {flyteidl.core.IParameterMap|null} [expectedInputs] LaunchPlanClosure expectedInputs - * @property {flyteidl.core.IVariableMap|null} [expectedOutputs] LaunchPlanClosure expectedOutputs - * @property {google.protobuf.ITimestamp|null} [createdAt] LaunchPlanClosure createdAt - * @property {google.protobuf.ITimestamp|null} [updatedAt] LaunchPlanClosure updatedAt + * @interface IWorkflowExecutionConfig + * @property {number|null} [maxParallelism] WorkflowExecutionConfig maxParallelism + * @property {flyteidl.core.ISecurityContext|null} [securityContext] WorkflowExecutionConfig securityContext + * @property {flyteidl.admin.IRawOutputDataConfig|null} [rawOutputDataConfig] WorkflowExecutionConfig rawOutputDataConfig + * @property {flyteidl.admin.ILabels|null} [labels] WorkflowExecutionConfig labels + * @property {flyteidl.admin.IAnnotations|null} [annotations] WorkflowExecutionConfig annotations + * @property {google.protobuf.IBoolValue|null} [interruptible] WorkflowExecutionConfig interruptible + * @property {boolean|null} [overwriteCache] WorkflowExecutionConfig overwriteCache + * @property {flyteidl.admin.IEnvs|null} [envs] WorkflowExecutionConfig envs */ /** - * Constructs a new LaunchPlanClosure. + * Constructs a new WorkflowExecutionConfig. * @memberof flyteidl.admin - * @classdesc Represents a LaunchPlanClosure. - * @implements ILaunchPlanClosure + * @classdesc Represents a WorkflowExecutionConfig. + * @implements IWorkflowExecutionConfig * @constructor - * @param {flyteidl.admin.ILaunchPlanClosure=} [properties] Properties to set + * @param {flyteidl.admin.IWorkflowExecutionConfig=} [properties] Properties to set */ - function LaunchPlanClosure(properties) { + function WorkflowExecutionConfig(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -36253,114 +36208,153 @@ } /** - * LaunchPlanClosure state. - * @member {flyteidl.admin.LaunchPlanState} state - * @memberof flyteidl.admin.LaunchPlanClosure + * WorkflowExecutionConfig maxParallelism. + * @member {number} maxParallelism + * @memberof flyteidl.admin.WorkflowExecutionConfig * @instance */ - LaunchPlanClosure.prototype.state = 0; + WorkflowExecutionConfig.prototype.maxParallelism = 0; /** - * LaunchPlanClosure expectedInputs. - * @member {flyteidl.core.IParameterMap|null|undefined} expectedInputs - * @memberof flyteidl.admin.LaunchPlanClosure + * WorkflowExecutionConfig securityContext. + * @member {flyteidl.core.ISecurityContext|null|undefined} securityContext + * @memberof flyteidl.admin.WorkflowExecutionConfig * @instance */ - LaunchPlanClosure.prototype.expectedInputs = null; + WorkflowExecutionConfig.prototype.securityContext = null; /** - * LaunchPlanClosure expectedOutputs. - * @member {flyteidl.core.IVariableMap|null|undefined} expectedOutputs - * @memberof flyteidl.admin.LaunchPlanClosure + * WorkflowExecutionConfig rawOutputDataConfig. + * @member {flyteidl.admin.IRawOutputDataConfig|null|undefined} rawOutputDataConfig + * @memberof flyteidl.admin.WorkflowExecutionConfig * @instance */ - LaunchPlanClosure.prototype.expectedOutputs = null; + WorkflowExecutionConfig.prototype.rawOutputDataConfig = null; /** - * LaunchPlanClosure createdAt. - * @member {google.protobuf.ITimestamp|null|undefined} createdAt - * @memberof flyteidl.admin.LaunchPlanClosure + * WorkflowExecutionConfig labels. + * @member {flyteidl.admin.ILabels|null|undefined} labels + * @memberof flyteidl.admin.WorkflowExecutionConfig * @instance */ - LaunchPlanClosure.prototype.createdAt = null; + WorkflowExecutionConfig.prototype.labels = null; /** - * LaunchPlanClosure updatedAt. - * @member {google.protobuf.ITimestamp|null|undefined} updatedAt - * @memberof flyteidl.admin.LaunchPlanClosure + * WorkflowExecutionConfig annotations. + * @member {flyteidl.admin.IAnnotations|null|undefined} annotations + * @memberof flyteidl.admin.WorkflowExecutionConfig * @instance */ - LaunchPlanClosure.prototype.updatedAt = null; + WorkflowExecutionConfig.prototype.annotations = null; /** - * Creates a new LaunchPlanClosure instance using the specified properties. + * WorkflowExecutionConfig interruptible. + * @member {google.protobuf.IBoolValue|null|undefined} interruptible + * @memberof flyteidl.admin.WorkflowExecutionConfig + * @instance + */ + WorkflowExecutionConfig.prototype.interruptible = null; + + /** + * WorkflowExecutionConfig overwriteCache. + * @member {boolean} overwriteCache + * @memberof flyteidl.admin.WorkflowExecutionConfig + * @instance + */ + WorkflowExecutionConfig.prototype.overwriteCache = false; + + /** + * WorkflowExecutionConfig envs. + * @member {flyteidl.admin.IEnvs|null|undefined} envs + * @memberof flyteidl.admin.WorkflowExecutionConfig + * @instance + */ + WorkflowExecutionConfig.prototype.envs = null; + + /** + * Creates a new WorkflowExecutionConfig instance using the specified properties. * @function create - * @memberof flyteidl.admin.LaunchPlanClosure + * @memberof flyteidl.admin.WorkflowExecutionConfig * @static - * @param {flyteidl.admin.ILaunchPlanClosure=} [properties] Properties to set - * @returns {flyteidl.admin.LaunchPlanClosure} LaunchPlanClosure instance + * @param {flyteidl.admin.IWorkflowExecutionConfig=} [properties] Properties to set + * @returns {flyteidl.admin.WorkflowExecutionConfig} WorkflowExecutionConfig instance */ - LaunchPlanClosure.create = function create(properties) { - return new LaunchPlanClosure(properties); + WorkflowExecutionConfig.create = function create(properties) { + return new WorkflowExecutionConfig(properties); }; /** - * Encodes the specified LaunchPlanClosure message. Does not implicitly {@link flyteidl.admin.LaunchPlanClosure.verify|verify} messages. + * Encodes the specified WorkflowExecutionConfig message. Does not implicitly {@link flyteidl.admin.WorkflowExecutionConfig.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.LaunchPlanClosure + * @memberof flyteidl.admin.WorkflowExecutionConfig * @static - * @param {flyteidl.admin.ILaunchPlanClosure} message LaunchPlanClosure message or plain object to encode + * @param {flyteidl.admin.IWorkflowExecutionConfig} message WorkflowExecutionConfig message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LaunchPlanClosure.encode = function encode(message, writer) { + WorkflowExecutionConfig.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.state != null && message.hasOwnProperty("state")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); - if (message.expectedInputs != null && message.hasOwnProperty("expectedInputs")) - $root.flyteidl.core.ParameterMap.encode(message.expectedInputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.expectedOutputs != null && message.hasOwnProperty("expectedOutputs")) - $root.flyteidl.core.VariableMap.encode(message.expectedOutputs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.createdAt != null && message.hasOwnProperty("createdAt")) - $root.google.protobuf.Timestamp.encode(message.createdAt, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.updatedAt != null && message.hasOwnProperty("updatedAt")) - $root.google.protobuf.Timestamp.encode(message.updatedAt, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.maxParallelism != null && message.hasOwnProperty("maxParallelism")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.maxParallelism); + if (message.securityContext != null && message.hasOwnProperty("securityContext")) + $root.flyteidl.core.SecurityContext.encode(message.securityContext, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.rawOutputDataConfig != null && message.hasOwnProperty("rawOutputDataConfig")) + $root.flyteidl.admin.RawOutputDataConfig.encode(message.rawOutputDataConfig, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.labels != null && message.hasOwnProperty("labels")) + $root.flyteidl.admin.Labels.encode(message.labels, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.annotations != null && message.hasOwnProperty("annotations")) + $root.flyteidl.admin.Annotations.encode(message.annotations, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.interruptible != null && message.hasOwnProperty("interruptible")) + $root.google.protobuf.BoolValue.encode(message.interruptible, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.overwriteCache); + if (message.envs != null && message.hasOwnProperty("envs")) + $root.flyteidl.admin.Envs.encode(message.envs, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); return writer; }; /** - * Decodes a LaunchPlanClosure message from the specified reader or buffer. + * Decodes a WorkflowExecutionConfig message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.LaunchPlanClosure + * @memberof flyteidl.admin.WorkflowExecutionConfig * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.LaunchPlanClosure} LaunchPlanClosure + * @returns {flyteidl.admin.WorkflowExecutionConfig} WorkflowExecutionConfig * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlanClosure.decode = function decode(reader, length) { + WorkflowExecutionConfig.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.admin.LaunchPlanClosure(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.WorkflowExecutionConfig(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.state = reader.int32(); + message.maxParallelism = reader.int32(); break; case 2: - message.expectedInputs = $root.flyteidl.core.ParameterMap.decode(reader, reader.uint32()); + message.securityContext = $root.flyteidl.core.SecurityContext.decode(reader, reader.uint32()); break; case 3: - message.expectedOutputs = $root.flyteidl.core.VariableMap.decode(reader, reader.uint32()); + message.rawOutputDataConfig = $root.flyteidl.admin.RawOutputDataConfig.decode(reader, reader.uint32()); break; case 4: - message.createdAt = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.labels = $root.flyteidl.admin.Labels.decode(reader, reader.uint32()); break; case 5: - message.updatedAt = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.annotations = $root.flyteidl.admin.Annotations.decode(reader, reader.uint32()); + break; + case 6: + message.interruptible = $root.google.protobuf.BoolValue.decode(reader, reader.uint32()); + break; + case 7: + message.overwriteCache = reader.bool(); + break; + case 8: + message.envs = $root.flyteidl.admin.Envs.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -36371,71 +36365,83 @@ }; /** - * Verifies a LaunchPlanClosure message. + * Verifies a WorkflowExecutionConfig message. * @function verify - * @memberof flyteidl.admin.LaunchPlanClosure + * @memberof flyteidl.admin.WorkflowExecutionConfig * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlanClosure.verify = function verify(message) { + WorkflowExecutionConfig.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.state != null && message.hasOwnProperty("state")) - switch (message.state) { - default: - return "state: enum value expected"; - case 0: - case 1: - break; - } - if (message.expectedInputs != null && message.hasOwnProperty("expectedInputs")) { - var error = $root.flyteidl.core.ParameterMap.verify(message.expectedInputs); + if (message.maxParallelism != null && message.hasOwnProperty("maxParallelism")) + if (!$util.isInteger(message.maxParallelism)) + return "maxParallelism: integer expected"; + if (message.securityContext != null && message.hasOwnProperty("securityContext")) { + var error = $root.flyteidl.core.SecurityContext.verify(message.securityContext); if (error) - return "expectedInputs." + error; + return "securityContext." + error; } - if (message.expectedOutputs != null && message.hasOwnProperty("expectedOutputs")) { - var error = $root.flyteidl.core.VariableMap.verify(message.expectedOutputs); + if (message.rawOutputDataConfig != null && message.hasOwnProperty("rawOutputDataConfig")) { + var error = $root.flyteidl.admin.RawOutputDataConfig.verify(message.rawOutputDataConfig); if (error) - return "expectedOutputs." + error; + return "rawOutputDataConfig." + error; } - if (message.createdAt != null && message.hasOwnProperty("createdAt")) { - var error = $root.google.protobuf.Timestamp.verify(message.createdAt); + if (message.labels != null && message.hasOwnProperty("labels")) { + var error = $root.flyteidl.admin.Labels.verify(message.labels); if (error) - return "createdAt." + error; + return "labels." + error; } - if (message.updatedAt != null && message.hasOwnProperty("updatedAt")) { - var error = $root.google.protobuf.Timestamp.verify(message.updatedAt); + if (message.annotations != null && message.hasOwnProperty("annotations")) { + var error = $root.flyteidl.admin.Annotations.verify(message.annotations); if (error) - return "updatedAt." + error; + return "annotations." + error; + } + if (message.interruptible != null && message.hasOwnProperty("interruptible")) { + var error = $root.google.protobuf.BoolValue.verify(message.interruptible); + if (error) + return "interruptible." + error; + } + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + if (typeof message.overwriteCache !== "boolean") + return "overwriteCache: boolean expected"; + if (message.envs != null && message.hasOwnProperty("envs")) { + var error = $root.flyteidl.admin.Envs.verify(message.envs); + if (error) + return "envs." + error; } return null; }; - return LaunchPlanClosure; + return WorkflowExecutionConfig; })(); - admin.LaunchPlanMetadata = (function() { + admin.MatchingAttributes = (function() { /** - * Properties of a LaunchPlanMetadata. + * Properties of a MatchingAttributes. * @memberof flyteidl.admin - * @interface ILaunchPlanMetadata - * @property {flyteidl.admin.ISchedule|null} [schedule] LaunchPlanMetadata schedule - * @property {Array.|null} [notifications] LaunchPlanMetadata notifications - * @property {google.protobuf.IAny|null} [launchConditions] LaunchPlanMetadata launchConditions + * @interface IMatchingAttributes + * @property {flyteidl.admin.ITaskResourceAttributes|null} [taskResourceAttributes] MatchingAttributes taskResourceAttributes + * @property {flyteidl.admin.IClusterResourceAttributes|null} [clusterResourceAttributes] MatchingAttributes clusterResourceAttributes + * @property {flyteidl.admin.IExecutionQueueAttributes|null} [executionQueueAttributes] MatchingAttributes executionQueueAttributes + * @property {flyteidl.admin.IExecutionClusterLabel|null} [executionClusterLabel] MatchingAttributes executionClusterLabel + * @property {flyteidl.core.IQualityOfService|null} [qualityOfService] MatchingAttributes qualityOfService + * @property {flyteidl.admin.IPluginOverrides|null} [pluginOverrides] MatchingAttributes pluginOverrides + * @property {flyteidl.admin.IWorkflowExecutionConfig|null} [workflowExecutionConfig] MatchingAttributes workflowExecutionConfig + * @property {flyteidl.admin.IClusterAssignment|null} [clusterAssignment] MatchingAttributes clusterAssignment */ /** - * Constructs a new LaunchPlanMetadata. + * Constructs a new MatchingAttributes. * @memberof flyteidl.admin - * @classdesc Represents a LaunchPlanMetadata. - * @implements ILaunchPlanMetadata + * @classdesc Represents a MatchingAttributes. + * @implements IMatchingAttributes * @constructor - * @param {flyteidl.admin.ILaunchPlanMetadata=} [properties] Properties to set + * @param {flyteidl.admin.IMatchingAttributes=} [properties] Properties to set */ - function LaunchPlanMetadata(properties) { - this.notifications = []; + function MatchingAttributes(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -36443,91 +36449,167 @@ } /** - * LaunchPlanMetadata schedule. - * @member {flyteidl.admin.ISchedule|null|undefined} schedule - * @memberof flyteidl.admin.LaunchPlanMetadata + * MatchingAttributes taskResourceAttributes. + * @member {flyteidl.admin.ITaskResourceAttributes|null|undefined} taskResourceAttributes + * @memberof flyteidl.admin.MatchingAttributes * @instance */ - LaunchPlanMetadata.prototype.schedule = null; + MatchingAttributes.prototype.taskResourceAttributes = null; /** - * LaunchPlanMetadata notifications. - * @member {Array.} notifications - * @memberof flyteidl.admin.LaunchPlanMetadata + * MatchingAttributes clusterResourceAttributes. + * @member {flyteidl.admin.IClusterResourceAttributes|null|undefined} clusterResourceAttributes + * @memberof flyteidl.admin.MatchingAttributes * @instance */ - LaunchPlanMetadata.prototype.notifications = $util.emptyArray; + MatchingAttributes.prototype.clusterResourceAttributes = null; /** - * LaunchPlanMetadata launchConditions. - * @member {google.protobuf.IAny|null|undefined} launchConditions - * @memberof flyteidl.admin.LaunchPlanMetadata + * MatchingAttributes executionQueueAttributes. + * @member {flyteidl.admin.IExecutionQueueAttributes|null|undefined} executionQueueAttributes + * @memberof flyteidl.admin.MatchingAttributes * @instance */ - LaunchPlanMetadata.prototype.launchConditions = null; + MatchingAttributes.prototype.executionQueueAttributes = null; /** - * Creates a new LaunchPlanMetadata instance using the specified properties. + * MatchingAttributes executionClusterLabel. + * @member {flyteidl.admin.IExecutionClusterLabel|null|undefined} executionClusterLabel + * @memberof flyteidl.admin.MatchingAttributes + * @instance + */ + MatchingAttributes.prototype.executionClusterLabel = null; + + /** + * MatchingAttributes qualityOfService. + * @member {flyteidl.core.IQualityOfService|null|undefined} qualityOfService + * @memberof flyteidl.admin.MatchingAttributes + * @instance + */ + MatchingAttributes.prototype.qualityOfService = null; + + /** + * MatchingAttributes pluginOverrides. + * @member {flyteidl.admin.IPluginOverrides|null|undefined} pluginOverrides + * @memberof flyteidl.admin.MatchingAttributes + * @instance + */ + MatchingAttributes.prototype.pluginOverrides = null; + + /** + * MatchingAttributes workflowExecutionConfig. + * @member {flyteidl.admin.IWorkflowExecutionConfig|null|undefined} workflowExecutionConfig + * @memberof flyteidl.admin.MatchingAttributes + * @instance + */ + MatchingAttributes.prototype.workflowExecutionConfig = null; + + /** + * MatchingAttributes clusterAssignment. + * @member {flyteidl.admin.IClusterAssignment|null|undefined} clusterAssignment + * @memberof flyteidl.admin.MatchingAttributes + * @instance + */ + MatchingAttributes.prototype.clusterAssignment = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * MatchingAttributes target. + * @member {"taskResourceAttributes"|"clusterResourceAttributes"|"executionQueueAttributes"|"executionClusterLabel"|"qualityOfService"|"pluginOverrides"|"workflowExecutionConfig"|"clusterAssignment"|undefined} target + * @memberof flyteidl.admin.MatchingAttributes + * @instance + */ + Object.defineProperty(MatchingAttributes.prototype, "target", { + get: $util.oneOfGetter($oneOfFields = ["taskResourceAttributes", "clusterResourceAttributes", "executionQueueAttributes", "executionClusterLabel", "qualityOfService", "pluginOverrides", "workflowExecutionConfig", "clusterAssignment"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new MatchingAttributes instance using the specified properties. * @function create - * @memberof flyteidl.admin.LaunchPlanMetadata + * @memberof flyteidl.admin.MatchingAttributes * @static - * @param {flyteidl.admin.ILaunchPlanMetadata=} [properties] Properties to set - * @returns {flyteidl.admin.LaunchPlanMetadata} LaunchPlanMetadata instance + * @param {flyteidl.admin.IMatchingAttributes=} [properties] Properties to set + * @returns {flyteidl.admin.MatchingAttributes} MatchingAttributes instance */ - LaunchPlanMetadata.create = function create(properties) { - return new LaunchPlanMetadata(properties); + MatchingAttributes.create = function create(properties) { + return new MatchingAttributes(properties); }; /** - * Encodes the specified LaunchPlanMetadata message. Does not implicitly {@link flyteidl.admin.LaunchPlanMetadata.verify|verify} messages. + * Encodes the specified MatchingAttributes message. Does not implicitly {@link flyteidl.admin.MatchingAttributes.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.LaunchPlanMetadata + * @memberof flyteidl.admin.MatchingAttributes * @static - * @param {flyteidl.admin.ILaunchPlanMetadata} message LaunchPlanMetadata message or plain object to encode + * @param {flyteidl.admin.IMatchingAttributes} message MatchingAttributes message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LaunchPlanMetadata.encode = function encode(message, writer) { + MatchingAttributes.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.schedule != null && message.hasOwnProperty("schedule")) - $root.flyteidl.admin.Schedule.encode(message.schedule, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.notifications != null && message.notifications.length) - for (var i = 0; i < message.notifications.length; ++i) - $root.flyteidl.admin.Notification.encode(message.notifications[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.launchConditions != null && message.hasOwnProperty("launchConditions")) - $root.google.protobuf.Any.encode(message.launchConditions, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.taskResourceAttributes != null && message.hasOwnProperty("taskResourceAttributes")) + $root.flyteidl.admin.TaskResourceAttributes.encode(message.taskResourceAttributes, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.clusterResourceAttributes != null && message.hasOwnProperty("clusterResourceAttributes")) + $root.flyteidl.admin.ClusterResourceAttributes.encode(message.clusterResourceAttributes, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.executionQueueAttributes != null && message.hasOwnProperty("executionQueueAttributes")) + $root.flyteidl.admin.ExecutionQueueAttributes.encode(message.executionQueueAttributes, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.executionClusterLabel != null && message.hasOwnProperty("executionClusterLabel")) + $root.flyteidl.admin.ExecutionClusterLabel.encode(message.executionClusterLabel, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) + $root.flyteidl.core.QualityOfService.encode(message.qualityOfService, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.pluginOverrides != null && message.hasOwnProperty("pluginOverrides")) + $root.flyteidl.admin.PluginOverrides.encode(message.pluginOverrides, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.workflowExecutionConfig != null && message.hasOwnProperty("workflowExecutionConfig")) + $root.flyteidl.admin.WorkflowExecutionConfig.encode(message.workflowExecutionConfig, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.clusterAssignment != null && message.hasOwnProperty("clusterAssignment")) + $root.flyteidl.admin.ClusterAssignment.encode(message.clusterAssignment, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); return writer; }; /** - * Decodes a LaunchPlanMetadata message from the specified reader or buffer. + * Decodes a MatchingAttributes message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.LaunchPlanMetadata + * @memberof flyteidl.admin.MatchingAttributes * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.LaunchPlanMetadata} LaunchPlanMetadata + * @returns {flyteidl.admin.MatchingAttributes} MatchingAttributes * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlanMetadata.decode = function decode(reader, length) { + MatchingAttributes.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.admin.LaunchPlanMetadata(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.MatchingAttributes(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.schedule = $root.flyteidl.admin.Schedule.decode(reader, reader.uint32()); + message.taskResourceAttributes = $root.flyteidl.admin.TaskResourceAttributes.decode(reader, reader.uint32()); break; case 2: - if (!(message.notifications && message.notifications.length)) - message.notifications = []; - message.notifications.push($root.flyteidl.admin.Notification.decode(reader, reader.uint32())); + message.clusterResourceAttributes = $root.flyteidl.admin.ClusterResourceAttributes.decode(reader, reader.uint32()); break; case 3: - message.launchConditions = $root.google.protobuf.Any.decode(reader, reader.uint32()); + message.executionQueueAttributes = $root.flyteidl.admin.ExecutionQueueAttributes.decode(reader, reader.uint32()); + break; + case 4: + message.executionClusterLabel = $root.flyteidl.admin.ExecutionClusterLabel.decode(reader, reader.uint32()); + break; + case 5: + message.qualityOfService = $root.flyteidl.core.QualityOfService.decode(reader, reader.uint32()); + break; + case 6: + message.pluginOverrides = $root.flyteidl.admin.PluginOverrides.decode(reader, reader.uint32()); + break; + case 7: + message.workflowExecutionConfig = $root.flyteidl.admin.WorkflowExecutionConfig.decode(reader, reader.uint32()); + break; + case 8: + message.clusterAssignment = $root.flyteidl.admin.ClusterAssignment.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -36538,60 +36620,124 @@ }; /** - * Verifies a LaunchPlanMetadata message. + * Verifies a MatchingAttributes message. * @function verify - * @memberof flyteidl.admin.LaunchPlanMetadata + * @memberof flyteidl.admin.MatchingAttributes * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlanMetadata.verify = function verify(message) { + MatchingAttributes.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.schedule != null && message.hasOwnProperty("schedule")) { - var error = $root.flyteidl.admin.Schedule.verify(message.schedule); - if (error) - return "schedule." + error; - } - if (message.notifications != null && message.hasOwnProperty("notifications")) { - if (!Array.isArray(message.notifications)) - return "notifications: array expected"; - for (var i = 0; i < message.notifications.length; ++i) { - var error = $root.flyteidl.admin.Notification.verify(message.notifications[i]); + var properties = {}; + if (message.taskResourceAttributes != null && message.hasOwnProperty("taskResourceAttributes")) { + properties.target = 1; + { + var error = $root.flyteidl.admin.TaskResourceAttributes.verify(message.taskResourceAttributes); if (error) - return "notifications." + error; + return "taskResourceAttributes." + error; } } - if (message.launchConditions != null && message.hasOwnProperty("launchConditions")) { - var error = $root.google.protobuf.Any.verify(message.launchConditions); - if (error) - return "launchConditions." + error; + if (message.clusterResourceAttributes != null && message.hasOwnProperty("clusterResourceAttributes")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; + { + var error = $root.flyteidl.admin.ClusterResourceAttributes.verify(message.clusterResourceAttributes); + if (error) + return "clusterResourceAttributes." + error; + } } - return null; - }; - - return LaunchPlanMetadata; + if (message.executionQueueAttributes != null && message.hasOwnProperty("executionQueueAttributes")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; + { + var error = $root.flyteidl.admin.ExecutionQueueAttributes.verify(message.executionQueueAttributes); + if (error) + return "executionQueueAttributes." + error; + } + } + if (message.executionClusterLabel != null && message.hasOwnProperty("executionClusterLabel")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; + { + var error = $root.flyteidl.admin.ExecutionClusterLabel.verify(message.executionClusterLabel); + if (error) + return "executionClusterLabel." + error; + } + } + if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; + { + var error = $root.flyteidl.core.QualityOfService.verify(message.qualityOfService); + if (error) + return "qualityOfService." + error; + } + } + if (message.pluginOverrides != null && message.hasOwnProperty("pluginOverrides")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; + { + var error = $root.flyteidl.admin.PluginOverrides.verify(message.pluginOverrides); + if (error) + return "pluginOverrides." + error; + } + } + if (message.workflowExecutionConfig != null && message.hasOwnProperty("workflowExecutionConfig")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; + { + var error = $root.flyteidl.admin.WorkflowExecutionConfig.verify(message.workflowExecutionConfig); + if (error) + return "workflowExecutionConfig." + error; + } + } + if (message.clusterAssignment != null && message.hasOwnProperty("clusterAssignment")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; + { + var error = $root.flyteidl.admin.ClusterAssignment.verify(message.clusterAssignment); + if (error) + return "clusterAssignment." + error; + } + } + return null; + }; + + return MatchingAttributes; })(); - admin.LaunchPlanUpdateRequest = (function() { + admin.MatchableAttributesConfiguration = (function() { /** - * Properties of a LaunchPlanUpdateRequest. + * Properties of a MatchableAttributesConfiguration. * @memberof flyteidl.admin - * @interface ILaunchPlanUpdateRequest - * @property {flyteidl.core.IIdentifier|null} [id] LaunchPlanUpdateRequest id - * @property {flyteidl.admin.LaunchPlanState|null} [state] LaunchPlanUpdateRequest state + * @interface IMatchableAttributesConfiguration + * @property {flyteidl.admin.IMatchingAttributes|null} [attributes] MatchableAttributesConfiguration attributes + * @property {string|null} [domain] MatchableAttributesConfiguration domain + * @property {string|null} [project] MatchableAttributesConfiguration project + * @property {string|null} [workflow] MatchableAttributesConfiguration workflow + * @property {string|null} [launchPlan] MatchableAttributesConfiguration launchPlan + * @property {string|null} [org] MatchableAttributesConfiguration org */ /** - * Constructs a new LaunchPlanUpdateRequest. + * Constructs a new MatchableAttributesConfiguration. * @memberof flyteidl.admin - * @classdesc Represents a LaunchPlanUpdateRequest. - * @implements ILaunchPlanUpdateRequest + * @classdesc Represents a MatchableAttributesConfiguration. + * @implements IMatchableAttributesConfiguration * @constructor - * @param {flyteidl.admin.ILaunchPlanUpdateRequest=} [properties] Properties to set + * @param {flyteidl.admin.IMatchableAttributesConfiguration=} [properties] Properties to set */ - function LaunchPlanUpdateRequest(properties) { + function MatchableAttributesConfiguration(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -36599,75 +36745,127 @@ } /** - * LaunchPlanUpdateRequest id. - * @member {flyteidl.core.IIdentifier|null|undefined} id - * @memberof flyteidl.admin.LaunchPlanUpdateRequest + * MatchableAttributesConfiguration attributes. + * @member {flyteidl.admin.IMatchingAttributes|null|undefined} attributes + * @memberof flyteidl.admin.MatchableAttributesConfiguration * @instance */ - LaunchPlanUpdateRequest.prototype.id = null; + MatchableAttributesConfiguration.prototype.attributes = null; /** - * LaunchPlanUpdateRequest state. - * @member {flyteidl.admin.LaunchPlanState} state - * @memberof flyteidl.admin.LaunchPlanUpdateRequest + * MatchableAttributesConfiguration domain. + * @member {string} domain + * @memberof flyteidl.admin.MatchableAttributesConfiguration * @instance */ - LaunchPlanUpdateRequest.prototype.state = 0; + MatchableAttributesConfiguration.prototype.domain = ""; /** - * Creates a new LaunchPlanUpdateRequest instance using the specified properties. + * MatchableAttributesConfiguration project. + * @member {string} project + * @memberof flyteidl.admin.MatchableAttributesConfiguration + * @instance + */ + MatchableAttributesConfiguration.prototype.project = ""; + + /** + * MatchableAttributesConfiguration workflow. + * @member {string} workflow + * @memberof flyteidl.admin.MatchableAttributesConfiguration + * @instance + */ + MatchableAttributesConfiguration.prototype.workflow = ""; + + /** + * MatchableAttributesConfiguration launchPlan. + * @member {string} launchPlan + * @memberof flyteidl.admin.MatchableAttributesConfiguration + * @instance + */ + MatchableAttributesConfiguration.prototype.launchPlan = ""; + + /** + * MatchableAttributesConfiguration org. + * @member {string} org + * @memberof flyteidl.admin.MatchableAttributesConfiguration + * @instance + */ + MatchableAttributesConfiguration.prototype.org = ""; + + /** + * Creates a new MatchableAttributesConfiguration instance using the specified properties. * @function create - * @memberof flyteidl.admin.LaunchPlanUpdateRequest + * @memberof flyteidl.admin.MatchableAttributesConfiguration * @static - * @param {flyteidl.admin.ILaunchPlanUpdateRequest=} [properties] Properties to set - * @returns {flyteidl.admin.LaunchPlanUpdateRequest} LaunchPlanUpdateRequest instance + * @param {flyteidl.admin.IMatchableAttributesConfiguration=} [properties] Properties to set + * @returns {flyteidl.admin.MatchableAttributesConfiguration} MatchableAttributesConfiguration instance */ - LaunchPlanUpdateRequest.create = function create(properties) { - return new LaunchPlanUpdateRequest(properties); + MatchableAttributesConfiguration.create = function create(properties) { + return new MatchableAttributesConfiguration(properties); }; /** - * Encodes the specified LaunchPlanUpdateRequest message. Does not implicitly {@link flyteidl.admin.LaunchPlanUpdateRequest.verify|verify} messages. + * Encodes the specified MatchableAttributesConfiguration message. Does not implicitly {@link flyteidl.admin.MatchableAttributesConfiguration.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.LaunchPlanUpdateRequest + * @memberof flyteidl.admin.MatchableAttributesConfiguration * @static - * @param {flyteidl.admin.ILaunchPlanUpdateRequest} message LaunchPlanUpdateRequest message or plain object to encode + * @param {flyteidl.admin.IMatchableAttributesConfiguration} message MatchableAttributesConfiguration message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LaunchPlanUpdateRequest.encode = function encode(message, writer) { + MatchableAttributesConfiguration.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.id != null && message.hasOwnProperty("id")) - $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.state != null && message.hasOwnProperty("state")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.state); + if (message.attributes != null && message.hasOwnProperty("attributes")) + $root.flyteidl.admin.MatchingAttributes.encode(message.attributes, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.domain != null && message.hasOwnProperty("domain")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.domain); + if (message.project != null && message.hasOwnProperty("project")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.project); + if (message.workflow != null && message.hasOwnProperty("workflow")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.workflow); + if (message.launchPlan != null && message.hasOwnProperty("launchPlan")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.launchPlan); + if (message.org != null && message.hasOwnProperty("org")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.org); return writer; }; /** - * Decodes a LaunchPlanUpdateRequest message from the specified reader or buffer. + * Decodes a MatchableAttributesConfiguration message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.LaunchPlanUpdateRequest + * @memberof flyteidl.admin.MatchableAttributesConfiguration * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.LaunchPlanUpdateRequest} LaunchPlanUpdateRequest + * @returns {flyteidl.admin.MatchableAttributesConfiguration} MatchableAttributesConfiguration * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlanUpdateRequest.decode = function decode(reader, length) { + MatchableAttributesConfiguration.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.admin.LaunchPlanUpdateRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.MatchableAttributesConfiguration(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); + message.attributes = $root.flyteidl.admin.MatchingAttributes.decode(reader, reader.uint32()); break; case 2: - message.state = reader.int32(); + message.domain = reader.string(); + break; + case 3: + message.project = reader.string(); + break; + case 4: + message.workflow = reader.string(); + break; + case 5: + message.launchPlan = reader.string(); + break; + case 6: + message.org = reader.string(); break; default: reader.skipType(tag & 7); @@ -36678,52 +36876,61 @@ }; /** - * Verifies a LaunchPlanUpdateRequest message. + * Verifies a MatchableAttributesConfiguration message. * @function verify - * @memberof flyteidl.admin.LaunchPlanUpdateRequest + * @memberof flyteidl.admin.MatchableAttributesConfiguration * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlanUpdateRequest.verify = function verify(message) { + MatchableAttributesConfiguration.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) { - var error = $root.flyteidl.core.Identifier.verify(message.id); + if (message.attributes != null && message.hasOwnProperty("attributes")) { + var error = $root.flyteidl.admin.MatchingAttributes.verify(message.attributes); if (error) - return "id." + error; + return "attributes." + error; } - if (message.state != null && message.hasOwnProperty("state")) - switch (message.state) { - default: - return "state: enum value expected"; - case 0: - case 1: - break; - } + if (message.domain != null && message.hasOwnProperty("domain")) + if (!$util.isString(message.domain)) + return "domain: string expected"; + if (message.project != null && message.hasOwnProperty("project")) + if (!$util.isString(message.project)) + return "project: string expected"; + if (message.workflow != null && message.hasOwnProperty("workflow")) + if (!$util.isString(message.workflow)) + return "workflow: string expected"; + if (message.launchPlan != null && message.hasOwnProperty("launchPlan")) + if (!$util.isString(message.launchPlan)) + return "launchPlan: string expected"; + if (message.org != null && message.hasOwnProperty("org")) + if (!$util.isString(message.org)) + return "org: string expected"; return null; }; - return LaunchPlanUpdateRequest; + return MatchableAttributesConfiguration; })(); - admin.LaunchPlanUpdateResponse = (function() { + admin.ListMatchableAttributesRequest = (function() { /** - * Properties of a LaunchPlanUpdateResponse. + * Properties of a ListMatchableAttributesRequest. * @memberof flyteidl.admin - * @interface ILaunchPlanUpdateResponse + * @interface IListMatchableAttributesRequest + * @property {flyteidl.admin.MatchableResource|null} [resourceType] ListMatchableAttributesRequest resourceType + * @property {string|null} [org] ListMatchableAttributesRequest org */ /** - * Constructs a new LaunchPlanUpdateResponse. + * Constructs a new ListMatchableAttributesRequest. * @memberof flyteidl.admin - * @classdesc Represents a LaunchPlanUpdateResponse. - * @implements ILaunchPlanUpdateResponse + * @classdesc Represents a ListMatchableAttributesRequest. + * @implements IListMatchableAttributesRequest * @constructor - * @param {flyteidl.admin.ILaunchPlanUpdateResponse=} [properties] Properties to set + * @param {flyteidl.admin.IListMatchableAttributesRequest=} [properties] Properties to set */ - function LaunchPlanUpdateResponse(properties) { + function ListMatchableAttributesRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -36731,50 +36938,76 @@ } /** - * Creates a new LaunchPlanUpdateResponse instance using the specified properties. - * @function create - * @memberof flyteidl.admin.LaunchPlanUpdateResponse + * ListMatchableAttributesRequest resourceType. + * @member {flyteidl.admin.MatchableResource} resourceType + * @memberof flyteidl.admin.ListMatchableAttributesRequest + * @instance + */ + ListMatchableAttributesRequest.prototype.resourceType = 0; + + /** + * ListMatchableAttributesRequest org. + * @member {string} org + * @memberof flyteidl.admin.ListMatchableAttributesRequest + * @instance + */ + ListMatchableAttributesRequest.prototype.org = ""; + + /** + * Creates a new ListMatchableAttributesRequest instance using the specified properties. + * @function create + * @memberof flyteidl.admin.ListMatchableAttributesRequest * @static - * @param {flyteidl.admin.ILaunchPlanUpdateResponse=} [properties] Properties to set - * @returns {flyteidl.admin.LaunchPlanUpdateResponse} LaunchPlanUpdateResponse instance + * @param {flyteidl.admin.IListMatchableAttributesRequest=} [properties] Properties to set + * @returns {flyteidl.admin.ListMatchableAttributesRequest} ListMatchableAttributesRequest instance */ - LaunchPlanUpdateResponse.create = function create(properties) { - return new LaunchPlanUpdateResponse(properties); + ListMatchableAttributesRequest.create = function create(properties) { + return new ListMatchableAttributesRequest(properties); }; /** - * Encodes the specified LaunchPlanUpdateResponse message. Does not implicitly {@link flyteidl.admin.LaunchPlanUpdateResponse.verify|verify} messages. + * Encodes the specified ListMatchableAttributesRequest message. Does not implicitly {@link flyteidl.admin.ListMatchableAttributesRequest.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.LaunchPlanUpdateResponse + * @memberof flyteidl.admin.ListMatchableAttributesRequest * @static - * @param {flyteidl.admin.ILaunchPlanUpdateResponse} message LaunchPlanUpdateResponse message or plain object to encode + * @param {flyteidl.admin.IListMatchableAttributesRequest} message ListMatchableAttributesRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LaunchPlanUpdateResponse.encode = function encode(message, writer) { + ListMatchableAttributesRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.resourceType != null && message.hasOwnProperty("resourceType")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.resourceType); + if (message.org != null && message.hasOwnProperty("org")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.org); return writer; }; /** - * Decodes a LaunchPlanUpdateResponse message from the specified reader or buffer. + * Decodes a ListMatchableAttributesRequest message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.LaunchPlanUpdateResponse + * @memberof flyteidl.admin.ListMatchableAttributesRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.LaunchPlanUpdateResponse} LaunchPlanUpdateResponse + * @returns {flyteidl.admin.ListMatchableAttributesRequest} ListMatchableAttributesRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LaunchPlanUpdateResponse.decode = function decode(reader, length) { + ListMatchableAttributesRequest.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.admin.LaunchPlanUpdateResponse(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.ListMatchableAttributesRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: + message.resourceType = reader.int32(); + break; + case 2: + message.org = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -36784,40 +37017,58 @@ }; /** - * Verifies a LaunchPlanUpdateResponse message. + * Verifies a ListMatchableAttributesRequest message. * @function verify - * @memberof flyteidl.admin.LaunchPlanUpdateResponse + * @memberof flyteidl.admin.ListMatchableAttributesRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LaunchPlanUpdateResponse.verify = function verify(message) { + ListMatchableAttributesRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.resourceType != null && message.hasOwnProperty("resourceType")) + switch (message.resourceType) { + default: + return "resourceType: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + break; + } + if (message.org != null && message.hasOwnProperty("org")) + if (!$util.isString(message.org)) + return "org: string expected"; return null; }; - return LaunchPlanUpdateResponse; + return ListMatchableAttributesRequest; })(); - admin.ActiveLaunchPlanRequest = (function() { + admin.ListMatchableAttributesResponse = (function() { /** - * Properties of an ActiveLaunchPlanRequest. + * Properties of a ListMatchableAttributesResponse. * @memberof flyteidl.admin - * @interface IActiveLaunchPlanRequest - * @property {flyteidl.admin.INamedEntityIdentifier|null} [id] ActiveLaunchPlanRequest id + * @interface IListMatchableAttributesResponse + * @property {Array.|null} [configurations] ListMatchableAttributesResponse configurations */ /** - * Constructs a new ActiveLaunchPlanRequest. + * Constructs a new ListMatchableAttributesResponse. * @memberof flyteidl.admin - * @classdesc Represents an ActiveLaunchPlanRequest. - * @implements IActiveLaunchPlanRequest + * @classdesc Represents a ListMatchableAttributesResponse. + * @implements IListMatchableAttributesResponse * @constructor - * @param {flyteidl.admin.IActiveLaunchPlanRequest=} [properties] Properties to set + * @param {flyteidl.admin.IListMatchableAttributesResponse=} [properties] Properties to set */ - function ActiveLaunchPlanRequest(properties) { + function ListMatchableAttributesResponse(properties) { + this.configurations = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -36825,62 +37076,65 @@ } /** - * ActiveLaunchPlanRequest id. - * @member {flyteidl.admin.INamedEntityIdentifier|null|undefined} id - * @memberof flyteidl.admin.ActiveLaunchPlanRequest + * ListMatchableAttributesResponse configurations. + * @member {Array.} configurations + * @memberof flyteidl.admin.ListMatchableAttributesResponse * @instance */ - ActiveLaunchPlanRequest.prototype.id = null; + ListMatchableAttributesResponse.prototype.configurations = $util.emptyArray; /** - * Creates a new ActiveLaunchPlanRequest instance using the specified properties. + * Creates a new ListMatchableAttributesResponse instance using the specified properties. * @function create - * @memberof flyteidl.admin.ActiveLaunchPlanRequest + * @memberof flyteidl.admin.ListMatchableAttributesResponse * @static - * @param {flyteidl.admin.IActiveLaunchPlanRequest=} [properties] Properties to set - * @returns {flyteidl.admin.ActiveLaunchPlanRequest} ActiveLaunchPlanRequest instance + * @param {flyteidl.admin.IListMatchableAttributesResponse=} [properties] Properties to set + * @returns {flyteidl.admin.ListMatchableAttributesResponse} ListMatchableAttributesResponse instance */ - ActiveLaunchPlanRequest.create = function create(properties) { - return new ActiveLaunchPlanRequest(properties); + ListMatchableAttributesResponse.create = function create(properties) { + return new ListMatchableAttributesResponse(properties); }; /** - * Encodes the specified ActiveLaunchPlanRequest message. Does not implicitly {@link flyteidl.admin.ActiveLaunchPlanRequest.verify|verify} messages. + * Encodes the specified ListMatchableAttributesResponse message. Does not implicitly {@link flyteidl.admin.ListMatchableAttributesResponse.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.ActiveLaunchPlanRequest + * @memberof flyteidl.admin.ListMatchableAttributesResponse * @static - * @param {flyteidl.admin.IActiveLaunchPlanRequest} message ActiveLaunchPlanRequest message or plain object to encode + * @param {flyteidl.admin.IListMatchableAttributesResponse} message ListMatchableAttributesResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ActiveLaunchPlanRequest.encode = function encode(message, writer) { + ListMatchableAttributesResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.id != null && message.hasOwnProperty("id")) - $root.flyteidl.admin.NamedEntityIdentifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.configurations != null && message.configurations.length) + for (var i = 0; i < message.configurations.length; ++i) + $root.flyteidl.admin.MatchableAttributesConfiguration.encode(message.configurations[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes an ActiveLaunchPlanRequest message from the specified reader or buffer. + * Decodes a ListMatchableAttributesResponse message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.ActiveLaunchPlanRequest + * @memberof flyteidl.admin.ListMatchableAttributesResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.ActiveLaunchPlanRequest} ActiveLaunchPlanRequest + * @returns {flyteidl.admin.ListMatchableAttributesResponse} ListMatchableAttributesResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ActiveLaunchPlanRequest.decode = function decode(reader, length) { + ListMatchableAttributesResponse.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.admin.ActiveLaunchPlanRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.ListMatchableAttributesResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.id = $root.flyteidl.admin.NamedEntityIdentifier.decode(reader, reader.uint32()); + if (!(message.configurations && message.configurations.length)) + message.configurations = []; + message.configurations.push($root.flyteidl.admin.MatchableAttributesConfiguration.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -36891,50 +37145,50 @@ }; /** - * Verifies an ActiveLaunchPlanRequest message. + * Verifies a ListMatchableAttributesResponse message. * @function verify - * @memberof flyteidl.admin.ActiveLaunchPlanRequest + * @memberof flyteidl.admin.ListMatchableAttributesResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ActiveLaunchPlanRequest.verify = function verify(message) { + ListMatchableAttributesResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) { - var error = $root.flyteidl.admin.NamedEntityIdentifier.verify(message.id); - if (error) - return "id." + error; + if (message.configurations != null && message.hasOwnProperty("configurations")) { + if (!Array.isArray(message.configurations)) + return "configurations: array expected"; + for (var i = 0; i < message.configurations.length; ++i) { + var error = $root.flyteidl.admin.MatchableAttributesConfiguration.verify(message.configurations[i]); + if (error) + return "configurations." + error; + } } return null; }; - return ActiveLaunchPlanRequest; + return ListMatchableAttributesResponse; })(); - admin.ActiveLaunchPlanListRequest = (function() { + admin.LaunchPlanCreateRequest = (function() { /** - * Properties of an ActiveLaunchPlanListRequest. + * Properties of a LaunchPlanCreateRequest. * @memberof flyteidl.admin - * @interface IActiveLaunchPlanListRequest - * @property {string|null} [project] ActiveLaunchPlanListRequest project - * @property {string|null} [domain] ActiveLaunchPlanListRequest domain - * @property {number|null} [limit] ActiveLaunchPlanListRequest limit - * @property {string|null} [token] ActiveLaunchPlanListRequest token - * @property {flyteidl.admin.ISort|null} [sortBy] ActiveLaunchPlanListRequest sortBy - * @property {string|null} [org] ActiveLaunchPlanListRequest org + * @interface ILaunchPlanCreateRequest + * @property {flyteidl.core.IIdentifier|null} [id] LaunchPlanCreateRequest id + * @property {flyteidl.admin.ILaunchPlanSpec|null} [spec] LaunchPlanCreateRequest spec */ /** - * Constructs a new ActiveLaunchPlanListRequest. + * Constructs a new LaunchPlanCreateRequest. * @memberof flyteidl.admin - * @classdesc Represents an ActiveLaunchPlanListRequest. - * @implements IActiveLaunchPlanListRequest + * @classdesc Represents a LaunchPlanCreateRequest. + * @implements ILaunchPlanCreateRequest * @constructor - * @param {flyteidl.admin.IActiveLaunchPlanListRequest=} [properties] Properties to set + * @param {flyteidl.admin.ILaunchPlanCreateRequest=} [properties] Properties to set */ - function ActiveLaunchPlanListRequest(properties) { + function LaunchPlanCreateRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -36942,127 +37196,75 @@ } /** - * ActiveLaunchPlanListRequest project. - * @member {string} project - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest - * @instance - */ - ActiveLaunchPlanListRequest.prototype.project = ""; - - /** - * ActiveLaunchPlanListRequest domain. - * @member {string} domain - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest - * @instance - */ - ActiveLaunchPlanListRequest.prototype.domain = ""; - - /** - * ActiveLaunchPlanListRequest limit. - * @member {number} limit - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest - * @instance - */ - ActiveLaunchPlanListRequest.prototype.limit = 0; - - /** - * ActiveLaunchPlanListRequest token. - * @member {string} token - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest - * @instance - */ - ActiveLaunchPlanListRequest.prototype.token = ""; - - /** - * ActiveLaunchPlanListRequest sortBy. - * @member {flyteidl.admin.ISort|null|undefined} sortBy - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest + * LaunchPlanCreateRequest id. + * @member {flyteidl.core.IIdentifier|null|undefined} id + * @memberof flyteidl.admin.LaunchPlanCreateRequest * @instance */ - ActiveLaunchPlanListRequest.prototype.sortBy = null; + LaunchPlanCreateRequest.prototype.id = null; /** - * ActiveLaunchPlanListRequest org. - * @member {string} org - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest + * LaunchPlanCreateRequest spec. + * @member {flyteidl.admin.ILaunchPlanSpec|null|undefined} spec + * @memberof flyteidl.admin.LaunchPlanCreateRequest * @instance */ - ActiveLaunchPlanListRequest.prototype.org = ""; + LaunchPlanCreateRequest.prototype.spec = null; /** - * Creates a new ActiveLaunchPlanListRequest instance using the specified properties. + * Creates a new LaunchPlanCreateRequest instance using the specified properties. * @function create - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest + * @memberof flyteidl.admin.LaunchPlanCreateRequest * @static - * @param {flyteidl.admin.IActiveLaunchPlanListRequest=} [properties] Properties to set - * @returns {flyteidl.admin.ActiveLaunchPlanListRequest} ActiveLaunchPlanListRequest instance + * @param {flyteidl.admin.ILaunchPlanCreateRequest=} [properties] Properties to set + * @returns {flyteidl.admin.LaunchPlanCreateRequest} LaunchPlanCreateRequest instance */ - ActiveLaunchPlanListRequest.create = function create(properties) { - return new ActiveLaunchPlanListRequest(properties); + LaunchPlanCreateRequest.create = function create(properties) { + return new LaunchPlanCreateRequest(properties); }; /** - * Encodes the specified ActiveLaunchPlanListRequest message. Does not implicitly {@link flyteidl.admin.ActiveLaunchPlanListRequest.verify|verify} messages. + * Encodes the specified LaunchPlanCreateRequest message. Does not implicitly {@link flyteidl.admin.LaunchPlanCreateRequest.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest + * @memberof flyteidl.admin.LaunchPlanCreateRequest * @static - * @param {flyteidl.admin.IActiveLaunchPlanListRequest} message ActiveLaunchPlanListRequest message or plain object to encode + * @param {flyteidl.admin.ILaunchPlanCreateRequest} message LaunchPlanCreateRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ActiveLaunchPlanListRequest.encode = function encode(message, writer) { + LaunchPlanCreateRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.project != null && message.hasOwnProperty("project")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.project); - if (message.domain != null && message.hasOwnProperty("domain")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.domain); - if (message.limit != null && message.hasOwnProperty("limit")) - writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.limit); - if (message.token != null && message.hasOwnProperty("token")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.token); - if (message.sortBy != null && message.hasOwnProperty("sortBy")) - $root.flyteidl.admin.Sort.encode(message.sortBy, 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.id != null && message.hasOwnProperty("id")) + $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.spec != null && message.hasOwnProperty("spec")) + $root.flyteidl.admin.LaunchPlanSpec.encode(message.spec, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Decodes an ActiveLaunchPlanListRequest message from the specified reader or buffer. + * Decodes a LaunchPlanCreateRequest message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest + * @memberof flyteidl.admin.LaunchPlanCreateRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.ActiveLaunchPlanListRequest} ActiveLaunchPlanListRequest + * @returns {flyteidl.admin.LaunchPlanCreateRequest} LaunchPlanCreateRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ActiveLaunchPlanListRequest.decode = function decode(reader, length) { + LaunchPlanCreateRequest.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.admin.ActiveLaunchPlanListRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LaunchPlanCreateRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.project = reader.string(); + message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); break; case 2: - message.domain = reader.string(); - break; - case 3: - message.limit = reader.uint32(); - break; - case 4: - message.token = reader.string(); - break; - case 5: - message.sortBy = $root.flyteidl.admin.Sort.decode(reader, reader.uint32()); - break; - case 6: - message.org = reader.string(); + message.spec = $root.flyteidl.admin.LaunchPlanSpec.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -37073,77 +37275,49 @@ }; /** - * Verifies an ActiveLaunchPlanListRequest message. + * Verifies a LaunchPlanCreateRequest message. * @function verify - * @memberof flyteidl.admin.ActiveLaunchPlanListRequest + * @memberof flyteidl.admin.LaunchPlanCreateRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ActiveLaunchPlanListRequest.verify = function verify(message) { + LaunchPlanCreateRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.project != null && message.hasOwnProperty("project")) - if (!$util.isString(message.project)) - return "project: string expected"; - if (message.domain != null && message.hasOwnProperty("domain")) - if (!$util.isString(message.domain)) - return "domain: string expected"; - if (message.limit != null && message.hasOwnProperty("limit")) - if (!$util.isInteger(message.limit)) - return "limit: integer expected"; - if (message.token != null && message.hasOwnProperty("token")) - if (!$util.isString(message.token)) - return "token: string expected"; - if (message.sortBy != null && message.hasOwnProperty("sortBy")) { - var error = $root.flyteidl.admin.Sort.verify(message.sortBy); + if (message.id != null && message.hasOwnProperty("id")) { + var error = $root.flyteidl.core.Identifier.verify(message.id); if (error) - return "sortBy." + error; + return "id." + error; + } + if (message.spec != null && message.hasOwnProperty("spec")) { + var error = $root.flyteidl.admin.LaunchPlanSpec.verify(message.spec); + if (error) + return "spec." + error; } - if (message.org != null && message.hasOwnProperty("org")) - if (!$util.isString(message.org)) - return "org: string expected"; return null; }; - return ActiveLaunchPlanListRequest; - })(); - - /** - * FixedRateUnit enum. - * @name flyteidl.admin.FixedRateUnit - * @enum {string} - * @property {number} MINUTE=0 MINUTE value - * @property {number} HOUR=1 HOUR value - * @property {number} DAY=2 DAY value - */ - admin.FixedRateUnit = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "MINUTE"] = 0; - values[valuesById[1] = "HOUR"] = 1; - values[valuesById[2] = "DAY"] = 2; - return values; + return LaunchPlanCreateRequest; })(); - admin.FixedRate = (function() { + admin.LaunchPlanCreateResponse = (function() { /** - * Properties of a FixedRate. + * Properties of a LaunchPlanCreateResponse. * @memberof flyteidl.admin - * @interface IFixedRate - * @property {number|null} [value] FixedRate value - * @property {flyteidl.admin.FixedRateUnit|null} [unit] FixedRate unit + * @interface ILaunchPlanCreateResponse */ /** - * Constructs a new FixedRate. + * Constructs a new LaunchPlanCreateResponse. * @memberof flyteidl.admin - * @classdesc Represents a FixedRate. - * @implements IFixedRate + * @classdesc Represents a LaunchPlanCreateResponse. + * @implements ILaunchPlanCreateResponse * @constructor - * @param {flyteidl.admin.IFixedRate=} [properties] Properties to set + * @param {flyteidl.admin.ILaunchPlanCreateResponse=} [properties] Properties to set */ - function FixedRate(properties) { + function LaunchPlanCreateResponse(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -37151,76 +37325,50 @@ } /** - * FixedRate value. - * @member {number} value - * @memberof flyteidl.admin.FixedRate - * @instance - */ - FixedRate.prototype.value = 0; - - /** - * FixedRate unit. - * @member {flyteidl.admin.FixedRateUnit} unit - * @memberof flyteidl.admin.FixedRate - * @instance - */ - FixedRate.prototype.unit = 0; - - /** - * Creates a new FixedRate instance using the specified properties. + * Creates a new LaunchPlanCreateResponse instance using the specified properties. * @function create - * @memberof flyteidl.admin.FixedRate + * @memberof flyteidl.admin.LaunchPlanCreateResponse * @static - * @param {flyteidl.admin.IFixedRate=} [properties] Properties to set - * @returns {flyteidl.admin.FixedRate} FixedRate instance + * @param {flyteidl.admin.ILaunchPlanCreateResponse=} [properties] Properties to set + * @returns {flyteidl.admin.LaunchPlanCreateResponse} LaunchPlanCreateResponse instance */ - FixedRate.create = function create(properties) { - return new FixedRate(properties); + LaunchPlanCreateResponse.create = function create(properties) { + return new LaunchPlanCreateResponse(properties); }; /** - * Encodes the specified FixedRate message. Does not implicitly {@link flyteidl.admin.FixedRate.verify|verify} messages. + * Encodes the specified LaunchPlanCreateResponse message. Does not implicitly {@link flyteidl.admin.LaunchPlanCreateResponse.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.FixedRate + * @memberof flyteidl.admin.LaunchPlanCreateResponse * @static - * @param {flyteidl.admin.IFixedRate} message FixedRate message or plain object to encode + * @param {flyteidl.admin.ILaunchPlanCreateResponse} message LaunchPlanCreateResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FixedRate.encode = function encode(message, writer) { + LaunchPlanCreateResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.value); - if (message.unit != null && message.hasOwnProperty("unit")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.unit); return writer; }; /** - * Decodes a FixedRate message from the specified reader or buffer. + * Decodes a LaunchPlanCreateResponse message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.FixedRate + * @memberof flyteidl.admin.LaunchPlanCreateResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.FixedRate} FixedRate + * @returns {flyteidl.admin.LaunchPlanCreateResponse} LaunchPlanCreateResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FixedRate.decode = function decode(reader, length) { + LaunchPlanCreateResponse.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.admin.FixedRate(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LaunchPlanCreateResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.uint32(); - break; - case 2: - message.unit = reader.int32(); - break; default: reader.skipType(tag & 7); break; @@ -37230,53 +37378,56 @@ }; /** - * Verifies a FixedRate message. + * Verifies a LaunchPlanCreateResponse message. * @function verify - * @memberof flyteidl.admin.FixedRate + * @memberof flyteidl.admin.LaunchPlanCreateResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FixedRate.verify = function verify(message) { + LaunchPlanCreateResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!$util.isInteger(message.value)) - return "value: integer expected"; - if (message.unit != null && message.hasOwnProperty("unit")) - switch (message.unit) { - default: - return "unit: enum value expected"; - case 0: - case 1: - case 2: - break; - } return null; }; - return FixedRate; + return LaunchPlanCreateResponse; })(); - admin.CronSchedule = (function() { + /** + * LaunchPlanState enum. + * @name flyteidl.admin.LaunchPlanState + * @enum {string} + * @property {number} INACTIVE=0 INACTIVE value + * @property {number} ACTIVE=1 ACTIVE value + */ + admin.LaunchPlanState = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "INACTIVE"] = 0; + values[valuesById[1] = "ACTIVE"] = 1; + return values; + })(); + + admin.LaunchPlan = (function() { /** - * Properties of a CronSchedule. + * Properties of a LaunchPlan. * @memberof flyteidl.admin - * @interface ICronSchedule - * @property {string|null} [schedule] CronSchedule schedule - * @property {string|null} [offset] CronSchedule offset + * @interface ILaunchPlan + * @property {flyteidl.core.IIdentifier|null} [id] LaunchPlan id + * @property {flyteidl.admin.ILaunchPlanSpec|null} [spec] LaunchPlan spec + * @property {flyteidl.admin.ILaunchPlanClosure|null} [closure] LaunchPlan closure */ /** - * Constructs a new CronSchedule. + * Constructs a new LaunchPlan. * @memberof flyteidl.admin - * @classdesc Represents a CronSchedule. - * @implements ICronSchedule + * @classdesc Represents a LaunchPlan. + * @implements ILaunchPlan * @constructor - * @param {flyteidl.admin.ICronSchedule=} [properties] Properties to set + * @param {flyteidl.admin.ILaunchPlan=} [properties] Properties to set */ - function CronSchedule(properties) { + function LaunchPlan(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -37284,75 +37435,88 @@ } /** - * CronSchedule schedule. - * @member {string} schedule - * @memberof flyteidl.admin.CronSchedule + * LaunchPlan id. + * @member {flyteidl.core.IIdentifier|null|undefined} id + * @memberof flyteidl.admin.LaunchPlan * @instance */ - CronSchedule.prototype.schedule = ""; + LaunchPlan.prototype.id = null; /** - * CronSchedule offset. - * @member {string} offset - * @memberof flyteidl.admin.CronSchedule + * LaunchPlan spec. + * @member {flyteidl.admin.ILaunchPlanSpec|null|undefined} spec + * @memberof flyteidl.admin.LaunchPlan * @instance */ - CronSchedule.prototype.offset = ""; + LaunchPlan.prototype.spec = null; /** - * Creates a new CronSchedule instance using the specified properties. - * @function create - * @memberof flyteidl.admin.CronSchedule - * @static - * @param {flyteidl.admin.ICronSchedule=} [properties] Properties to set - * @returns {flyteidl.admin.CronSchedule} CronSchedule instance + * LaunchPlan closure. + * @member {flyteidl.admin.ILaunchPlanClosure|null|undefined} closure + * @memberof flyteidl.admin.LaunchPlan + * @instance */ - CronSchedule.create = function create(properties) { - return new CronSchedule(properties); - }; + LaunchPlan.prototype.closure = null; /** - * Encodes the specified CronSchedule message. Does not implicitly {@link flyteidl.admin.CronSchedule.verify|verify} messages. - * @function encode - * @memberof flyteidl.admin.CronSchedule + * Creates a new LaunchPlan instance using the specified properties. + * @function create + * @memberof flyteidl.admin.LaunchPlan * @static - * @param {flyteidl.admin.ICronSchedule} message CronSchedule message or plain object to encode + * @param {flyteidl.admin.ILaunchPlan=} [properties] Properties to set + * @returns {flyteidl.admin.LaunchPlan} LaunchPlan instance + */ + LaunchPlan.create = function create(properties) { + return new LaunchPlan(properties); + }; + + /** + * Encodes the specified LaunchPlan message. Does not implicitly {@link flyteidl.admin.LaunchPlan.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.LaunchPlan + * @static + * @param {flyteidl.admin.ILaunchPlan} message LaunchPlan message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CronSchedule.encode = function encode(message, writer) { + LaunchPlan.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.schedule != null && message.hasOwnProperty("schedule")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.schedule); - if (message.offset != null && message.hasOwnProperty("offset")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.offset); + if (message.id != null && message.hasOwnProperty("id")) + $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.spec != null && message.hasOwnProperty("spec")) + $root.flyteidl.admin.LaunchPlanSpec.encode(message.spec, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.closure != null && message.hasOwnProperty("closure")) + $root.flyteidl.admin.LaunchPlanClosure.encode(message.closure, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Decodes a CronSchedule message from the specified reader or buffer. + * Decodes a LaunchPlan message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.CronSchedule + * @memberof flyteidl.admin.LaunchPlan * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.CronSchedule} CronSchedule + * @returns {flyteidl.admin.LaunchPlan} LaunchPlan * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CronSchedule.decode = function decode(reader, length) { + LaunchPlan.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.admin.CronSchedule(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LaunchPlan(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.schedule = reader.string(); + message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); break; case 2: - message.offset = reader.string(); + message.spec = $root.flyteidl.admin.LaunchPlanSpec.decode(reader, reader.uint32()); + break; + case 3: + message.closure = $root.flyteidl.admin.LaunchPlanClosure.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -37363,49 +37527,57 @@ }; /** - * Verifies a CronSchedule message. + * Verifies a LaunchPlan message. * @function verify - * @memberof flyteidl.admin.CronSchedule + * @memberof flyteidl.admin.LaunchPlan * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CronSchedule.verify = function verify(message) { + LaunchPlan.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.schedule != null && message.hasOwnProperty("schedule")) - if (!$util.isString(message.schedule)) - return "schedule: string expected"; - if (message.offset != null && message.hasOwnProperty("offset")) - if (!$util.isString(message.offset)) - return "offset: string expected"; + if (message.id != null && message.hasOwnProperty("id")) { + var error = $root.flyteidl.core.Identifier.verify(message.id); + if (error) + return "id." + error; + } + if (message.spec != null && message.hasOwnProperty("spec")) { + var error = $root.flyteidl.admin.LaunchPlanSpec.verify(message.spec); + if (error) + return "spec." + error; + } + if (message.closure != null && message.hasOwnProperty("closure")) { + var error = $root.flyteidl.admin.LaunchPlanClosure.verify(message.closure); + if (error) + return "closure." + error; + } return null; }; - return CronSchedule; + return LaunchPlan; })(); - admin.Schedule = (function() { + admin.LaunchPlanList = (function() { /** - * Properties of a Schedule. + * Properties of a LaunchPlanList. * @memberof flyteidl.admin - * @interface ISchedule - * @property {string|null} [cronExpression] Schedule cronExpression - * @property {flyteidl.admin.IFixedRate|null} [rate] Schedule rate - * @property {flyteidl.admin.ICronSchedule|null} [cronSchedule] Schedule cronSchedule - * @property {string|null} [kickoffTimeInputArg] Schedule kickoffTimeInputArg + * @interface ILaunchPlanList + * @property {Array.|null} [launchPlans] LaunchPlanList launchPlans + * @property {string|null} [token] LaunchPlanList token */ /** - * Constructs a new Schedule. + * Constructs a new LaunchPlanList. * @memberof flyteidl.admin - * @classdesc Represents a Schedule. - * @implements ISchedule + * @classdesc Represents a LaunchPlanList. + * @implements ILaunchPlanList * @constructor - * @param {flyteidl.admin.ISchedule=} [properties] Properties to set + * @param {flyteidl.admin.ILaunchPlanList=} [properties] Properties to set */ - function Schedule(properties) { + function LaunchPlanList(properties) { + this.launchPlans = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -37413,115 +37585,78 @@ } /** - * Schedule cronExpression. - * @member {string} cronExpression - * @memberof flyteidl.admin.Schedule - * @instance - */ - Schedule.prototype.cronExpression = ""; - - /** - * Schedule rate. - * @member {flyteidl.admin.IFixedRate|null|undefined} rate - * @memberof flyteidl.admin.Schedule - * @instance - */ - Schedule.prototype.rate = null; - - /** - * Schedule cronSchedule. - * @member {flyteidl.admin.ICronSchedule|null|undefined} cronSchedule - * @memberof flyteidl.admin.Schedule - * @instance - */ - Schedule.prototype.cronSchedule = null; - - /** - * Schedule kickoffTimeInputArg. - * @member {string} kickoffTimeInputArg - * @memberof flyteidl.admin.Schedule + * LaunchPlanList launchPlans. + * @member {Array.} launchPlans + * @memberof flyteidl.admin.LaunchPlanList * @instance */ - Schedule.prototype.kickoffTimeInputArg = ""; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + LaunchPlanList.prototype.launchPlans = $util.emptyArray; /** - * Schedule ScheduleExpression. - * @member {"cronExpression"|"rate"|"cronSchedule"|undefined} ScheduleExpression - * @memberof flyteidl.admin.Schedule + * LaunchPlanList token. + * @member {string} token + * @memberof flyteidl.admin.LaunchPlanList * @instance */ - Object.defineProperty(Schedule.prototype, "ScheduleExpression", { - get: $util.oneOfGetter($oneOfFields = ["cronExpression", "rate", "cronSchedule"]), - set: $util.oneOfSetter($oneOfFields) - }); + LaunchPlanList.prototype.token = ""; /** - * Creates a new Schedule instance using the specified properties. + * Creates a new LaunchPlanList instance using the specified properties. * @function create - * @memberof flyteidl.admin.Schedule + * @memberof flyteidl.admin.LaunchPlanList * @static - * @param {flyteidl.admin.ISchedule=} [properties] Properties to set - * @returns {flyteidl.admin.Schedule} Schedule instance + * @param {flyteidl.admin.ILaunchPlanList=} [properties] Properties to set + * @returns {flyteidl.admin.LaunchPlanList} LaunchPlanList instance */ - Schedule.create = function create(properties) { - return new Schedule(properties); + LaunchPlanList.create = function create(properties) { + return new LaunchPlanList(properties); }; /** - * Encodes the specified Schedule message. Does not implicitly {@link flyteidl.admin.Schedule.verify|verify} messages. + * Encodes the specified LaunchPlanList message. Does not implicitly {@link flyteidl.admin.LaunchPlanList.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.Schedule + * @memberof flyteidl.admin.LaunchPlanList * @static - * @param {flyteidl.admin.ISchedule} message Schedule message or plain object to encode + * @param {flyteidl.admin.ILaunchPlanList} message LaunchPlanList message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Schedule.encode = function encode(message, writer) { + LaunchPlanList.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.cronExpression != null && message.hasOwnProperty("cronExpression")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.cronExpression); - if (message.rate != null && message.hasOwnProperty("rate")) - $root.flyteidl.admin.FixedRate.encode(message.rate, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.kickoffTimeInputArg != null && message.hasOwnProperty("kickoffTimeInputArg")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.kickoffTimeInputArg); - if (message.cronSchedule != null && message.hasOwnProperty("cronSchedule")) - $root.flyteidl.admin.CronSchedule.encode(message.cronSchedule, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.launchPlans != null && message.launchPlans.length) + for (var i = 0; i < message.launchPlans.length; ++i) + $root.flyteidl.admin.LaunchPlan.encode(message.launchPlans[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.token != null && message.hasOwnProperty("token")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.token); return writer; }; /** - * Decodes a Schedule message from the specified reader or buffer. + * Decodes a LaunchPlanList message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.Schedule + * @memberof flyteidl.admin.LaunchPlanList * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.Schedule} Schedule + * @returns {flyteidl.admin.LaunchPlanList} LaunchPlanList * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Schedule.decode = function decode(reader, length) { + LaunchPlanList.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.admin.Schedule(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LaunchPlanList(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.cronExpression = reader.string(); + if (!(message.launchPlans && message.launchPlans.length)) + message.launchPlans = []; + message.launchPlans.push($root.flyteidl.admin.LaunchPlan.decode(reader, reader.uint32())); break; case 2: - message.rate = $root.flyteidl.admin.FixedRate.decode(reader, reader.uint32()); - break; - case 4: - message.cronSchedule = $root.flyteidl.admin.CronSchedule.decode(reader, reader.uint32()); - break; - case 3: - message.kickoffTimeInputArg = reader.string(); + message.token = reader.string(); break; default: reader.skipType(tag & 7); @@ -37532,99 +37667,53 @@ }; /** - * Verifies a Schedule message. + * Verifies a LaunchPlanList message. * @function verify - * @memberof flyteidl.admin.Schedule + * @memberof flyteidl.admin.LaunchPlanList * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Schedule.verify = function verify(message) { + LaunchPlanList.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.cronExpression != null && message.hasOwnProperty("cronExpression")) { - properties.ScheduleExpression = 1; - if (!$util.isString(message.cronExpression)) - return "cronExpression: string expected"; - } - if (message.rate != null && message.hasOwnProperty("rate")) { - if (properties.ScheduleExpression === 1) - return "ScheduleExpression: multiple values"; - properties.ScheduleExpression = 1; - { - var error = $root.flyteidl.admin.FixedRate.verify(message.rate); - if (error) - return "rate." + error; - } - } - if (message.cronSchedule != null && message.hasOwnProperty("cronSchedule")) { - if (properties.ScheduleExpression === 1) - return "ScheduleExpression: multiple values"; - properties.ScheduleExpression = 1; - { - var error = $root.flyteidl.admin.CronSchedule.verify(message.cronSchedule); + if (message.launchPlans != null && message.hasOwnProperty("launchPlans")) { + if (!Array.isArray(message.launchPlans)) + return "launchPlans: array expected"; + for (var i = 0; i < message.launchPlans.length; ++i) { + var error = $root.flyteidl.admin.LaunchPlan.verify(message.launchPlans[i]); if (error) - return "cronSchedule." + error; + return "launchPlans." + error; } } - if (message.kickoffTimeInputArg != null && message.hasOwnProperty("kickoffTimeInputArg")) - if (!$util.isString(message.kickoffTimeInputArg)) - return "kickoffTimeInputArg: string expected"; + if (message.token != null && message.hasOwnProperty("token")) + if (!$util.isString(message.token)) + return "token: string expected"; return null; }; - return Schedule; + return LaunchPlanList; })(); - /** - * MatchableResource enum. - * @name flyteidl.admin.MatchableResource - * @enum {string} - * @property {number} TASK_RESOURCE=0 TASK_RESOURCE value - * @property {number} CLUSTER_RESOURCE=1 CLUSTER_RESOURCE value - * @property {number} EXECUTION_QUEUE=2 EXECUTION_QUEUE value - * @property {number} EXECUTION_CLUSTER_LABEL=3 EXECUTION_CLUSTER_LABEL value - * @property {number} QUALITY_OF_SERVICE_SPECIFICATION=4 QUALITY_OF_SERVICE_SPECIFICATION value - * @property {number} PLUGIN_OVERRIDE=5 PLUGIN_OVERRIDE value - * @property {number} WORKFLOW_EXECUTION_CONFIG=6 WORKFLOW_EXECUTION_CONFIG value - * @property {number} CLUSTER_ASSIGNMENT=7 CLUSTER_ASSIGNMENT value - */ - admin.MatchableResource = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "TASK_RESOURCE"] = 0; - values[valuesById[1] = "CLUSTER_RESOURCE"] = 1; - values[valuesById[2] = "EXECUTION_QUEUE"] = 2; - values[valuesById[3] = "EXECUTION_CLUSTER_LABEL"] = 3; - values[valuesById[4] = "QUALITY_OF_SERVICE_SPECIFICATION"] = 4; - values[valuesById[5] = "PLUGIN_OVERRIDE"] = 5; - values[valuesById[6] = "WORKFLOW_EXECUTION_CONFIG"] = 6; - values[valuesById[7] = "CLUSTER_ASSIGNMENT"] = 7; - return values; - })(); - - admin.TaskResourceSpec = (function() { + admin.Auth = (function() { /** - * Properties of a TaskResourceSpec. + * Properties of an Auth. * @memberof flyteidl.admin - * @interface ITaskResourceSpec - * @property {string|null} [cpu] TaskResourceSpec cpu - * @property {string|null} [gpu] TaskResourceSpec gpu - * @property {string|null} [memory] TaskResourceSpec memory - * @property {string|null} [storage] TaskResourceSpec storage - * @property {string|null} [ephemeralStorage] TaskResourceSpec ephemeralStorage + * @interface IAuth + * @property {string|null} [assumableIamRole] Auth assumableIamRole + * @property {string|null} [kubernetesServiceAccount] Auth kubernetesServiceAccount */ /** - * Constructs a new TaskResourceSpec. + * Constructs a new Auth. * @memberof flyteidl.admin - * @classdesc Represents a TaskResourceSpec. - * @implements ITaskResourceSpec + * @classdesc Represents an Auth. + * @implements IAuth * @constructor - * @param {flyteidl.admin.ITaskResourceSpec=} [properties] Properties to set + * @param {flyteidl.admin.IAuth=} [properties] Properties to set */ - function TaskResourceSpec(properties) { + function Auth(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -37632,114 +37721,75 @@ } /** - * TaskResourceSpec cpu. - * @member {string} cpu - * @memberof flyteidl.admin.TaskResourceSpec - * @instance - */ - TaskResourceSpec.prototype.cpu = ""; - - /** - * TaskResourceSpec gpu. - * @member {string} gpu - * @memberof flyteidl.admin.TaskResourceSpec - * @instance - */ - TaskResourceSpec.prototype.gpu = ""; - - /** - * TaskResourceSpec memory. - * @member {string} memory - * @memberof flyteidl.admin.TaskResourceSpec - * @instance - */ - TaskResourceSpec.prototype.memory = ""; - - /** - * TaskResourceSpec storage. - * @member {string} storage - * @memberof flyteidl.admin.TaskResourceSpec + * Auth assumableIamRole. + * @member {string} assumableIamRole + * @memberof flyteidl.admin.Auth * @instance */ - TaskResourceSpec.prototype.storage = ""; + Auth.prototype.assumableIamRole = ""; /** - * TaskResourceSpec ephemeralStorage. - * @member {string} ephemeralStorage - * @memberof flyteidl.admin.TaskResourceSpec + * Auth kubernetesServiceAccount. + * @member {string} kubernetesServiceAccount + * @memberof flyteidl.admin.Auth * @instance */ - TaskResourceSpec.prototype.ephemeralStorage = ""; + Auth.prototype.kubernetesServiceAccount = ""; /** - * Creates a new TaskResourceSpec instance using the specified properties. + * Creates a new Auth instance using the specified properties. * @function create - * @memberof flyteidl.admin.TaskResourceSpec + * @memberof flyteidl.admin.Auth * @static - * @param {flyteidl.admin.ITaskResourceSpec=} [properties] Properties to set - * @returns {flyteidl.admin.TaskResourceSpec} TaskResourceSpec instance + * @param {flyteidl.admin.IAuth=} [properties] Properties to set + * @returns {flyteidl.admin.Auth} Auth instance */ - TaskResourceSpec.create = function create(properties) { - return new TaskResourceSpec(properties); + Auth.create = function create(properties) { + return new Auth(properties); }; /** - * Encodes the specified TaskResourceSpec message. Does not implicitly {@link flyteidl.admin.TaskResourceSpec.verify|verify} messages. + * Encodes the specified Auth message. Does not implicitly {@link flyteidl.admin.Auth.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.TaskResourceSpec + * @memberof flyteidl.admin.Auth * @static - * @param {flyteidl.admin.ITaskResourceSpec} message TaskResourceSpec message or plain object to encode + * @param {flyteidl.admin.IAuth} message Auth message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TaskResourceSpec.encode = function encode(message, writer) { + Auth.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.cpu != null && message.hasOwnProperty("cpu")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.cpu); - if (message.gpu != null && message.hasOwnProperty("gpu")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.gpu); - if (message.memory != null && message.hasOwnProperty("memory")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.memory); - if (message.storage != null && message.hasOwnProperty("storage")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.storage); - if (message.ephemeralStorage != null && message.hasOwnProperty("ephemeralStorage")) - writer.uint32(/* id 5, wireType 2 =*/42).string(message.ephemeralStorage); + if (message.assumableIamRole != null && message.hasOwnProperty("assumableIamRole")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.assumableIamRole); + if (message.kubernetesServiceAccount != null && message.hasOwnProperty("kubernetesServiceAccount")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.kubernetesServiceAccount); return writer; }; /** - * Decodes a TaskResourceSpec message from the specified reader or buffer. + * Decodes an Auth message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.TaskResourceSpec + * @memberof flyteidl.admin.Auth * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.TaskResourceSpec} TaskResourceSpec + * @returns {flyteidl.admin.Auth} Auth * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TaskResourceSpec.decode = function decode(reader, length) { + Auth.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.admin.TaskResourceSpec(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.Auth(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.cpu = reader.string(); + message.assumableIamRole = reader.string(); break; case 2: - message.gpu = reader.string(); - break; - case 3: - message.memory = reader.string(); - break; - case 4: - message.storage = reader.string(); - break; - case 5: - message.ephemeralStorage = reader.string(); + message.kubernetesServiceAccount = reader.string(); break; default: reader.skipType(tag & 7); @@ -37750,56 +37800,61 @@ }; /** - * Verifies a TaskResourceSpec message. + * Verifies an Auth message. * @function verify - * @memberof flyteidl.admin.TaskResourceSpec + * @memberof flyteidl.admin.Auth * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TaskResourceSpec.verify = function verify(message) { + Auth.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.cpu != null && message.hasOwnProperty("cpu")) - if (!$util.isString(message.cpu)) - return "cpu: string expected"; - if (message.gpu != null && message.hasOwnProperty("gpu")) - if (!$util.isString(message.gpu)) - return "gpu: string expected"; - if (message.memory != null && message.hasOwnProperty("memory")) - if (!$util.isString(message.memory)) - return "memory: string expected"; - if (message.storage != null && message.hasOwnProperty("storage")) - if (!$util.isString(message.storage)) - return "storage: string expected"; - if (message.ephemeralStorage != null && message.hasOwnProperty("ephemeralStorage")) - if (!$util.isString(message.ephemeralStorage)) - return "ephemeralStorage: string expected"; + if (message.assumableIamRole != null && message.hasOwnProperty("assumableIamRole")) + if (!$util.isString(message.assumableIamRole)) + return "assumableIamRole: string expected"; + if (message.kubernetesServiceAccount != null && message.hasOwnProperty("kubernetesServiceAccount")) + if (!$util.isString(message.kubernetesServiceAccount)) + return "kubernetesServiceAccount: string expected"; return null; }; - return TaskResourceSpec; + return Auth; })(); - admin.TaskResourceAttributes = (function() { + admin.LaunchPlanSpec = (function() { /** - * Properties of a TaskResourceAttributes. + * Properties of a LaunchPlanSpec. * @memberof flyteidl.admin - * @interface ITaskResourceAttributes - * @property {flyteidl.admin.ITaskResourceSpec|null} [defaults] TaskResourceAttributes defaults - * @property {flyteidl.admin.ITaskResourceSpec|null} [limits] TaskResourceAttributes limits + * @interface ILaunchPlanSpec + * @property {flyteidl.core.IIdentifier|null} [workflowId] LaunchPlanSpec workflowId + * @property {flyteidl.admin.ILaunchPlanMetadata|null} [entityMetadata] LaunchPlanSpec entityMetadata + * @property {flyteidl.core.IParameterMap|null} [defaultInputs] LaunchPlanSpec defaultInputs + * @property {flyteidl.core.ILiteralMap|null} [fixedInputs] LaunchPlanSpec fixedInputs + * @property {string|null} [role] LaunchPlanSpec role + * @property {flyteidl.admin.ILabels|null} [labels] LaunchPlanSpec labels + * @property {flyteidl.admin.IAnnotations|null} [annotations] LaunchPlanSpec annotations + * @property {flyteidl.admin.IAuth|null} [auth] LaunchPlanSpec auth + * @property {flyteidl.admin.IAuthRole|null} [authRole] LaunchPlanSpec authRole + * @property {flyteidl.core.ISecurityContext|null} [securityContext] LaunchPlanSpec securityContext + * @property {flyteidl.core.IQualityOfService|null} [qualityOfService] LaunchPlanSpec qualityOfService + * @property {flyteidl.admin.IRawOutputDataConfig|null} [rawOutputDataConfig] LaunchPlanSpec rawOutputDataConfig + * @property {number|null} [maxParallelism] LaunchPlanSpec maxParallelism + * @property {google.protobuf.IBoolValue|null} [interruptible] LaunchPlanSpec interruptible + * @property {boolean|null} [overwriteCache] LaunchPlanSpec overwriteCache + * @property {flyteidl.admin.IEnvs|null} [envs] LaunchPlanSpec envs */ /** - * Constructs a new TaskResourceAttributes. + * Constructs a new LaunchPlanSpec. * @memberof flyteidl.admin - * @classdesc Represents a TaskResourceAttributes. - * @implements ITaskResourceAttributes + * @classdesc Represents a LaunchPlanSpec. + * @implements ILaunchPlanSpec * @constructor - * @param {flyteidl.admin.ITaskResourceAttributes=} [properties] Properties to set + * @param {flyteidl.admin.ILaunchPlanSpec=} [properties] Properties to set */ - function TaskResourceAttributes(properties) { + function LaunchPlanSpec(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -37807,252 +37862,379 @@ } /** - * TaskResourceAttributes defaults. - * @member {flyteidl.admin.ITaskResourceSpec|null|undefined} defaults - * @memberof flyteidl.admin.TaskResourceAttributes + * LaunchPlanSpec workflowId. + * @member {flyteidl.core.IIdentifier|null|undefined} workflowId + * @memberof flyteidl.admin.LaunchPlanSpec * @instance */ - TaskResourceAttributes.prototype.defaults = null; + LaunchPlanSpec.prototype.workflowId = null; /** - * TaskResourceAttributes limits. - * @member {flyteidl.admin.ITaskResourceSpec|null|undefined} limits - * @memberof flyteidl.admin.TaskResourceAttributes + * LaunchPlanSpec entityMetadata. + * @member {flyteidl.admin.ILaunchPlanMetadata|null|undefined} entityMetadata + * @memberof flyteidl.admin.LaunchPlanSpec * @instance */ - TaskResourceAttributes.prototype.limits = null; + LaunchPlanSpec.prototype.entityMetadata = null; /** - * Creates a new TaskResourceAttributes instance using the specified properties. - * @function create - * @memberof flyteidl.admin.TaskResourceAttributes - * @static - * @param {flyteidl.admin.ITaskResourceAttributes=} [properties] Properties to set - * @returns {flyteidl.admin.TaskResourceAttributes} TaskResourceAttributes instance + * LaunchPlanSpec defaultInputs. + * @member {flyteidl.core.IParameterMap|null|undefined} defaultInputs + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance */ - TaskResourceAttributes.create = function create(properties) { - return new TaskResourceAttributes(properties); - }; + LaunchPlanSpec.prototype.defaultInputs = null; /** - * Encodes the specified TaskResourceAttributes message. Does not implicitly {@link flyteidl.admin.TaskResourceAttributes.verify|verify} messages. - * @function encode - * @memberof flyteidl.admin.TaskResourceAttributes - * @static - * @param {flyteidl.admin.ITaskResourceAttributes} message TaskResourceAttributes message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * LaunchPlanSpec fixedInputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} fixedInputs + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance */ - TaskResourceAttributes.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.defaults != null && message.hasOwnProperty("defaults")) - $root.flyteidl.admin.TaskResourceSpec.encode(message.defaults, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.limits != null && message.hasOwnProperty("limits")) - $root.flyteidl.admin.TaskResourceSpec.encode(message.limits, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; + LaunchPlanSpec.prototype.fixedInputs = null; /** - * Decodes a TaskResourceAttributes message from the specified reader or buffer. - * @function decode - * @memberof flyteidl.admin.TaskResourceAttributes - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.TaskResourceAttributes} TaskResourceAttributes - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * LaunchPlanSpec role. + * @member {string} role + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance */ - TaskResourceAttributes.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.admin.TaskResourceAttributes(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.defaults = $root.flyteidl.admin.TaskResourceSpec.decode(reader, reader.uint32()); - break; - case 2: - message.limits = $root.flyteidl.admin.TaskResourceSpec.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + LaunchPlanSpec.prototype.role = ""; /** - * Verifies a TaskResourceAttributes message. - * @function verify - * @memberof flyteidl.admin.TaskResourceAttributes - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not + * LaunchPlanSpec labels. + * @member {flyteidl.admin.ILabels|null|undefined} labels + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance */ - TaskResourceAttributes.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.defaults != null && message.hasOwnProperty("defaults")) { - var error = $root.flyteidl.admin.TaskResourceSpec.verify(message.defaults); - if (error) - return "defaults." + error; - } - if (message.limits != null && message.hasOwnProperty("limits")) { - var error = $root.flyteidl.admin.TaskResourceSpec.verify(message.limits); - if (error) - return "limits." + error; - } - return null; - }; + LaunchPlanSpec.prototype.labels = null; - return TaskResourceAttributes; - })(); + /** + * LaunchPlanSpec annotations. + * @member {flyteidl.admin.IAnnotations|null|undefined} annotations + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.annotations = null; - admin.ClusterResourceAttributes = (function() { + /** + * LaunchPlanSpec auth. + * @member {flyteidl.admin.IAuth|null|undefined} auth + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.auth = null; /** - * Properties of a ClusterResourceAttributes. - * @memberof flyteidl.admin - * @interface IClusterResourceAttributes - * @property {Object.|null} [attributes] ClusterResourceAttributes attributes + * LaunchPlanSpec authRole. + * @member {flyteidl.admin.IAuthRole|null|undefined} authRole + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance */ + LaunchPlanSpec.prototype.authRole = null; /** - * Constructs a new ClusterResourceAttributes. - * @memberof flyteidl.admin - * @classdesc Represents a ClusterResourceAttributes. - * @implements IClusterResourceAttributes - * @constructor - * @param {flyteidl.admin.IClusterResourceAttributes=} [properties] Properties to set + * LaunchPlanSpec securityContext. + * @member {flyteidl.core.ISecurityContext|null|undefined} securityContext + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance */ - function ClusterResourceAttributes(properties) { - this.attributes = {}; - 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]]; - } + LaunchPlanSpec.prototype.securityContext = null; /** - * ClusterResourceAttributes attributes. - * @member {Object.} attributes - * @memberof flyteidl.admin.ClusterResourceAttributes + * LaunchPlanSpec qualityOfService. + * @member {flyteidl.core.IQualityOfService|null|undefined} qualityOfService + * @memberof flyteidl.admin.LaunchPlanSpec * @instance */ - ClusterResourceAttributes.prototype.attributes = $util.emptyObject; + LaunchPlanSpec.prototype.qualityOfService = null; /** - * Creates a new ClusterResourceAttributes instance using the specified properties. + * LaunchPlanSpec rawOutputDataConfig. + * @member {flyteidl.admin.IRawOutputDataConfig|null|undefined} rawOutputDataConfig + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.rawOutputDataConfig = null; + + /** + * LaunchPlanSpec maxParallelism. + * @member {number} maxParallelism + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.maxParallelism = 0; + + /** + * LaunchPlanSpec interruptible. + * @member {google.protobuf.IBoolValue|null|undefined} interruptible + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.interruptible = null; + + /** + * LaunchPlanSpec overwriteCache. + * @member {boolean} overwriteCache + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.overwriteCache = false; + + /** + * LaunchPlanSpec envs. + * @member {flyteidl.admin.IEnvs|null|undefined} envs + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.envs = null; + + /** + * Creates a new LaunchPlanSpec instance using the specified properties. * @function create - * @memberof flyteidl.admin.ClusterResourceAttributes + * @memberof flyteidl.admin.LaunchPlanSpec * @static - * @param {flyteidl.admin.IClusterResourceAttributes=} [properties] Properties to set - * @returns {flyteidl.admin.ClusterResourceAttributes} ClusterResourceAttributes instance + * @param {flyteidl.admin.ILaunchPlanSpec=} [properties] Properties to set + * @returns {flyteidl.admin.LaunchPlanSpec} LaunchPlanSpec instance */ - ClusterResourceAttributes.create = function create(properties) { - return new ClusterResourceAttributes(properties); + LaunchPlanSpec.create = function create(properties) { + return new LaunchPlanSpec(properties); }; /** - * Encodes the specified ClusterResourceAttributes message. Does not implicitly {@link flyteidl.admin.ClusterResourceAttributes.verify|verify} messages. + * Encodes the specified LaunchPlanSpec message. Does not implicitly {@link flyteidl.admin.LaunchPlanSpec.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.ClusterResourceAttributes + * @memberof flyteidl.admin.LaunchPlanSpec * @static - * @param {flyteidl.admin.IClusterResourceAttributes} message ClusterResourceAttributes message or plain object to encode + * @param {flyteidl.admin.ILaunchPlanSpec} message LaunchPlanSpec message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ClusterResourceAttributes.encode = function encode(message, writer) { + LaunchPlanSpec.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.attributes != null && message.hasOwnProperty("attributes")) - for (var keys = Object.keys(message.attributes), i = 0; i < keys.length; ++i) - writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.attributes[keys[i]]).ldelim(); + if (message.workflowId != null && message.hasOwnProperty("workflowId")) + $root.flyteidl.core.Identifier.encode(message.workflowId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.entityMetadata != null && message.hasOwnProperty("entityMetadata")) + $root.flyteidl.admin.LaunchPlanMetadata.encode(message.entityMetadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.defaultInputs != null && message.hasOwnProperty("defaultInputs")) + $root.flyteidl.core.ParameterMap.encode(message.defaultInputs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.fixedInputs != null && message.hasOwnProperty("fixedInputs")) + $root.flyteidl.core.LiteralMap.encode(message.fixedInputs, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.role != null && message.hasOwnProperty("role")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.role); + if (message.labels != null && message.hasOwnProperty("labels")) + $root.flyteidl.admin.Labels.encode(message.labels, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.annotations != null && message.hasOwnProperty("annotations")) + $root.flyteidl.admin.Annotations.encode(message.annotations, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.auth != null && message.hasOwnProperty("auth")) + $root.flyteidl.admin.Auth.encode(message.auth, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.authRole != null && message.hasOwnProperty("authRole")) + $root.flyteidl.admin.AuthRole.encode(message.authRole, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.securityContext != null && message.hasOwnProperty("securityContext")) + $root.flyteidl.core.SecurityContext.encode(message.securityContext, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) + $root.flyteidl.core.QualityOfService.encode(message.qualityOfService, writer.uint32(/* id 16, wireType 2 =*/130).fork()).ldelim(); + if (message.rawOutputDataConfig != null && message.hasOwnProperty("rawOutputDataConfig")) + $root.flyteidl.admin.RawOutputDataConfig.encode(message.rawOutputDataConfig, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); + if (message.maxParallelism != null && message.hasOwnProperty("maxParallelism")) + writer.uint32(/* id 18, wireType 0 =*/144).int32(message.maxParallelism); + if (message.interruptible != null && message.hasOwnProperty("interruptible")) + $root.google.protobuf.BoolValue.encode(message.interruptible, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + writer.uint32(/* id 20, wireType 0 =*/160).bool(message.overwriteCache); + if (message.envs != null && message.hasOwnProperty("envs")) + $root.flyteidl.admin.Envs.encode(message.envs, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); return writer; }; /** - * Decodes a ClusterResourceAttributes message from the specified reader or buffer. + * Decodes a LaunchPlanSpec message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.ClusterResourceAttributes + * @memberof flyteidl.admin.LaunchPlanSpec * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.ClusterResourceAttributes} ClusterResourceAttributes + * @returns {flyteidl.admin.LaunchPlanSpec} LaunchPlanSpec * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ClusterResourceAttributes.decode = function decode(reader, length) { + LaunchPlanSpec.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.admin.ClusterResourceAttributes(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LaunchPlanSpec(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - reader.skip().pos++; - if (message.attributes === $util.emptyObject) - message.attributes = {}; - key = reader.string(); - reader.pos++; - message.attributes[key] = reader.string(); + message.workflowId = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); + break; + case 2: + message.entityMetadata = $root.flyteidl.admin.LaunchPlanMetadata.decode(reader, reader.uint32()); + break; + case 3: + message.defaultInputs = $root.flyteidl.core.ParameterMap.decode(reader, reader.uint32()); + break; + case 4: + message.fixedInputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 5: + message.role = reader.string(); + break; + case 6: + message.labels = $root.flyteidl.admin.Labels.decode(reader, reader.uint32()); + break; + case 7: + message.annotations = $root.flyteidl.admin.Annotations.decode(reader, reader.uint32()); + break; + case 8: + message.auth = $root.flyteidl.admin.Auth.decode(reader, reader.uint32()); + break; + case 9: + message.authRole = $root.flyteidl.admin.AuthRole.decode(reader, reader.uint32()); + break; + case 10: + message.securityContext = $root.flyteidl.core.SecurityContext.decode(reader, reader.uint32()); + break; + case 16: + message.qualityOfService = $root.flyteidl.core.QualityOfService.decode(reader, reader.uint32()); + break; + case 17: + message.rawOutputDataConfig = $root.flyteidl.admin.RawOutputDataConfig.decode(reader, reader.uint32()); + break; + case 18: + message.maxParallelism = reader.int32(); + break; + case 19: + message.interruptible = $root.google.protobuf.BoolValue.decode(reader, reader.uint32()); + break; + case 20: + message.overwriteCache = reader.bool(); + break; + case 21: + message.envs = $root.flyteidl.admin.Envs.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); break; } } - return message; - }; - - /** - * Verifies a ClusterResourceAttributes message. - * @function verify - * @memberof flyteidl.admin.ClusterResourceAttributes - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ClusterResourceAttributes.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.attributes != null && message.hasOwnProperty("attributes")) { - if (!$util.isObject(message.attributes)) - return "attributes: object expected"; - var key = Object.keys(message.attributes); - for (var i = 0; i < key.length; ++i) - if (!$util.isString(message.attributes[key[i]])) - return "attributes: string{k:string} expected"; + return message; + }; + + /** + * Verifies a LaunchPlanSpec message. + * @function verify + * @memberof flyteidl.admin.LaunchPlanSpec + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + LaunchPlanSpec.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.workflowId != null && message.hasOwnProperty("workflowId")) { + var error = $root.flyteidl.core.Identifier.verify(message.workflowId); + if (error) + return "workflowId." + error; + } + if (message.entityMetadata != null && message.hasOwnProperty("entityMetadata")) { + var error = $root.flyteidl.admin.LaunchPlanMetadata.verify(message.entityMetadata); + if (error) + return "entityMetadata." + error; + } + if (message.defaultInputs != null && message.hasOwnProperty("defaultInputs")) { + var error = $root.flyteidl.core.ParameterMap.verify(message.defaultInputs); + if (error) + return "defaultInputs." + error; + } + if (message.fixedInputs != null && message.hasOwnProperty("fixedInputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.fixedInputs); + if (error) + return "fixedInputs." + error; + } + if (message.role != null && message.hasOwnProperty("role")) + if (!$util.isString(message.role)) + return "role: string expected"; + if (message.labels != null && message.hasOwnProperty("labels")) { + var error = $root.flyteidl.admin.Labels.verify(message.labels); + if (error) + return "labels." + error; + } + if (message.annotations != null && message.hasOwnProperty("annotations")) { + var error = $root.flyteidl.admin.Annotations.verify(message.annotations); + if (error) + return "annotations." + error; + } + if (message.auth != null && message.hasOwnProperty("auth")) { + var error = $root.flyteidl.admin.Auth.verify(message.auth); + if (error) + return "auth." + error; + } + if (message.authRole != null && message.hasOwnProperty("authRole")) { + var error = $root.flyteidl.admin.AuthRole.verify(message.authRole); + if (error) + return "authRole." + error; + } + if (message.securityContext != null && message.hasOwnProperty("securityContext")) { + var error = $root.flyteidl.core.SecurityContext.verify(message.securityContext); + if (error) + return "securityContext." + error; + } + if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) { + var error = $root.flyteidl.core.QualityOfService.verify(message.qualityOfService); + if (error) + return "qualityOfService." + error; + } + if (message.rawOutputDataConfig != null && message.hasOwnProperty("rawOutputDataConfig")) { + var error = $root.flyteidl.admin.RawOutputDataConfig.verify(message.rawOutputDataConfig); + if (error) + return "rawOutputDataConfig." + error; + } + if (message.maxParallelism != null && message.hasOwnProperty("maxParallelism")) + if (!$util.isInteger(message.maxParallelism)) + return "maxParallelism: integer expected"; + if (message.interruptible != null && message.hasOwnProperty("interruptible")) { + var error = $root.google.protobuf.BoolValue.verify(message.interruptible); + if (error) + return "interruptible." + error; + } + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + if (typeof message.overwriteCache !== "boolean") + return "overwriteCache: boolean expected"; + if (message.envs != null && message.hasOwnProperty("envs")) { + var error = $root.flyteidl.admin.Envs.verify(message.envs); + if (error) + return "envs." + error; } return null; }; - return ClusterResourceAttributes; + return LaunchPlanSpec; })(); - admin.ExecutionQueueAttributes = (function() { + admin.LaunchPlanClosure = (function() { /** - * Properties of an ExecutionQueueAttributes. + * Properties of a LaunchPlanClosure. * @memberof flyteidl.admin - * @interface IExecutionQueueAttributes - * @property {Array.|null} [tags] ExecutionQueueAttributes tags + * @interface ILaunchPlanClosure + * @property {flyteidl.admin.LaunchPlanState|null} [state] LaunchPlanClosure state + * @property {flyteidl.core.IParameterMap|null} [expectedInputs] LaunchPlanClosure expectedInputs + * @property {flyteidl.core.IVariableMap|null} [expectedOutputs] LaunchPlanClosure expectedOutputs + * @property {google.protobuf.ITimestamp|null} [createdAt] LaunchPlanClosure createdAt + * @property {google.protobuf.ITimestamp|null} [updatedAt] LaunchPlanClosure updatedAt */ /** - * Constructs a new ExecutionQueueAttributes. + * Constructs a new LaunchPlanClosure. * @memberof flyteidl.admin - * @classdesc Represents an ExecutionQueueAttributes. - * @implements IExecutionQueueAttributes + * @classdesc Represents a LaunchPlanClosure. + * @implements ILaunchPlanClosure * @constructor - * @param {flyteidl.admin.IExecutionQueueAttributes=} [properties] Properties to set + * @param {flyteidl.admin.ILaunchPlanClosure=} [properties] Properties to set */ - function ExecutionQueueAttributes(properties) { - this.tags = []; + function LaunchPlanClosure(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -38060,65 +38242,114 @@ } /** - * ExecutionQueueAttributes tags. - * @member {Array.} tags - * @memberof flyteidl.admin.ExecutionQueueAttributes + * LaunchPlanClosure state. + * @member {flyteidl.admin.LaunchPlanState} state + * @memberof flyteidl.admin.LaunchPlanClosure * @instance */ - ExecutionQueueAttributes.prototype.tags = $util.emptyArray; + LaunchPlanClosure.prototype.state = 0; /** - * Creates a new ExecutionQueueAttributes instance using the specified properties. + * LaunchPlanClosure expectedInputs. + * @member {flyteidl.core.IParameterMap|null|undefined} expectedInputs + * @memberof flyteidl.admin.LaunchPlanClosure + * @instance + */ + LaunchPlanClosure.prototype.expectedInputs = null; + + /** + * LaunchPlanClosure expectedOutputs. + * @member {flyteidl.core.IVariableMap|null|undefined} expectedOutputs + * @memberof flyteidl.admin.LaunchPlanClosure + * @instance + */ + LaunchPlanClosure.prototype.expectedOutputs = null; + + /** + * LaunchPlanClosure createdAt. + * @member {google.protobuf.ITimestamp|null|undefined} createdAt + * @memberof flyteidl.admin.LaunchPlanClosure + * @instance + */ + LaunchPlanClosure.prototype.createdAt = null; + + /** + * LaunchPlanClosure updatedAt. + * @member {google.protobuf.ITimestamp|null|undefined} updatedAt + * @memberof flyteidl.admin.LaunchPlanClosure + * @instance + */ + LaunchPlanClosure.prototype.updatedAt = null; + + /** + * Creates a new LaunchPlanClosure instance using the specified properties. * @function create - * @memberof flyteidl.admin.ExecutionQueueAttributes + * @memberof flyteidl.admin.LaunchPlanClosure * @static - * @param {flyteidl.admin.IExecutionQueueAttributes=} [properties] Properties to set - * @returns {flyteidl.admin.ExecutionQueueAttributes} ExecutionQueueAttributes instance + * @param {flyteidl.admin.ILaunchPlanClosure=} [properties] Properties to set + * @returns {flyteidl.admin.LaunchPlanClosure} LaunchPlanClosure instance */ - ExecutionQueueAttributes.create = function create(properties) { - return new ExecutionQueueAttributes(properties); + LaunchPlanClosure.create = function create(properties) { + return new LaunchPlanClosure(properties); }; /** - * Encodes the specified ExecutionQueueAttributes message. Does not implicitly {@link flyteidl.admin.ExecutionQueueAttributes.verify|verify} messages. + * Encodes the specified LaunchPlanClosure message. Does not implicitly {@link flyteidl.admin.LaunchPlanClosure.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.ExecutionQueueAttributes + * @memberof flyteidl.admin.LaunchPlanClosure * @static - * @param {flyteidl.admin.IExecutionQueueAttributes} message ExecutionQueueAttributes message or plain object to encode + * @param {flyteidl.admin.ILaunchPlanClosure} message LaunchPlanClosure message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExecutionQueueAttributes.encode = function encode(message, writer) { + LaunchPlanClosure.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.tags != null && message.tags.length) - for (var i = 0; i < message.tags.length; ++i) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.tags[i]); + if (message.state != null && message.hasOwnProperty("state")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); + if (message.expectedInputs != null && message.hasOwnProperty("expectedInputs")) + $root.flyteidl.core.ParameterMap.encode(message.expectedInputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.expectedOutputs != null && message.hasOwnProperty("expectedOutputs")) + $root.flyteidl.core.VariableMap.encode(message.expectedOutputs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.createdAt != null && message.hasOwnProperty("createdAt")) + $root.google.protobuf.Timestamp.encode(message.createdAt, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.updatedAt != null && message.hasOwnProperty("updatedAt")) + $root.google.protobuf.Timestamp.encode(message.updatedAt, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; /** - * Decodes an ExecutionQueueAttributes message from the specified reader or buffer. + * Decodes a LaunchPlanClosure message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.ExecutionQueueAttributes + * @memberof flyteidl.admin.LaunchPlanClosure * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.ExecutionQueueAttributes} ExecutionQueueAttributes + * @returns {flyteidl.admin.LaunchPlanClosure} LaunchPlanClosure * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ExecutionQueueAttributes.decode = function decode(reader, length) { + LaunchPlanClosure.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.admin.ExecutionQueueAttributes(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LaunchPlanClosure(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.tags && message.tags.length)) - message.tags = []; - message.tags.push(reader.string()); + message.state = reader.int32(); + break; + case 2: + message.expectedInputs = $root.flyteidl.core.ParameterMap.decode(reader, reader.uint32()); + break; + case 3: + message.expectedOutputs = $root.flyteidl.core.VariableMap.decode(reader, reader.uint32()); + break; + case 4: + message.createdAt = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 5: + message.updatedAt = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -38129,47 +38360,71 @@ }; /** - * Verifies an ExecutionQueueAttributes message. + * Verifies a LaunchPlanClosure message. * @function verify - * @memberof flyteidl.admin.ExecutionQueueAttributes + * @memberof flyteidl.admin.LaunchPlanClosure * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ExecutionQueueAttributes.verify = function verify(message) { + LaunchPlanClosure.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.tags != null && message.hasOwnProperty("tags")) { - if (!Array.isArray(message.tags)) - return "tags: array expected"; - for (var i = 0; i < message.tags.length; ++i) - if (!$util.isString(message.tags[i])) - return "tags: string[] expected"; + if (message.state != null && message.hasOwnProperty("state")) + switch (message.state) { + default: + return "state: enum value expected"; + case 0: + case 1: + break; + } + if (message.expectedInputs != null && message.hasOwnProperty("expectedInputs")) { + var error = $root.flyteidl.core.ParameterMap.verify(message.expectedInputs); + if (error) + return "expectedInputs." + error; + } + if (message.expectedOutputs != null && message.hasOwnProperty("expectedOutputs")) { + var error = $root.flyteidl.core.VariableMap.verify(message.expectedOutputs); + if (error) + return "expectedOutputs." + error; + } + if (message.createdAt != null && message.hasOwnProperty("createdAt")) { + var error = $root.google.protobuf.Timestamp.verify(message.createdAt); + if (error) + return "createdAt." + error; + } + if (message.updatedAt != null && message.hasOwnProperty("updatedAt")) { + var error = $root.google.protobuf.Timestamp.verify(message.updatedAt); + if (error) + return "updatedAt." + error; } return null; }; - return ExecutionQueueAttributes; + return LaunchPlanClosure; })(); - admin.ExecutionClusterLabel = (function() { + admin.LaunchPlanMetadata = (function() { /** - * Properties of an ExecutionClusterLabel. + * Properties of a LaunchPlanMetadata. * @memberof flyteidl.admin - * @interface IExecutionClusterLabel - * @property {string|null} [value] ExecutionClusterLabel value + * @interface ILaunchPlanMetadata + * @property {flyteidl.admin.ISchedule|null} [schedule] LaunchPlanMetadata schedule + * @property {Array.|null} [notifications] LaunchPlanMetadata notifications + * @property {google.protobuf.IAny|null} [launchConditions] LaunchPlanMetadata launchConditions */ /** - * Constructs a new ExecutionClusterLabel. + * Constructs a new LaunchPlanMetadata. * @memberof flyteidl.admin - * @classdesc Represents an ExecutionClusterLabel. - * @implements IExecutionClusterLabel + * @classdesc Represents a LaunchPlanMetadata. + * @implements ILaunchPlanMetadata * @constructor - * @param {flyteidl.admin.IExecutionClusterLabel=} [properties] Properties to set + * @param {flyteidl.admin.ILaunchPlanMetadata=} [properties] Properties to set */ - function ExecutionClusterLabel(properties) { + function LaunchPlanMetadata(properties) { + this.notifications = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -38177,62 +38432,91 @@ } /** - * ExecutionClusterLabel value. - * @member {string} value - * @memberof flyteidl.admin.ExecutionClusterLabel + * LaunchPlanMetadata schedule. + * @member {flyteidl.admin.ISchedule|null|undefined} schedule + * @memberof flyteidl.admin.LaunchPlanMetadata * @instance */ - ExecutionClusterLabel.prototype.value = ""; + LaunchPlanMetadata.prototype.schedule = null; /** - * Creates a new ExecutionClusterLabel instance using the specified properties. + * LaunchPlanMetadata notifications. + * @member {Array.} notifications + * @memberof flyteidl.admin.LaunchPlanMetadata + * @instance + */ + LaunchPlanMetadata.prototype.notifications = $util.emptyArray; + + /** + * LaunchPlanMetadata launchConditions. + * @member {google.protobuf.IAny|null|undefined} launchConditions + * @memberof flyteidl.admin.LaunchPlanMetadata + * @instance + */ + LaunchPlanMetadata.prototype.launchConditions = null; + + /** + * Creates a new LaunchPlanMetadata instance using the specified properties. * @function create - * @memberof flyteidl.admin.ExecutionClusterLabel + * @memberof flyteidl.admin.LaunchPlanMetadata * @static - * @param {flyteidl.admin.IExecutionClusterLabel=} [properties] Properties to set - * @returns {flyteidl.admin.ExecutionClusterLabel} ExecutionClusterLabel instance + * @param {flyteidl.admin.ILaunchPlanMetadata=} [properties] Properties to set + * @returns {flyteidl.admin.LaunchPlanMetadata} LaunchPlanMetadata instance */ - ExecutionClusterLabel.create = function create(properties) { - return new ExecutionClusterLabel(properties); + LaunchPlanMetadata.create = function create(properties) { + return new LaunchPlanMetadata(properties); }; /** - * Encodes the specified ExecutionClusterLabel message. Does not implicitly {@link flyteidl.admin.ExecutionClusterLabel.verify|verify} messages. + * Encodes the specified LaunchPlanMetadata message. Does not implicitly {@link flyteidl.admin.LaunchPlanMetadata.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.ExecutionClusterLabel + * @memberof flyteidl.admin.LaunchPlanMetadata * @static - * @param {flyteidl.admin.IExecutionClusterLabel} message ExecutionClusterLabel message or plain object to encode + * @param {flyteidl.admin.ILaunchPlanMetadata} message LaunchPlanMetadata message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExecutionClusterLabel.encode = function encode(message, writer) { + LaunchPlanMetadata.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.value); + if (message.schedule != null && message.hasOwnProperty("schedule")) + $root.flyteidl.admin.Schedule.encode(message.schedule, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.notifications != null && message.notifications.length) + for (var i = 0; i < message.notifications.length; ++i) + $root.flyteidl.admin.Notification.encode(message.notifications[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.launchConditions != null && message.hasOwnProperty("launchConditions")) + $root.google.protobuf.Any.encode(message.launchConditions, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Decodes an ExecutionClusterLabel message from the specified reader or buffer. + * Decodes a LaunchPlanMetadata message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.ExecutionClusterLabel + * @memberof flyteidl.admin.LaunchPlanMetadata * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.ExecutionClusterLabel} ExecutionClusterLabel + * @returns {flyteidl.admin.LaunchPlanMetadata} LaunchPlanMetadata * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ExecutionClusterLabel.decode = function decode(reader, length) { + LaunchPlanMetadata.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.admin.ExecutionClusterLabel(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LaunchPlanMetadata(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.string(); + message.schedule = $root.flyteidl.admin.Schedule.decode(reader, reader.uint32()); + break; + case 2: + if (!(message.notifications && message.notifications.length)) + message.notifications = []; + message.notifications.push($root.flyteidl.admin.Notification.decode(reader, reader.uint32())); + break; + case 3: + message.launchConditions = $root.google.protobuf.Any.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -38243,46 +38527,60 @@ }; /** - * Verifies an ExecutionClusterLabel message. + * Verifies a LaunchPlanMetadata message. * @function verify - * @memberof flyteidl.admin.ExecutionClusterLabel + * @memberof flyteidl.admin.LaunchPlanMetadata * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ExecutionClusterLabel.verify = function verify(message) { + LaunchPlanMetadata.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!$util.isString(message.value)) - return "value: string expected"; + if (message.schedule != null && message.hasOwnProperty("schedule")) { + var error = $root.flyteidl.admin.Schedule.verify(message.schedule); + if (error) + return "schedule." + error; + } + if (message.notifications != null && message.hasOwnProperty("notifications")) { + if (!Array.isArray(message.notifications)) + return "notifications: array expected"; + for (var i = 0; i < message.notifications.length; ++i) { + var error = $root.flyteidl.admin.Notification.verify(message.notifications[i]); + if (error) + return "notifications." + error; + } + } + if (message.launchConditions != null && message.hasOwnProperty("launchConditions")) { + var error = $root.google.protobuf.Any.verify(message.launchConditions); + if (error) + return "launchConditions." + error; + } return null; }; - return ExecutionClusterLabel; + return LaunchPlanMetadata; })(); - admin.PluginOverride = (function() { + admin.LaunchPlanUpdateRequest = (function() { /** - * Properties of a PluginOverride. + * Properties of a LaunchPlanUpdateRequest. * @memberof flyteidl.admin - * @interface IPluginOverride - * @property {string|null} [taskType] PluginOverride taskType - * @property {Array.|null} [pluginId] PluginOverride pluginId - * @property {flyteidl.admin.PluginOverride.MissingPluginBehavior|null} [missingPluginBehavior] PluginOverride missingPluginBehavior + * @interface ILaunchPlanUpdateRequest + * @property {flyteidl.core.IIdentifier|null} [id] LaunchPlanUpdateRequest id + * @property {flyteidl.admin.LaunchPlanState|null} [state] LaunchPlanUpdateRequest state */ /** - * Constructs a new PluginOverride. + * Constructs a new LaunchPlanUpdateRequest. * @memberof flyteidl.admin - * @classdesc Represents a PluginOverride. - * @implements IPluginOverride + * @classdesc Represents a LaunchPlanUpdateRequest. + * @implements ILaunchPlanUpdateRequest * @constructor - * @param {flyteidl.admin.IPluginOverride=} [properties] Properties to set + * @param {flyteidl.admin.ILaunchPlanUpdateRequest=} [properties] Properties to set */ - function PluginOverride(properties) { - this.pluginId = []; + function LaunchPlanUpdateRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -38290,91 +38588,75 @@ } /** - * PluginOverride taskType. - * @member {string} taskType - * @memberof flyteidl.admin.PluginOverride - * @instance - */ - PluginOverride.prototype.taskType = ""; - - /** - * PluginOverride pluginId. - * @member {Array.} pluginId - * @memberof flyteidl.admin.PluginOverride + * LaunchPlanUpdateRequest id. + * @member {flyteidl.core.IIdentifier|null|undefined} id + * @memberof flyteidl.admin.LaunchPlanUpdateRequest * @instance */ - PluginOverride.prototype.pluginId = $util.emptyArray; + LaunchPlanUpdateRequest.prototype.id = null; /** - * PluginOverride missingPluginBehavior. - * @member {flyteidl.admin.PluginOverride.MissingPluginBehavior} missingPluginBehavior - * @memberof flyteidl.admin.PluginOverride + * LaunchPlanUpdateRequest state. + * @member {flyteidl.admin.LaunchPlanState} state + * @memberof flyteidl.admin.LaunchPlanUpdateRequest * @instance */ - PluginOverride.prototype.missingPluginBehavior = 0; + LaunchPlanUpdateRequest.prototype.state = 0; /** - * Creates a new PluginOverride instance using the specified properties. + * Creates a new LaunchPlanUpdateRequest instance using the specified properties. * @function create - * @memberof flyteidl.admin.PluginOverride + * @memberof flyteidl.admin.LaunchPlanUpdateRequest * @static - * @param {flyteidl.admin.IPluginOverride=} [properties] Properties to set - * @returns {flyteidl.admin.PluginOverride} PluginOverride instance + * @param {flyteidl.admin.ILaunchPlanUpdateRequest=} [properties] Properties to set + * @returns {flyteidl.admin.LaunchPlanUpdateRequest} LaunchPlanUpdateRequest instance */ - PluginOverride.create = function create(properties) { - return new PluginOverride(properties); + LaunchPlanUpdateRequest.create = function create(properties) { + return new LaunchPlanUpdateRequest(properties); }; /** - * Encodes the specified PluginOverride message. Does not implicitly {@link flyteidl.admin.PluginOverride.verify|verify} messages. + * Encodes the specified LaunchPlanUpdateRequest message. Does not implicitly {@link flyteidl.admin.LaunchPlanUpdateRequest.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.PluginOverride + * @memberof flyteidl.admin.LaunchPlanUpdateRequest * @static - * @param {flyteidl.admin.IPluginOverride} message PluginOverride message or plain object to encode + * @param {flyteidl.admin.ILaunchPlanUpdateRequest} message LaunchPlanUpdateRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PluginOverride.encode = function encode(message, writer) { + LaunchPlanUpdateRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.taskType != null && message.hasOwnProperty("taskType")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.taskType); - if (message.pluginId != null && message.pluginId.length) - for (var i = 0; i < message.pluginId.length; ++i) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.pluginId[i]); - if (message.missingPluginBehavior != null && message.hasOwnProperty("missingPluginBehavior")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.missingPluginBehavior); + if (message.id != null && message.hasOwnProperty("id")) + $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.state != null && message.hasOwnProperty("state")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.state); return writer; }; /** - * Decodes a PluginOverride message from the specified reader or buffer. + * Decodes a LaunchPlanUpdateRequest message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.PluginOverride + * @memberof flyteidl.admin.LaunchPlanUpdateRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.PluginOverride} PluginOverride + * @returns {flyteidl.admin.LaunchPlanUpdateRequest} LaunchPlanUpdateRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PluginOverride.decode = function decode(reader, length) { + LaunchPlanUpdateRequest.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.admin.PluginOverride(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LaunchPlanUpdateRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.taskType = reader.string(); + message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); break; case 2: - if (!(message.pluginId && message.pluginId.length)) - message.pluginId = []; - message.pluginId.push(reader.string()); - break; - case 4: - message.missingPluginBehavior = reader.int32(); + message.state = reader.int32(); break; default: reader.skipType(tag & 7); @@ -38385,30 +38667,25 @@ }; /** - * Verifies a PluginOverride message. + * Verifies a LaunchPlanUpdateRequest message. * @function verify - * @memberof flyteidl.admin.PluginOverride + * @memberof flyteidl.admin.LaunchPlanUpdateRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PluginOverride.verify = function verify(message) { + LaunchPlanUpdateRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.taskType != null && message.hasOwnProperty("taskType")) - if (!$util.isString(message.taskType)) - return "taskType: string expected"; - if (message.pluginId != null && message.hasOwnProperty("pluginId")) { - if (!Array.isArray(message.pluginId)) - return "pluginId: array expected"; - for (var i = 0; i < message.pluginId.length; ++i) - if (!$util.isString(message.pluginId[i])) - return "pluginId: string[] expected"; + if (message.id != null && message.hasOwnProperty("id")) { + var error = $root.flyteidl.core.Identifier.verify(message.id); + if (error) + return "id." + error; } - if (message.missingPluginBehavior != null && message.hasOwnProperty("missingPluginBehavior")) - switch (message.missingPluginBehavior) { + if (message.state != null && message.hasOwnProperty("state")) + switch (message.state) { default: - return "missingPluginBehavior: enum value expected"; + return "state: enum value expected"; case 0: case 1: break; @@ -38416,42 +38693,26 @@ return null; }; - /** - * MissingPluginBehavior enum. - * @name flyteidl.admin.PluginOverride.MissingPluginBehavior - * @enum {string} - * @property {number} FAIL=0 FAIL value - * @property {number} USE_DEFAULT=1 USE_DEFAULT value - */ - PluginOverride.MissingPluginBehavior = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "FAIL"] = 0; - values[valuesById[1] = "USE_DEFAULT"] = 1; - return values; - })(); - - return PluginOverride; + return LaunchPlanUpdateRequest; })(); - admin.PluginOverrides = (function() { + admin.LaunchPlanUpdateResponse = (function() { /** - * Properties of a PluginOverrides. + * Properties of a LaunchPlanUpdateResponse. * @memberof flyteidl.admin - * @interface IPluginOverrides - * @property {Array.|null} [overrides] PluginOverrides overrides + * @interface ILaunchPlanUpdateResponse */ /** - * Constructs a new PluginOverrides. + * Constructs a new LaunchPlanUpdateResponse. * @memberof flyteidl.admin - * @classdesc Represents a PluginOverrides. - * @implements IPluginOverrides + * @classdesc Represents a LaunchPlanUpdateResponse. + * @implements ILaunchPlanUpdateResponse * @constructor - * @param {flyteidl.admin.IPluginOverrides=} [properties] Properties to set + * @param {flyteidl.admin.ILaunchPlanUpdateResponse=} [properties] Properties to set */ - function PluginOverrides(properties) { - this.overrides = []; + function LaunchPlanUpdateResponse(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -38459,66 +38720,50 @@ } /** - * PluginOverrides overrides. - * @member {Array.} overrides - * @memberof flyteidl.admin.PluginOverrides - * @instance - */ - PluginOverrides.prototype.overrides = $util.emptyArray; - - /** - * Creates a new PluginOverrides instance using the specified properties. + * Creates a new LaunchPlanUpdateResponse instance using the specified properties. * @function create - * @memberof flyteidl.admin.PluginOverrides + * @memberof flyteidl.admin.LaunchPlanUpdateResponse * @static - * @param {flyteidl.admin.IPluginOverrides=} [properties] Properties to set - * @returns {flyteidl.admin.PluginOverrides} PluginOverrides instance + * @param {flyteidl.admin.ILaunchPlanUpdateResponse=} [properties] Properties to set + * @returns {flyteidl.admin.LaunchPlanUpdateResponse} LaunchPlanUpdateResponse instance */ - PluginOverrides.create = function create(properties) { - return new PluginOverrides(properties); + LaunchPlanUpdateResponse.create = function create(properties) { + return new LaunchPlanUpdateResponse(properties); }; /** - * Encodes the specified PluginOverrides message. Does not implicitly {@link flyteidl.admin.PluginOverrides.verify|verify} messages. + * Encodes the specified LaunchPlanUpdateResponse message. Does not implicitly {@link flyteidl.admin.LaunchPlanUpdateResponse.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.PluginOverrides + * @memberof flyteidl.admin.LaunchPlanUpdateResponse * @static - * @param {flyteidl.admin.IPluginOverrides} message PluginOverrides message or plain object to encode + * @param {flyteidl.admin.ILaunchPlanUpdateResponse} message LaunchPlanUpdateResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PluginOverrides.encode = function encode(message, writer) { + LaunchPlanUpdateResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.overrides != null && message.overrides.length) - for (var i = 0; i < message.overrides.length; ++i) - $root.flyteidl.admin.PluginOverride.encode(message.overrides[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a PluginOverrides message from the specified reader or buffer. + * Decodes a LaunchPlanUpdateResponse message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.PluginOverrides + * @memberof flyteidl.admin.LaunchPlanUpdateResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.PluginOverrides} PluginOverrides + * @returns {flyteidl.admin.LaunchPlanUpdateResponse} LaunchPlanUpdateResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PluginOverrides.decode = function decode(reader, length) { + LaunchPlanUpdateResponse.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.admin.PluginOverrides(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LaunchPlanUpdateResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.overrides && message.overrides.length)) - message.overrides = []; - message.overrides.push($root.flyteidl.admin.PluginOverride.decode(reader, reader.uint32())); - break; default: reader.skipType(tag & 7); break; @@ -38528,56 +38773,40 @@ }; /** - * Verifies a PluginOverrides message. + * Verifies a LaunchPlanUpdateResponse message. * @function verify - * @memberof flyteidl.admin.PluginOverrides + * @memberof flyteidl.admin.LaunchPlanUpdateResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PluginOverrides.verify = function verify(message) { + LaunchPlanUpdateResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.overrides != null && message.hasOwnProperty("overrides")) { - if (!Array.isArray(message.overrides)) - return "overrides: array expected"; - for (var i = 0; i < message.overrides.length; ++i) { - var error = $root.flyteidl.admin.PluginOverride.verify(message.overrides[i]); - if (error) - return "overrides." + error; - } - } return null; }; - return PluginOverrides; + return LaunchPlanUpdateResponse; })(); - admin.WorkflowExecutionConfig = (function() { + admin.ActiveLaunchPlanRequest = (function() { /** - * Properties of a WorkflowExecutionConfig. + * Properties of an ActiveLaunchPlanRequest. * @memberof flyteidl.admin - * @interface IWorkflowExecutionConfig - * @property {number|null} [maxParallelism] WorkflowExecutionConfig maxParallelism - * @property {flyteidl.core.ISecurityContext|null} [securityContext] WorkflowExecutionConfig securityContext - * @property {flyteidl.admin.IRawOutputDataConfig|null} [rawOutputDataConfig] WorkflowExecutionConfig rawOutputDataConfig - * @property {flyteidl.admin.ILabels|null} [labels] WorkflowExecutionConfig labels - * @property {flyteidl.admin.IAnnotations|null} [annotations] WorkflowExecutionConfig annotations - * @property {google.protobuf.IBoolValue|null} [interruptible] WorkflowExecutionConfig interruptible - * @property {boolean|null} [overwriteCache] WorkflowExecutionConfig overwriteCache - * @property {flyteidl.admin.IEnvs|null} [envs] WorkflowExecutionConfig envs + * @interface IActiveLaunchPlanRequest + * @property {flyteidl.admin.INamedEntityIdentifier|null} [id] ActiveLaunchPlanRequest id */ /** - * Constructs a new WorkflowExecutionConfig. + * Constructs a new ActiveLaunchPlanRequest. * @memberof flyteidl.admin - * @classdesc Represents a WorkflowExecutionConfig. - * @implements IWorkflowExecutionConfig + * @classdesc Represents an ActiveLaunchPlanRequest. + * @implements IActiveLaunchPlanRequest * @constructor - * @param {flyteidl.admin.IWorkflowExecutionConfig=} [properties] Properties to set + * @param {flyteidl.admin.IActiveLaunchPlanRequest=} [properties] Properties to set */ - function WorkflowExecutionConfig(properties) { + function ActiveLaunchPlanRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -38585,153 +38814,62 @@ } /** - * WorkflowExecutionConfig maxParallelism. - * @member {number} maxParallelism - * @memberof flyteidl.admin.WorkflowExecutionConfig - * @instance - */ - WorkflowExecutionConfig.prototype.maxParallelism = 0; - - /** - * WorkflowExecutionConfig securityContext. - * @member {flyteidl.core.ISecurityContext|null|undefined} securityContext - * @memberof flyteidl.admin.WorkflowExecutionConfig - * @instance - */ - WorkflowExecutionConfig.prototype.securityContext = null; - - /** - * WorkflowExecutionConfig rawOutputDataConfig. - * @member {flyteidl.admin.IRawOutputDataConfig|null|undefined} rawOutputDataConfig - * @memberof flyteidl.admin.WorkflowExecutionConfig - * @instance - */ - WorkflowExecutionConfig.prototype.rawOutputDataConfig = null; - - /** - * WorkflowExecutionConfig labels. - * @member {flyteidl.admin.ILabels|null|undefined} labels - * @memberof flyteidl.admin.WorkflowExecutionConfig - * @instance - */ - WorkflowExecutionConfig.prototype.labels = null; - - /** - * WorkflowExecutionConfig annotations. - * @member {flyteidl.admin.IAnnotations|null|undefined} annotations - * @memberof flyteidl.admin.WorkflowExecutionConfig - * @instance - */ - WorkflowExecutionConfig.prototype.annotations = null; - - /** - * WorkflowExecutionConfig interruptible. - * @member {google.protobuf.IBoolValue|null|undefined} interruptible - * @memberof flyteidl.admin.WorkflowExecutionConfig - * @instance - */ - WorkflowExecutionConfig.prototype.interruptible = null; - - /** - * WorkflowExecutionConfig overwriteCache. - * @member {boolean} overwriteCache - * @memberof flyteidl.admin.WorkflowExecutionConfig - * @instance - */ - WorkflowExecutionConfig.prototype.overwriteCache = false; - - /** - * WorkflowExecutionConfig envs. - * @member {flyteidl.admin.IEnvs|null|undefined} envs - * @memberof flyteidl.admin.WorkflowExecutionConfig + * ActiveLaunchPlanRequest id. + * @member {flyteidl.admin.INamedEntityIdentifier|null|undefined} id + * @memberof flyteidl.admin.ActiveLaunchPlanRequest * @instance */ - WorkflowExecutionConfig.prototype.envs = null; + ActiveLaunchPlanRequest.prototype.id = null; /** - * Creates a new WorkflowExecutionConfig instance using the specified properties. + * Creates a new ActiveLaunchPlanRequest instance using the specified properties. * @function create - * @memberof flyteidl.admin.WorkflowExecutionConfig + * @memberof flyteidl.admin.ActiveLaunchPlanRequest * @static - * @param {flyteidl.admin.IWorkflowExecutionConfig=} [properties] Properties to set - * @returns {flyteidl.admin.WorkflowExecutionConfig} WorkflowExecutionConfig instance + * @param {flyteidl.admin.IActiveLaunchPlanRequest=} [properties] Properties to set + * @returns {flyteidl.admin.ActiveLaunchPlanRequest} ActiveLaunchPlanRequest instance */ - WorkflowExecutionConfig.create = function create(properties) { - return new WorkflowExecutionConfig(properties); + ActiveLaunchPlanRequest.create = function create(properties) { + return new ActiveLaunchPlanRequest(properties); }; /** - * Encodes the specified WorkflowExecutionConfig message. Does not implicitly {@link flyteidl.admin.WorkflowExecutionConfig.verify|verify} messages. + * Encodes the specified ActiveLaunchPlanRequest message. Does not implicitly {@link flyteidl.admin.ActiveLaunchPlanRequest.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.WorkflowExecutionConfig + * @memberof flyteidl.admin.ActiveLaunchPlanRequest * @static - * @param {flyteidl.admin.IWorkflowExecutionConfig} message WorkflowExecutionConfig message or plain object to encode + * @param {flyteidl.admin.IActiveLaunchPlanRequest} message ActiveLaunchPlanRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - WorkflowExecutionConfig.encode = function encode(message, writer) { + ActiveLaunchPlanRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.maxParallelism != null && message.hasOwnProperty("maxParallelism")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.maxParallelism); - if (message.securityContext != null && message.hasOwnProperty("securityContext")) - $root.flyteidl.core.SecurityContext.encode(message.securityContext, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.rawOutputDataConfig != null && message.hasOwnProperty("rawOutputDataConfig")) - $root.flyteidl.admin.RawOutputDataConfig.encode(message.rawOutputDataConfig, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.labels != null && message.hasOwnProperty("labels")) - $root.flyteidl.admin.Labels.encode(message.labels, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.annotations != null && message.hasOwnProperty("annotations")) - $root.flyteidl.admin.Annotations.encode(message.annotations, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.interruptible != null && message.hasOwnProperty("interruptible")) - $root.google.protobuf.BoolValue.encode(message.interruptible, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) - writer.uint32(/* id 7, wireType 0 =*/56).bool(message.overwriteCache); - if (message.envs != null && message.hasOwnProperty("envs")) - $root.flyteidl.admin.Envs.encode(message.envs, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.id != null && message.hasOwnProperty("id")) + $root.flyteidl.admin.NamedEntityIdentifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Decodes a WorkflowExecutionConfig message from the specified reader or buffer. + * Decodes an ActiveLaunchPlanRequest message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.WorkflowExecutionConfig + * @memberof flyteidl.admin.ActiveLaunchPlanRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.WorkflowExecutionConfig} WorkflowExecutionConfig + * @returns {flyteidl.admin.ActiveLaunchPlanRequest} ActiveLaunchPlanRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - WorkflowExecutionConfig.decode = function decode(reader, length) { + ActiveLaunchPlanRequest.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.admin.WorkflowExecutionConfig(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.ActiveLaunchPlanRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.maxParallelism = reader.int32(); - break; - case 2: - message.securityContext = $root.flyteidl.core.SecurityContext.decode(reader, reader.uint32()); - break; - case 3: - message.rawOutputDataConfig = $root.flyteidl.admin.RawOutputDataConfig.decode(reader, reader.uint32()); - break; - case 4: - message.labels = $root.flyteidl.admin.Labels.decode(reader, reader.uint32()); - break; - case 5: - message.annotations = $root.flyteidl.admin.Annotations.decode(reader, reader.uint32()); - break; - case 6: - message.interruptible = $root.google.protobuf.BoolValue.decode(reader, reader.uint32()); - break; - case 7: - message.overwriteCache = reader.bool(); - break; - case 8: - message.envs = $root.flyteidl.admin.Envs.decode(reader, reader.uint32()); + message.id = $root.flyteidl.admin.NamedEntityIdentifier.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -38742,83 +38880,50 @@ }; /** - * Verifies a WorkflowExecutionConfig message. + * Verifies an ActiveLaunchPlanRequest message. * @function verify - * @memberof flyteidl.admin.WorkflowExecutionConfig + * @memberof flyteidl.admin.ActiveLaunchPlanRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - WorkflowExecutionConfig.verify = function verify(message) { + ActiveLaunchPlanRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.maxParallelism != null && message.hasOwnProperty("maxParallelism")) - if (!$util.isInteger(message.maxParallelism)) - return "maxParallelism: integer expected"; - if (message.securityContext != null && message.hasOwnProperty("securityContext")) { - var error = $root.flyteidl.core.SecurityContext.verify(message.securityContext); - if (error) - return "securityContext." + error; - } - if (message.rawOutputDataConfig != null && message.hasOwnProperty("rawOutputDataConfig")) { - var error = $root.flyteidl.admin.RawOutputDataConfig.verify(message.rawOutputDataConfig); - if (error) - return "rawOutputDataConfig." + error; - } - if (message.labels != null && message.hasOwnProperty("labels")) { - var error = $root.flyteidl.admin.Labels.verify(message.labels); - if (error) - return "labels." + error; - } - if (message.annotations != null && message.hasOwnProperty("annotations")) { - var error = $root.flyteidl.admin.Annotations.verify(message.annotations); - if (error) - return "annotations." + error; - } - if (message.interruptible != null && message.hasOwnProperty("interruptible")) { - var error = $root.google.protobuf.BoolValue.verify(message.interruptible); - if (error) - return "interruptible." + error; - } - if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) - if (typeof message.overwriteCache !== "boolean") - return "overwriteCache: boolean expected"; - if (message.envs != null && message.hasOwnProperty("envs")) { - var error = $root.flyteidl.admin.Envs.verify(message.envs); + if (message.id != null && message.hasOwnProperty("id")) { + var error = $root.flyteidl.admin.NamedEntityIdentifier.verify(message.id); if (error) - return "envs." + error; + return "id." + error; } return null; }; - return WorkflowExecutionConfig; + return ActiveLaunchPlanRequest; })(); - admin.MatchingAttributes = (function() { + admin.ActiveLaunchPlanListRequest = (function() { /** - * Properties of a MatchingAttributes. + * Properties of an ActiveLaunchPlanListRequest. * @memberof flyteidl.admin - * @interface IMatchingAttributes - * @property {flyteidl.admin.ITaskResourceAttributes|null} [taskResourceAttributes] MatchingAttributes taskResourceAttributes - * @property {flyteidl.admin.IClusterResourceAttributes|null} [clusterResourceAttributes] MatchingAttributes clusterResourceAttributes - * @property {flyteidl.admin.IExecutionQueueAttributes|null} [executionQueueAttributes] MatchingAttributes executionQueueAttributes - * @property {flyteidl.admin.IExecutionClusterLabel|null} [executionClusterLabel] MatchingAttributes executionClusterLabel - * @property {flyteidl.core.IQualityOfService|null} [qualityOfService] MatchingAttributes qualityOfService - * @property {flyteidl.admin.IPluginOverrides|null} [pluginOverrides] MatchingAttributes pluginOverrides - * @property {flyteidl.admin.IWorkflowExecutionConfig|null} [workflowExecutionConfig] MatchingAttributes workflowExecutionConfig - * @property {flyteidl.admin.IClusterAssignment|null} [clusterAssignment] MatchingAttributes clusterAssignment + * @interface IActiveLaunchPlanListRequest + * @property {string|null} [project] ActiveLaunchPlanListRequest project + * @property {string|null} [domain] ActiveLaunchPlanListRequest domain + * @property {number|null} [limit] ActiveLaunchPlanListRequest limit + * @property {string|null} [token] ActiveLaunchPlanListRequest token + * @property {flyteidl.admin.ISort|null} [sortBy] ActiveLaunchPlanListRequest sortBy + * @property {string|null} [org] ActiveLaunchPlanListRequest org */ /** - * Constructs a new MatchingAttributes. + * Constructs a new ActiveLaunchPlanListRequest. * @memberof flyteidl.admin - * @classdesc Represents a MatchingAttributes. - * @implements IMatchingAttributes + * @classdesc Represents an ActiveLaunchPlanListRequest. + * @implements IActiveLaunchPlanListRequest * @constructor - * @param {flyteidl.admin.IMatchingAttributes=} [properties] Properties to set + * @param {flyteidl.admin.IActiveLaunchPlanListRequest=} [properties] Properties to set */ - function MatchingAttributes(properties) { + function ActiveLaunchPlanListRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -38826,295 +38931,208 @@ } /** - * MatchingAttributes taskResourceAttributes. - * @member {flyteidl.admin.ITaskResourceAttributes|null|undefined} taskResourceAttributes - * @memberof flyteidl.admin.MatchingAttributes - * @instance - */ - MatchingAttributes.prototype.taskResourceAttributes = null; - - /** - * MatchingAttributes clusterResourceAttributes. - * @member {flyteidl.admin.IClusterResourceAttributes|null|undefined} clusterResourceAttributes - * @memberof flyteidl.admin.MatchingAttributes - * @instance - */ - MatchingAttributes.prototype.clusterResourceAttributes = null; - - /** - * MatchingAttributes executionQueueAttributes. - * @member {flyteidl.admin.IExecutionQueueAttributes|null|undefined} executionQueueAttributes - * @memberof flyteidl.admin.MatchingAttributes - * @instance - */ - MatchingAttributes.prototype.executionQueueAttributes = null; - - /** - * MatchingAttributes executionClusterLabel. - * @member {flyteidl.admin.IExecutionClusterLabel|null|undefined} executionClusterLabel - * @memberof flyteidl.admin.MatchingAttributes + * ActiveLaunchPlanListRequest project. + * @member {string} project + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest * @instance */ - MatchingAttributes.prototype.executionClusterLabel = null; + ActiveLaunchPlanListRequest.prototype.project = ""; /** - * MatchingAttributes qualityOfService. - * @member {flyteidl.core.IQualityOfService|null|undefined} qualityOfService - * @memberof flyteidl.admin.MatchingAttributes + * ActiveLaunchPlanListRequest domain. + * @member {string} domain + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest * @instance */ - MatchingAttributes.prototype.qualityOfService = null; + ActiveLaunchPlanListRequest.prototype.domain = ""; /** - * MatchingAttributes pluginOverrides. - * @member {flyteidl.admin.IPluginOverrides|null|undefined} pluginOverrides - * @memberof flyteidl.admin.MatchingAttributes + * ActiveLaunchPlanListRequest limit. + * @member {number} limit + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest * @instance */ - MatchingAttributes.prototype.pluginOverrides = null; + ActiveLaunchPlanListRequest.prototype.limit = 0; /** - * MatchingAttributes workflowExecutionConfig. - * @member {flyteidl.admin.IWorkflowExecutionConfig|null|undefined} workflowExecutionConfig - * @memberof flyteidl.admin.MatchingAttributes + * ActiveLaunchPlanListRequest token. + * @member {string} token + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest * @instance */ - MatchingAttributes.prototype.workflowExecutionConfig = null; + ActiveLaunchPlanListRequest.prototype.token = ""; /** - * MatchingAttributes clusterAssignment. - * @member {flyteidl.admin.IClusterAssignment|null|undefined} clusterAssignment - * @memberof flyteidl.admin.MatchingAttributes + * ActiveLaunchPlanListRequest sortBy. + * @member {flyteidl.admin.ISort|null|undefined} sortBy + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest * @instance */ - MatchingAttributes.prototype.clusterAssignment = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + ActiveLaunchPlanListRequest.prototype.sortBy = null; /** - * MatchingAttributes target. - * @member {"taskResourceAttributes"|"clusterResourceAttributes"|"executionQueueAttributes"|"executionClusterLabel"|"qualityOfService"|"pluginOverrides"|"workflowExecutionConfig"|"clusterAssignment"|undefined} target - * @memberof flyteidl.admin.MatchingAttributes + * ActiveLaunchPlanListRequest org. + * @member {string} org + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest * @instance */ - Object.defineProperty(MatchingAttributes.prototype, "target", { - get: $util.oneOfGetter($oneOfFields = ["taskResourceAttributes", "clusterResourceAttributes", "executionQueueAttributes", "executionClusterLabel", "qualityOfService", "pluginOverrides", "workflowExecutionConfig", "clusterAssignment"]), - set: $util.oneOfSetter($oneOfFields) - }); + ActiveLaunchPlanListRequest.prototype.org = ""; /** - * Creates a new MatchingAttributes instance using the specified properties. + * Creates a new ActiveLaunchPlanListRequest instance using the specified properties. * @function create - * @memberof flyteidl.admin.MatchingAttributes + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest * @static - * @param {flyteidl.admin.IMatchingAttributes=} [properties] Properties to set - * @returns {flyteidl.admin.MatchingAttributes} MatchingAttributes instance + * @param {flyteidl.admin.IActiveLaunchPlanListRequest=} [properties] Properties to set + * @returns {flyteidl.admin.ActiveLaunchPlanListRequest} ActiveLaunchPlanListRequest instance */ - MatchingAttributes.create = function create(properties) { - return new MatchingAttributes(properties); + ActiveLaunchPlanListRequest.create = function create(properties) { + return new ActiveLaunchPlanListRequest(properties); }; /** - * Encodes the specified MatchingAttributes message. Does not implicitly {@link flyteidl.admin.MatchingAttributes.verify|verify} messages. + * Encodes the specified ActiveLaunchPlanListRequest message. Does not implicitly {@link flyteidl.admin.ActiveLaunchPlanListRequest.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.MatchingAttributes + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest * @static - * @param {flyteidl.admin.IMatchingAttributes} message MatchingAttributes message or plain object to encode + * @param {flyteidl.admin.IActiveLaunchPlanListRequest} message ActiveLaunchPlanListRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MatchingAttributes.encode = function encode(message, writer) { + ActiveLaunchPlanListRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.taskResourceAttributes != null && message.hasOwnProperty("taskResourceAttributes")) - $root.flyteidl.admin.TaskResourceAttributes.encode(message.taskResourceAttributes, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.clusterResourceAttributes != null && message.hasOwnProperty("clusterResourceAttributes")) - $root.flyteidl.admin.ClusterResourceAttributes.encode(message.clusterResourceAttributes, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.executionQueueAttributes != null && message.hasOwnProperty("executionQueueAttributes")) - $root.flyteidl.admin.ExecutionQueueAttributes.encode(message.executionQueueAttributes, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.executionClusterLabel != null && message.hasOwnProperty("executionClusterLabel")) - $root.flyteidl.admin.ExecutionClusterLabel.encode(message.executionClusterLabel, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) - $root.flyteidl.core.QualityOfService.encode(message.qualityOfService, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.pluginOverrides != null && message.hasOwnProperty("pluginOverrides")) - $root.flyteidl.admin.PluginOverrides.encode(message.pluginOverrides, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.workflowExecutionConfig != null && message.hasOwnProperty("workflowExecutionConfig")) - $root.flyteidl.admin.WorkflowExecutionConfig.encode(message.workflowExecutionConfig, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.clusterAssignment != null && message.hasOwnProperty("clusterAssignment")) - $root.flyteidl.admin.ClusterAssignment.encode(message.clusterAssignment, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.project != null && message.hasOwnProperty("project")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.project); + if (message.domain != null && message.hasOwnProperty("domain")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.domain); + if (message.limit != null && message.hasOwnProperty("limit")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.limit); + if (message.token != null && message.hasOwnProperty("token")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.token); + if (message.sortBy != null && message.hasOwnProperty("sortBy")) + $root.flyteidl.admin.Sort.encode(message.sortBy, 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); return writer; }; /** - * Decodes a MatchingAttributes message from the specified reader or buffer. + * Decodes an ActiveLaunchPlanListRequest message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.MatchingAttributes + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.MatchingAttributes} MatchingAttributes + * @returns {flyteidl.admin.ActiveLaunchPlanListRequest} ActiveLaunchPlanListRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MatchingAttributes.decode = function decode(reader, length) { + ActiveLaunchPlanListRequest.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.admin.MatchingAttributes(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.ActiveLaunchPlanListRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.taskResourceAttributes = $root.flyteidl.admin.TaskResourceAttributes.decode(reader, reader.uint32()); + message.project = reader.string(); break; case 2: - message.clusterResourceAttributes = $root.flyteidl.admin.ClusterResourceAttributes.decode(reader, reader.uint32()); + message.domain = reader.string(); break; case 3: - message.executionQueueAttributes = $root.flyteidl.admin.ExecutionQueueAttributes.decode(reader, reader.uint32()); + message.limit = reader.uint32(); break; case 4: - message.executionClusterLabel = $root.flyteidl.admin.ExecutionClusterLabel.decode(reader, reader.uint32()); + message.token = reader.string(); break; case 5: - message.qualityOfService = $root.flyteidl.core.QualityOfService.decode(reader, reader.uint32()); - break; - case 6: - message.pluginOverrides = $root.flyteidl.admin.PluginOverrides.decode(reader, reader.uint32()); - break; - case 7: - message.workflowExecutionConfig = $root.flyteidl.admin.WorkflowExecutionConfig.decode(reader, reader.uint32()); - break; - case 8: - message.clusterAssignment = $root.flyteidl.admin.ClusterAssignment.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Verifies a MatchingAttributes message. - * @function verify - * @memberof flyteidl.admin.MatchingAttributes - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - MatchingAttributes.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.taskResourceAttributes != null && message.hasOwnProperty("taskResourceAttributes")) { - properties.target = 1; - { - var error = $root.flyteidl.admin.TaskResourceAttributes.verify(message.taskResourceAttributes); - if (error) - return "taskResourceAttributes." + error; - } - } - if (message.clusterResourceAttributes != null && message.hasOwnProperty("clusterResourceAttributes")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.admin.ClusterResourceAttributes.verify(message.clusterResourceAttributes); - if (error) - return "clusterResourceAttributes." + error; - } - } - if (message.executionQueueAttributes != null && message.hasOwnProperty("executionQueueAttributes")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.admin.ExecutionQueueAttributes.verify(message.executionQueueAttributes); - if (error) - return "executionQueueAttributes." + error; - } - } - if (message.executionClusterLabel != null && message.hasOwnProperty("executionClusterLabel")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.admin.ExecutionClusterLabel.verify(message.executionClusterLabel); - if (error) - return "executionClusterLabel." + error; - } - } - if (message.qualityOfService != null && message.hasOwnProperty("qualityOfService")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.core.QualityOfService.verify(message.qualityOfService); - if (error) - return "qualityOfService." + error; - } - } - if (message.pluginOverrides != null && message.hasOwnProperty("pluginOverrides")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.admin.PluginOverrides.verify(message.pluginOverrides); - if (error) - return "pluginOverrides." + error; - } - } - if (message.workflowExecutionConfig != null && message.hasOwnProperty("workflowExecutionConfig")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.admin.WorkflowExecutionConfig.verify(message.workflowExecutionConfig); - if (error) - return "workflowExecutionConfig." + error; + message.sortBy = $root.flyteidl.admin.Sort.decode(reader, reader.uint32()); + break; + case 6: + message.org = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; } } - if (message.clusterAssignment != null && message.hasOwnProperty("clusterAssignment")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - { - var error = $root.flyteidl.admin.ClusterAssignment.verify(message.clusterAssignment); - if (error) - return "clusterAssignment." + error; - } + return message; + }; + + /** + * Verifies an ActiveLaunchPlanListRequest message. + * @function verify + * @memberof flyteidl.admin.ActiveLaunchPlanListRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ActiveLaunchPlanListRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.project != null && message.hasOwnProperty("project")) + if (!$util.isString(message.project)) + return "project: string expected"; + if (message.domain != null && message.hasOwnProperty("domain")) + if (!$util.isString(message.domain)) + return "domain: string expected"; + if (message.limit != null && message.hasOwnProperty("limit")) + if (!$util.isInteger(message.limit)) + return "limit: integer expected"; + if (message.token != null && message.hasOwnProperty("token")) + if (!$util.isString(message.token)) + return "token: string expected"; + if (message.sortBy != null && message.hasOwnProperty("sortBy")) { + var error = $root.flyteidl.admin.Sort.verify(message.sortBy); + if (error) + return "sortBy." + error; } + if (message.org != null && message.hasOwnProperty("org")) + if (!$util.isString(message.org)) + return "org: string expected"; return null; }; - return MatchingAttributes; + return ActiveLaunchPlanListRequest; })(); - admin.MatchableAttributesConfiguration = (function() { + /** + * FixedRateUnit enum. + * @name flyteidl.admin.FixedRateUnit + * @enum {string} + * @property {number} MINUTE=0 MINUTE value + * @property {number} HOUR=1 HOUR value + * @property {number} DAY=2 DAY value + */ + admin.FixedRateUnit = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MINUTE"] = 0; + values[valuesById[1] = "HOUR"] = 1; + values[valuesById[2] = "DAY"] = 2; + return values; + })(); + + admin.FixedRate = (function() { /** - * Properties of a MatchableAttributesConfiguration. + * Properties of a FixedRate. * @memberof flyteidl.admin - * @interface IMatchableAttributesConfiguration - * @property {flyteidl.admin.IMatchingAttributes|null} [attributes] MatchableAttributesConfiguration attributes - * @property {string|null} [domain] MatchableAttributesConfiguration domain - * @property {string|null} [project] MatchableAttributesConfiguration project - * @property {string|null} [workflow] MatchableAttributesConfiguration workflow - * @property {string|null} [launchPlan] MatchableAttributesConfiguration launchPlan - * @property {string|null} [org] MatchableAttributesConfiguration org + * @interface IFixedRate + * @property {number|null} [value] FixedRate value + * @property {flyteidl.admin.FixedRateUnit|null} [unit] FixedRate unit */ /** - * Constructs a new MatchableAttributesConfiguration. + * Constructs a new FixedRate. * @memberof flyteidl.admin - * @classdesc Represents a MatchableAttributesConfiguration. - * @implements IMatchableAttributesConfiguration + * @classdesc Represents a FixedRate. + * @implements IFixedRate * @constructor - * @param {flyteidl.admin.IMatchableAttributesConfiguration=} [properties] Properties to set + * @param {flyteidl.admin.IFixedRate=} [properties] Properties to set */ - function MatchableAttributesConfiguration(properties) { + function FixedRate(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -39122,127 +39140,75 @@ } /** - * MatchableAttributesConfiguration attributes. - * @member {flyteidl.admin.IMatchingAttributes|null|undefined} attributes - * @memberof flyteidl.admin.MatchableAttributesConfiguration - * @instance - */ - MatchableAttributesConfiguration.prototype.attributes = null; - - /** - * MatchableAttributesConfiguration domain. - * @member {string} domain - * @memberof flyteidl.admin.MatchableAttributesConfiguration - * @instance - */ - MatchableAttributesConfiguration.prototype.domain = ""; - - /** - * MatchableAttributesConfiguration project. - * @member {string} project - * @memberof flyteidl.admin.MatchableAttributesConfiguration - * @instance - */ - MatchableAttributesConfiguration.prototype.project = ""; - - /** - * MatchableAttributesConfiguration workflow. - * @member {string} workflow - * @memberof flyteidl.admin.MatchableAttributesConfiguration - * @instance - */ - MatchableAttributesConfiguration.prototype.workflow = ""; - - /** - * MatchableAttributesConfiguration launchPlan. - * @member {string} launchPlan - * @memberof flyteidl.admin.MatchableAttributesConfiguration + * FixedRate value. + * @member {number} value + * @memberof flyteidl.admin.FixedRate * @instance */ - MatchableAttributesConfiguration.prototype.launchPlan = ""; + FixedRate.prototype.value = 0; /** - * MatchableAttributesConfiguration org. - * @member {string} org - * @memberof flyteidl.admin.MatchableAttributesConfiguration + * FixedRate unit. + * @member {flyteidl.admin.FixedRateUnit} unit + * @memberof flyteidl.admin.FixedRate * @instance */ - MatchableAttributesConfiguration.prototype.org = ""; + FixedRate.prototype.unit = 0; /** - * Creates a new MatchableAttributesConfiguration instance using the specified properties. + * Creates a new FixedRate instance using the specified properties. * @function create - * @memberof flyteidl.admin.MatchableAttributesConfiguration + * @memberof flyteidl.admin.FixedRate * @static - * @param {flyteidl.admin.IMatchableAttributesConfiguration=} [properties] Properties to set - * @returns {flyteidl.admin.MatchableAttributesConfiguration} MatchableAttributesConfiguration instance + * @param {flyteidl.admin.IFixedRate=} [properties] Properties to set + * @returns {flyteidl.admin.FixedRate} FixedRate instance */ - MatchableAttributesConfiguration.create = function create(properties) { - return new MatchableAttributesConfiguration(properties); + FixedRate.create = function create(properties) { + return new FixedRate(properties); }; /** - * Encodes the specified MatchableAttributesConfiguration message. Does not implicitly {@link flyteidl.admin.MatchableAttributesConfiguration.verify|verify} messages. + * Encodes the specified FixedRate message. Does not implicitly {@link flyteidl.admin.FixedRate.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.MatchableAttributesConfiguration + * @memberof flyteidl.admin.FixedRate * @static - * @param {flyteidl.admin.IMatchableAttributesConfiguration} message MatchableAttributesConfiguration message or plain object to encode + * @param {flyteidl.admin.IFixedRate} message FixedRate message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MatchableAttributesConfiguration.encode = function encode(message, writer) { + FixedRate.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.attributes != null && message.hasOwnProperty("attributes")) - $root.flyteidl.admin.MatchingAttributes.encode(message.attributes, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.domain != null && message.hasOwnProperty("domain")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.domain); - if (message.project != null && message.hasOwnProperty("project")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.project); - if (message.workflow != null && message.hasOwnProperty("workflow")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.workflow); - if (message.launchPlan != null && message.hasOwnProperty("launchPlan")) - writer.uint32(/* id 5, wireType 2 =*/42).string(message.launchPlan); - if (message.org != null && message.hasOwnProperty("org")) - writer.uint32(/* id 6, wireType 2 =*/50).string(message.org); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.value); + if (message.unit != null && message.hasOwnProperty("unit")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.unit); return writer; }; /** - * Decodes a MatchableAttributesConfiguration message from the specified reader or buffer. + * Decodes a FixedRate message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.MatchableAttributesConfiguration + * @memberof flyteidl.admin.FixedRate * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.MatchableAttributesConfiguration} MatchableAttributesConfiguration + * @returns {flyteidl.admin.FixedRate} FixedRate * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MatchableAttributesConfiguration.decode = function decode(reader, length) { + FixedRate.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.admin.MatchableAttributesConfiguration(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.FixedRate(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.attributes = $root.flyteidl.admin.MatchingAttributes.decode(reader, reader.uint32()); + message.value = reader.uint32(); break; case 2: - message.domain = reader.string(); - break; - case 3: - message.project = reader.string(); - break; - case 4: - message.workflow = reader.string(); - break; - case 5: - message.launchPlan = reader.string(); - break; - case 6: - message.org = reader.string(); + message.unit = reader.int32(); break; default: reader.skipType(tag & 7); @@ -39253,61 +39219,53 @@ }; /** - * Verifies a MatchableAttributesConfiguration message. + * Verifies a FixedRate message. * @function verify - * @memberof flyteidl.admin.MatchableAttributesConfiguration + * @memberof flyteidl.admin.FixedRate * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MatchableAttributesConfiguration.verify = function verify(message) { + FixedRate.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.attributes != null && message.hasOwnProperty("attributes")) { - var error = $root.flyteidl.admin.MatchingAttributes.verify(message.attributes); - if (error) - return "attributes." + error; - } - if (message.domain != null && message.hasOwnProperty("domain")) - if (!$util.isString(message.domain)) - return "domain: string expected"; - if (message.project != null && message.hasOwnProperty("project")) - if (!$util.isString(message.project)) - return "project: string expected"; - if (message.workflow != null && message.hasOwnProperty("workflow")) - if (!$util.isString(message.workflow)) - return "workflow: string expected"; - if (message.launchPlan != null && message.hasOwnProperty("launchPlan")) - if (!$util.isString(message.launchPlan)) - return "launchPlan: string expected"; - if (message.org != null && message.hasOwnProperty("org")) - if (!$util.isString(message.org)) - return "org: string expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isInteger(message.value)) + return "value: integer expected"; + if (message.unit != null && message.hasOwnProperty("unit")) + switch (message.unit) { + default: + return "unit: enum value expected"; + case 0: + case 1: + case 2: + break; + } return null; }; - return MatchableAttributesConfiguration; + return FixedRate; })(); - admin.ListMatchableAttributesRequest = (function() { + admin.CronSchedule = (function() { /** - * Properties of a ListMatchableAttributesRequest. + * Properties of a CronSchedule. * @memberof flyteidl.admin - * @interface IListMatchableAttributesRequest - * @property {flyteidl.admin.MatchableResource|null} [resourceType] ListMatchableAttributesRequest resourceType - * @property {string|null} [org] ListMatchableAttributesRequest org + * @interface ICronSchedule + * @property {string|null} [schedule] CronSchedule schedule + * @property {string|null} [offset] CronSchedule offset */ /** - * Constructs a new ListMatchableAttributesRequest. + * Constructs a new CronSchedule. * @memberof flyteidl.admin - * @classdesc Represents a ListMatchableAttributesRequest. - * @implements IListMatchableAttributesRequest + * @classdesc Represents a CronSchedule. + * @implements ICronSchedule * @constructor - * @param {flyteidl.admin.IListMatchableAttributesRequest=} [properties] Properties to set + * @param {flyteidl.admin.ICronSchedule=} [properties] Properties to set */ - function ListMatchableAttributesRequest(properties) { + function CronSchedule(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -39315,75 +39273,75 @@ } /** - * ListMatchableAttributesRequest resourceType. - * @member {flyteidl.admin.MatchableResource} resourceType - * @memberof flyteidl.admin.ListMatchableAttributesRequest + * CronSchedule schedule. + * @member {string} schedule + * @memberof flyteidl.admin.CronSchedule * @instance */ - ListMatchableAttributesRequest.prototype.resourceType = 0; + CronSchedule.prototype.schedule = ""; /** - * ListMatchableAttributesRequest org. - * @member {string} org - * @memberof flyteidl.admin.ListMatchableAttributesRequest + * CronSchedule offset. + * @member {string} offset + * @memberof flyteidl.admin.CronSchedule * @instance */ - ListMatchableAttributesRequest.prototype.org = ""; + CronSchedule.prototype.offset = ""; /** - * Creates a new ListMatchableAttributesRequest instance using the specified properties. + * Creates a new CronSchedule instance using the specified properties. * @function create - * @memberof flyteidl.admin.ListMatchableAttributesRequest + * @memberof flyteidl.admin.CronSchedule * @static - * @param {flyteidl.admin.IListMatchableAttributesRequest=} [properties] Properties to set - * @returns {flyteidl.admin.ListMatchableAttributesRequest} ListMatchableAttributesRequest instance + * @param {flyteidl.admin.ICronSchedule=} [properties] Properties to set + * @returns {flyteidl.admin.CronSchedule} CronSchedule instance */ - ListMatchableAttributesRequest.create = function create(properties) { - return new ListMatchableAttributesRequest(properties); + CronSchedule.create = function create(properties) { + return new CronSchedule(properties); }; /** - * Encodes the specified ListMatchableAttributesRequest message. Does not implicitly {@link flyteidl.admin.ListMatchableAttributesRequest.verify|verify} messages. + * Encodes the specified CronSchedule message. Does not implicitly {@link flyteidl.admin.CronSchedule.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.ListMatchableAttributesRequest + * @memberof flyteidl.admin.CronSchedule * @static - * @param {flyteidl.admin.IListMatchableAttributesRequest} message ListMatchableAttributesRequest message or plain object to encode + * @param {flyteidl.admin.ICronSchedule} message CronSchedule message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListMatchableAttributesRequest.encode = function encode(message, writer) { + CronSchedule.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.resourceType != null && message.hasOwnProperty("resourceType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.resourceType); - if (message.org != null && message.hasOwnProperty("org")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.org); + if (message.schedule != null && message.hasOwnProperty("schedule")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.schedule); + if (message.offset != null && message.hasOwnProperty("offset")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.offset); return writer; }; /** - * Decodes a ListMatchableAttributesRequest message from the specified reader or buffer. + * Decodes a CronSchedule message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.ListMatchableAttributesRequest + * @memberof flyteidl.admin.CronSchedule * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.ListMatchableAttributesRequest} ListMatchableAttributesRequest + * @returns {flyteidl.admin.CronSchedule} CronSchedule * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListMatchableAttributesRequest.decode = function decode(reader, length) { + CronSchedule.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.admin.ListMatchableAttributesRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.CronSchedule(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.resourceType = reader.int32(); + message.schedule = reader.string(); break; case 2: - message.org = reader.string(); + message.offset = reader.string(); break; default: reader.skipType(tag & 7); @@ -39394,58 +39352,49 @@ }; /** - * Verifies a ListMatchableAttributesRequest message. + * Verifies a CronSchedule message. * @function verify - * @memberof flyteidl.admin.ListMatchableAttributesRequest + * @memberof flyteidl.admin.CronSchedule * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListMatchableAttributesRequest.verify = function verify(message) { + CronSchedule.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.resourceType != null && message.hasOwnProperty("resourceType")) - switch (message.resourceType) { - default: - return "resourceType: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - break; - } - if (message.org != null && message.hasOwnProperty("org")) - if (!$util.isString(message.org)) - return "org: string expected"; + if (message.schedule != null && message.hasOwnProperty("schedule")) + if (!$util.isString(message.schedule)) + return "schedule: string expected"; + if (message.offset != null && message.hasOwnProperty("offset")) + if (!$util.isString(message.offset)) + return "offset: string expected"; return null; }; - return ListMatchableAttributesRequest; + return CronSchedule; })(); - admin.ListMatchableAttributesResponse = (function() { + admin.Schedule = (function() { /** - * Properties of a ListMatchableAttributesResponse. + * Properties of a Schedule. * @memberof flyteidl.admin - * @interface IListMatchableAttributesResponse - * @property {Array.|null} [configurations] ListMatchableAttributesResponse configurations + * @interface ISchedule + * @property {string|null} [cronExpression] Schedule cronExpression + * @property {flyteidl.admin.IFixedRate|null} [rate] Schedule rate + * @property {flyteidl.admin.ICronSchedule|null} [cronSchedule] Schedule cronSchedule + * @property {string|null} [kickoffTimeInputArg] Schedule kickoffTimeInputArg */ /** - * Constructs a new ListMatchableAttributesResponse. + * Constructs a new Schedule. * @memberof flyteidl.admin - * @classdesc Represents a ListMatchableAttributesResponse. - * @implements IListMatchableAttributesResponse + * @classdesc Represents a Schedule. + * @implements ISchedule * @constructor - * @param {flyteidl.admin.IListMatchableAttributesResponse=} [properties] Properties to set + * @param {flyteidl.admin.ISchedule=} [properties] Properties to set */ - function ListMatchableAttributesResponse(properties) { - this.configurations = []; + function Schedule(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -39453,65 +39402,115 @@ } /** - * ListMatchableAttributesResponse configurations. - * @member {Array.} configurations - * @memberof flyteidl.admin.ListMatchableAttributesResponse + * Schedule cronExpression. + * @member {string} cronExpression + * @memberof flyteidl.admin.Schedule * @instance */ - ListMatchableAttributesResponse.prototype.configurations = $util.emptyArray; + Schedule.prototype.cronExpression = ""; /** - * Creates a new ListMatchableAttributesResponse instance using the specified properties. + * Schedule rate. + * @member {flyteidl.admin.IFixedRate|null|undefined} rate + * @memberof flyteidl.admin.Schedule + * @instance + */ + Schedule.prototype.rate = null; + + /** + * Schedule cronSchedule. + * @member {flyteidl.admin.ICronSchedule|null|undefined} cronSchedule + * @memberof flyteidl.admin.Schedule + * @instance + */ + Schedule.prototype.cronSchedule = null; + + /** + * Schedule kickoffTimeInputArg. + * @member {string} kickoffTimeInputArg + * @memberof flyteidl.admin.Schedule + * @instance + */ + Schedule.prototype.kickoffTimeInputArg = ""; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Schedule ScheduleExpression. + * @member {"cronExpression"|"rate"|"cronSchedule"|undefined} ScheduleExpression + * @memberof flyteidl.admin.Schedule + * @instance + */ + Object.defineProperty(Schedule.prototype, "ScheduleExpression", { + get: $util.oneOfGetter($oneOfFields = ["cronExpression", "rate", "cronSchedule"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Schedule instance using the specified properties. * @function create - * @memberof flyteidl.admin.ListMatchableAttributesResponse + * @memberof flyteidl.admin.Schedule * @static - * @param {flyteidl.admin.IListMatchableAttributesResponse=} [properties] Properties to set - * @returns {flyteidl.admin.ListMatchableAttributesResponse} ListMatchableAttributesResponse instance + * @param {flyteidl.admin.ISchedule=} [properties] Properties to set + * @returns {flyteidl.admin.Schedule} Schedule instance */ - ListMatchableAttributesResponse.create = function create(properties) { - return new ListMatchableAttributesResponse(properties); + Schedule.create = function create(properties) { + return new Schedule(properties); }; /** - * Encodes the specified ListMatchableAttributesResponse message. Does not implicitly {@link flyteidl.admin.ListMatchableAttributesResponse.verify|verify} messages. + * Encodes the specified Schedule message. Does not implicitly {@link flyteidl.admin.Schedule.verify|verify} messages. * @function encode - * @memberof flyteidl.admin.ListMatchableAttributesResponse + * @memberof flyteidl.admin.Schedule * @static - * @param {flyteidl.admin.IListMatchableAttributesResponse} message ListMatchableAttributesResponse message or plain object to encode + * @param {flyteidl.admin.ISchedule} message Schedule message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListMatchableAttributesResponse.encode = function encode(message, writer) { + Schedule.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.configurations != null && message.configurations.length) - for (var i = 0; i < message.configurations.length; ++i) - $root.flyteidl.admin.MatchableAttributesConfiguration.encode(message.configurations[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.cronExpression != null && message.hasOwnProperty("cronExpression")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.cronExpression); + if (message.rate != null && message.hasOwnProperty("rate")) + $root.flyteidl.admin.FixedRate.encode(message.rate, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.kickoffTimeInputArg != null && message.hasOwnProperty("kickoffTimeInputArg")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.kickoffTimeInputArg); + if (message.cronSchedule != null && message.hasOwnProperty("cronSchedule")) + $root.flyteidl.admin.CronSchedule.encode(message.cronSchedule, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; /** - * Decodes a ListMatchableAttributesResponse message from the specified reader or buffer. + * Decodes a Schedule message from the specified reader or buffer. * @function decode - * @memberof flyteidl.admin.ListMatchableAttributesResponse + * @memberof flyteidl.admin.Schedule * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {flyteidl.admin.ListMatchableAttributesResponse} ListMatchableAttributesResponse + * @returns {flyteidl.admin.Schedule} Schedule * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListMatchableAttributesResponse.decode = function decode(reader, length) { + Schedule.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.admin.ListMatchableAttributesResponse(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.Schedule(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.configurations && message.configurations.length)) - message.configurations = []; - message.configurations.push($root.flyteidl.admin.MatchableAttributesConfiguration.decode(reader, reader.uint32())); + message.cronExpression = reader.string(); + break; + case 2: + message.rate = $root.flyteidl.admin.FixedRate.decode(reader, reader.uint32()); + break; + case 4: + message.cronSchedule = $root.flyteidl.admin.CronSchedule.decode(reader, reader.uint32()); + break; + case 3: + message.kickoffTimeInputArg = reader.string(); break; default: reader.skipType(tag & 7); @@ -39522,29 +39521,49 @@ }; /** - * Verifies a ListMatchableAttributesResponse message. + * Verifies a Schedule message. * @function verify - * @memberof flyteidl.admin.ListMatchableAttributesResponse + * @memberof flyteidl.admin.Schedule * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListMatchableAttributesResponse.verify = function verify(message) { + Schedule.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.configurations != null && message.hasOwnProperty("configurations")) { - if (!Array.isArray(message.configurations)) - return "configurations: array expected"; - for (var i = 0; i < message.configurations.length; ++i) { - var error = $root.flyteidl.admin.MatchableAttributesConfiguration.verify(message.configurations[i]); + var properties = {}; + if (message.cronExpression != null && message.hasOwnProperty("cronExpression")) { + properties.ScheduleExpression = 1; + if (!$util.isString(message.cronExpression)) + return "cronExpression: string expected"; + } + if (message.rate != null && message.hasOwnProperty("rate")) { + if (properties.ScheduleExpression === 1) + return "ScheduleExpression: multiple values"; + properties.ScheduleExpression = 1; + { + var error = $root.flyteidl.admin.FixedRate.verify(message.rate); if (error) - return "configurations." + error; + return "rate." + error; + } + } + if (message.cronSchedule != null && message.hasOwnProperty("cronSchedule")) { + if (properties.ScheduleExpression === 1) + return "ScheduleExpression: multiple values"; + properties.ScheduleExpression = 1; + { + var error = $root.flyteidl.admin.CronSchedule.verify(message.cronSchedule); + if (error) + return "cronSchedule." + error; } } + if (message.kickoffTimeInputArg != null && message.hasOwnProperty("kickoffTimeInputArg")) + if (!$util.isString(message.kickoffTimeInputArg)) + return "kickoffTimeInputArg: string expected"; return null; }; - return ListMatchableAttributesResponse; + return Schedule; })(); admin.NodeExecutionGetRequest = (function() { diff --git a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py index 4c2a628407b..9a8fd202c7a 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py @@ -22,9 +22,10 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 +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\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\"\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\"\x90\x08\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\x12\n\x04tags\x18\x18 \x03(\tR\x04tagsB\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\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\"\xef\x08\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\x12\n\x04tags\x18\x18 \x03(\tR\x04tags\x12]\n\x17\x65xecution_cluster_label\x18\x19 \x01(\x0b\x32%.flyteidl.admin.ExecutionClusterLabelR\x15\x65xecutionClusterLabelB\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') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -51,54 +52,54 @@ _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=5422 - _globals['_EXECUTIONSTATE']._serialized_end=5484 - _globals['_EXECUTIONCREATEREQUEST']._serialized_start=403 - _globals['_EXECUTIONCREATEREQUEST']._serialized_end=617 - _globals['_EXECUTIONRELAUNCHREQUEST']._serialized_start=620 - _globals['_EXECUTIONRELAUNCHREQUEST']._serialized_end=773 - _globals['_EXECUTIONRECOVERREQUEST']._serialized_start=776 - _globals['_EXECUTIONRECOVERREQUEST']._serialized_end=944 - _globals['_EXECUTIONCREATERESPONSE']._serialized_start=946 - _globals['_EXECUTIONCREATERESPONSE']._serialized_end=1031 - _globals['_WORKFLOWEXECUTIONGETREQUEST']._serialized_start=1033 - _globals['_WORKFLOWEXECUTIONGETREQUEST']._serialized_end=1122 - _globals['_EXECUTION']._serialized_start=1125 - _globals['_EXECUTION']._serialized_end=1307 - _globals['_EXECUTIONLIST']._serialized_start=1309 - _globals['_EXECUTIONLIST']._serialized_end=1405 - _globals['_LITERALMAPBLOB']._serialized_start=1407 - _globals['_LITERALMAPBLOB']._serialized_end=1508 - _globals['_ABORTMETADATA']._serialized_start=1510 - _globals['_ABORTMETADATA']._serialized_end=1577 - _globals['_EXECUTIONCLOSURE']._serialized_start=1580 - _globals['_EXECUTIONCLOSURE']._serialized_end=2500 - _globals['_SYSTEMMETADATA']._serialized_start=2502 - _globals['_SYSTEMMETADATA']._serialized_end=2593 - _globals['_EXECUTIONMETADATA']._serialized_start=2596 - _globals['_EXECUTIONMETADATA']._serialized_end=3241 - _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_start=3125 - _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_end=3241 - _globals['_NOTIFICATIONLIST']._serialized_start=3243 - _globals['_NOTIFICATIONLIST']._serialized_end=3329 - _globals['_EXECUTIONSPEC']._serialized_start=3332 - _globals['_EXECUTIONSPEC']._serialized_end=4372 - _globals['_EXECUTIONTERMINATEREQUEST']._serialized_start=4374 - _globals['_EXECUTIONTERMINATEREQUEST']._serialized_end=4483 - _globals['_EXECUTIONTERMINATERESPONSE']._serialized_start=4485 - _globals['_EXECUTIONTERMINATERESPONSE']._serialized_end=4513 - _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_start=4515 - _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_end=4608 - _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_start=4611 - _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_end=4875 - _globals['_EXECUTIONUPDATEREQUEST']._serialized_start=4878 - _globals['_EXECUTIONUPDATEREQUEST']._serialized_end=5016 - _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_start=5019 - _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_end=5193 - _globals['_EXECUTIONUPDATERESPONSE']._serialized_start=5195 - _globals['_EXECUTIONUPDATERESPONSE']._serialized_end=5220 - _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_start=5222 - _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_end=5340 - _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_start=5342 - _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_end=5420 + _globals['_EXECUTIONSTATE']._serialized_start=5558 + _globals['_EXECUTIONSTATE']._serialized_end=5620 + _globals['_EXECUTIONCREATEREQUEST']._serialized_start=444 + _globals['_EXECUTIONCREATEREQUEST']._serialized_end=658 + _globals['_EXECUTIONRELAUNCHREQUEST']._serialized_start=661 + _globals['_EXECUTIONRELAUNCHREQUEST']._serialized_end=814 + _globals['_EXECUTIONRECOVERREQUEST']._serialized_start=817 + _globals['_EXECUTIONRECOVERREQUEST']._serialized_end=985 + _globals['_EXECUTIONCREATERESPONSE']._serialized_start=987 + _globals['_EXECUTIONCREATERESPONSE']._serialized_end=1072 + _globals['_WORKFLOWEXECUTIONGETREQUEST']._serialized_start=1074 + _globals['_WORKFLOWEXECUTIONGETREQUEST']._serialized_end=1163 + _globals['_EXECUTION']._serialized_start=1166 + _globals['_EXECUTION']._serialized_end=1348 + _globals['_EXECUTIONLIST']._serialized_start=1350 + _globals['_EXECUTIONLIST']._serialized_end=1446 + _globals['_LITERALMAPBLOB']._serialized_start=1448 + _globals['_LITERALMAPBLOB']._serialized_end=1549 + _globals['_ABORTMETADATA']._serialized_start=1551 + _globals['_ABORTMETADATA']._serialized_end=1618 + _globals['_EXECUTIONCLOSURE']._serialized_start=1621 + _globals['_EXECUTIONCLOSURE']._serialized_end=2541 + _globals['_SYSTEMMETADATA']._serialized_start=2543 + _globals['_SYSTEMMETADATA']._serialized_end=2634 + _globals['_EXECUTIONMETADATA']._serialized_start=2637 + _globals['_EXECUTIONMETADATA']._serialized_end=3282 + _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_start=3166 + _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_end=3282 + _globals['_NOTIFICATIONLIST']._serialized_start=3284 + _globals['_NOTIFICATIONLIST']._serialized_end=3370 + _globals['_EXECUTIONSPEC']._serialized_start=3373 + _globals['_EXECUTIONSPEC']._serialized_end=4508 + _globals['_EXECUTIONTERMINATEREQUEST']._serialized_start=4510 + _globals['_EXECUTIONTERMINATEREQUEST']._serialized_end=4619 + _globals['_EXECUTIONTERMINATERESPONSE']._serialized_start=4621 + _globals['_EXECUTIONTERMINATERESPONSE']._serialized_end=4649 + _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_start=4651 + _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_end=4744 + _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_start=4747 + _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_end=5011 + _globals['_EXECUTIONUPDATEREQUEST']._serialized_start=5014 + _globals['_EXECUTIONUPDATEREQUEST']._serialized_end=5152 + _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_start=5155 + _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_end=5329 + _globals['_EXECUTIONUPDATERESPONSE']._serialized_start=5331 + _globals['_EXECUTIONUPDATERESPONSE']._serialized_end=5356 + _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_start=5358 + _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_end=5476 + _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_start=5478 + _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_end=5556 # @@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 c832b3a4299..6b34cbf5783 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.pyi @@ -9,6 +9,7 @@ from flyteidl.core import security_pb2 as _security_pb2 from google.protobuf import duration_pb2 as _duration_pb2 from google.protobuf import timestamp_pb2 as _timestamp_pb2 from google.protobuf import wrappers_pb2 as _wrappers_pb2 +from flyteidl.admin import matchable_resource_pb2 as _matchable_resource_pb2 from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor @@ -189,7 +190,7 @@ class NotificationList(_message.Message): def __init__(self, notifications: _Optional[_Iterable[_Union[_common_pb2.Notification, _Mapping]]] = ...) -> None: ... class ExecutionSpec(_message.Message): - __slots__ = ["launch_plan", "inputs", "metadata", "notifications", "disable_all", "labels", "annotations", "security_context", "auth_role", "quality_of_service", "max_parallelism", "raw_output_data_config", "cluster_assignment", "interruptible", "overwrite_cache", "envs", "tags"] + __slots__ = ["launch_plan", "inputs", "metadata", "notifications", "disable_all", "labels", "annotations", "security_context", "auth_role", "quality_of_service", "max_parallelism", "raw_output_data_config", "cluster_assignment", "interruptible", "overwrite_cache", "envs", "tags", "execution_cluster_label"] LAUNCH_PLAN_FIELD_NUMBER: _ClassVar[int] INPUTS_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] @@ -207,6 +208,7 @@ class ExecutionSpec(_message.Message): OVERWRITE_CACHE_FIELD_NUMBER: _ClassVar[int] ENVS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + EXECUTION_CLUSTER_LABEL_FIELD_NUMBER: _ClassVar[int] launch_plan: _identifier_pb2.Identifier inputs: _literals_pb2.LiteralMap metadata: ExecutionMetadata @@ -224,7 +226,8 @@ class ExecutionSpec(_message.Message): overwrite_cache: bool envs: _common_pb2.Envs tags: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, launch_plan: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., metadata: _Optional[_Union[ExecutionMetadata, _Mapping]] = ..., notifications: _Optional[_Union[NotificationList, _Mapping]] = ..., disable_all: bool = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., annotations: _Optional[_Union[_common_pb2.Annotations, _Mapping]] = ..., security_context: _Optional[_Union[_security_pb2.SecurityContext, _Mapping]] = ..., auth_role: _Optional[_Union[_common_pb2.AuthRole, _Mapping]] = ..., quality_of_service: _Optional[_Union[_execution_pb2.QualityOfService, _Mapping]] = ..., max_parallelism: _Optional[int] = ..., raw_output_data_config: _Optional[_Union[_common_pb2.RawOutputDataConfig, _Mapping]] = ..., cluster_assignment: _Optional[_Union[_cluster_assignment_pb2.ClusterAssignment, _Mapping]] = ..., interruptible: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., overwrite_cache: bool = ..., envs: _Optional[_Union[_common_pb2.Envs, _Mapping]] = ..., tags: _Optional[_Iterable[str]] = ...) -> None: ... + execution_cluster_label: _matchable_resource_pb2.ExecutionClusterLabel + def __init__(self, launch_plan: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., metadata: _Optional[_Union[ExecutionMetadata, _Mapping]] = ..., notifications: _Optional[_Union[NotificationList, _Mapping]] = ..., disable_all: bool = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., annotations: _Optional[_Union[_common_pb2.Annotations, _Mapping]] = ..., security_context: _Optional[_Union[_security_pb2.SecurityContext, _Mapping]] = ..., auth_role: _Optional[_Union[_common_pb2.AuthRole, _Mapping]] = ..., quality_of_service: _Optional[_Union[_execution_pb2.QualityOfService, _Mapping]] = ..., max_parallelism: _Optional[int] = ..., raw_output_data_config: _Optional[_Union[_common_pb2.RawOutputDataConfig, _Mapping]] = ..., cluster_assignment: _Optional[_Union[_cluster_assignment_pb2.ClusterAssignment, _Mapping]] = ..., interruptible: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., overwrite_cache: bool = ..., envs: _Optional[_Union[_common_pb2.Envs, _Mapping]] = ..., tags: _Optional[_Iterable[str]] = ..., execution_cluster_label: _Optional[_Union[_matchable_resource_pb2.ExecutionClusterLabel, _Mapping]] = ...) -> None: ... class ExecutionTerminateRequest(_message.Message): __slots__ = ["id", "cause"] diff --git a/flyteidl/gen/pb_rust/flyteidl.admin.rs b/flyteidl/gen/pb_rust/flyteidl.admin.rs index f3246149045..ea1a14ce251 100644 --- a/flyteidl/gen/pb_rust/flyteidl.admin.rs +++ b/flyteidl/gen/pb_rust/flyteidl.admin.rs @@ -1034,153 +1034,412 @@ pub struct TaskExecutionEventRequest { #[derive(Clone, PartialEq, ::prost::Message)] pub struct TaskExecutionEventResponse { } -/// Request to launch an execution with the given project, domain and optionally-assigned name. +/// Defines a set of overridable task resource attributes set during task registration. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionCreateRequest { - /// Name of the project the execution belongs to. - /// +required +pub struct TaskResourceSpec { #[prost(string, tag="1")] - pub project: ::prost::alloc::string::String, - /// Name of the domain the execution belongs to. - /// A domain can be considered as a subset within a specific project. - /// +required + pub cpu: ::prost::alloc::string::String, #[prost(string, tag="2")] - pub domain: ::prost::alloc::string::String, - /// User provided value for the resource. - /// If none is provided the system will generate a unique string. - /// +optional + pub gpu: ::prost::alloc::string::String, #[prost(string, tag="3")] - pub name: ::prost::alloc::string::String, - /// Additional fields necessary to launch the execution. - /// +optional - #[prost(message, optional, tag="4")] - pub spec: ::core::option::Option, - /// 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, - /// Optional, org key applied to the resource. - #[prost(string, tag="6")] - pub org: ::prost::alloc::string::String, + pub memory: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub storage: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub ephemeral_storage: ::prost::alloc::string::String, } -/// Request to relaunch the referenced execution. +/// Defines task resource defaults and limits that will be applied at task registration. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionRelaunchRequest { - /// Identifier of the workflow execution to relaunch. - /// +required +pub struct TaskResourceAttributes { #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, - /// User provided value for the relaunched execution. - /// If none is provided the system will generate a unique string. - /// +optional - #[prost(string, tag="3")] - pub name: ::prost::alloc::string::String, - /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. - /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored - /// data once execution finishes successfully. - #[prost(bool, tag="4")] - pub overwrite_cache: bool, + pub defaults: ::core::option::Option, + #[prost(message, optional, tag="2")] + pub limits: ::core::option::Option, } -/// Request to recover the referenced execution. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionRecoverRequest { - /// Identifier of the workflow execution to recover. - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, - /// User provided value for the recovered execution. - /// If none is provided the system will generate a unique string. - /// +optional - #[prost(string, tag="2")] - pub name: ::prost::alloc::string::String, - /// Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution. - #[prost(message, optional, tag="3")] - pub metadata: ::core::option::Option, +pub struct ClusterResourceAttributes { + /// Custom resource attributes which will be applied in cluster resource creation (e.g. quotas). + /// Map keys are the *case-sensitive* names of variables in templatized resource files. + /// Map values should be the custom values which get substituted during resource creation. + #[prost(map="string, string", tag="1")] + pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } -/// The unique identifier for a successfully created execution. -/// If the name was *not* specified in the create request, this identifier will include a generated name. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionCreateResponse { - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, +pub struct ExecutionQueueAttributes { + /// Tags used for assigning execution queues for tasks defined within this project. + #[prost(string, repeated, tag="1")] + pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, } -/// A message used to fetch a single workflow execution entity. -/// See :ref:`ref_flyteidl.admin.Execution` for more details #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct WorkflowExecutionGetRequest { - /// Uniquely identifies an individual workflow execution. - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, +pub struct ExecutionClusterLabel { + /// Label value to determine where the execution will be run + #[prost(string, tag="1")] + pub value: ::prost::alloc::string::String, } -/// A workflow execution represents an instantiated workflow, including all inputs and additional -/// metadata as well as computed results included state, outputs, and duration-based attributes. -/// Used as a response object used in Get and List execution requests. +/// This MatchableAttribute configures selecting alternate plugin implementations for a given task type. +/// In addition to an override implementation a selection of fallbacks can be provided or other modes +/// for handling cases where the desired plugin override is not enabled in a given Flyte deployment. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct Execution { - /// Unique identifier of the workflow execution. - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, - /// User-provided configuration and inputs for launching the execution. - #[prost(message, optional, tag="2")] - pub spec: ::core::option::Option, - /// Execution results. - #[prost(message, optional, tag="3")] - pub closure: ::core::option::Option, +pub struct PluginOverride { + /// A predefined yet extensible Task type identifier. + #[prost(string, tag="1")] + pub task_type: ::prost::alloc::string::String, + /// A set of plugin ids which should handle tasks of this type instead of the default registered plugin. The list will be tried in order until a plugin is found with that id. + #[prost(string, repeated, tag="2")] + pub plugin_id: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// Defines the behavior when no plugin from the plugin_id list is not found. + #[prost(enumeration="plugin_override::MissingPluginBehavior", tag="4")] + pub missing_plugin_behavior: i32, +} +/// Nested message and enum types in `PluginOverride`. +pub mod plugin_override { + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum MissingPluginBehavior { + /// By default, if this plugin is not enabled for a Flyte deployment then execution will fail. + Fail = 0, + /// Uses the system-configured default implementation. + UseDefault = 1, + } + impl MissingPluginBehavior { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + MissingPluginBehavior::Fail => "FAIL", + MissingPluginBehavior::UseDefault => "USE_DEFAULT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FAIL" => Some(Self::Fail), + "USE_DEFAULT" => Some(Self::UseDefault), + _ => None, + } + } + } } -/// Used as a response for request to list executions. -/// See :ref:`ref_flyteidl.admin.Execution` for more details #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionList { +pub struct PluginOverrides { #[prost(message, repeated, tag="1")] - pub executions: ::prost::alloc::vec::Vec, - /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page - /// in a query. If there are no more results, this value will be empty. - #[prost(string, tag="2")] - pub token: ::prost::alloc::string::String, + pub overrides: ::prost::alloc::vec::Vec, } -/// Input/output data can represented by actual values or a link to where values are stored +/// Adds defaults for customizable workflow-execution specifications and overrides. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct LiteralMapBlob { - #[prost(oneof="literal_map_blob::Data", tags="1, 2")] - pub data: ::core::option::Option, +pub struct WorkflowExecutionConfig { + /// Can be used to control the number of parallel nodes to run within the workflow. This is useful to achieve fairness. + #[prost(int32, tag="1")] + pub max_parallelism: i32, + /// Indicates security context permissions for executions triggered with this matchable attribute. + #[prost(message, optional, tag="2")] + pub security_context: ::core::option::Option, + /// Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.). + #[prost(message, optional, tag="3")] + pub raw_output_data_config: ::core::option::Option, + /// Custom labels to be applied to a triggered execution resource. + #[prost(message, optional, tag="4")] + pub labels: ::core::option::Option, + /// Custom annotations to be applied to a triggered execution resource. + #[prost(message, optional, tag="5")] + pub annotations: ::core::option::Option, + /// Allows for the interruptible flag of a workflow to be overwritten for a single execution. + /// Omitting this field uses the workflow's value as a default. + /// As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper + /// around the bool field. + #[prost(message, optional, tag="6")] + pub interruptible: ::core::option::Option, + /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored + /// data once execution finishes successfully. + #[prost(bool, tag="7")] + pub overwrite_cache: bool, + /// Environment variables to be set for the execution. + #[prost(message, optional, tag="8")] + pub envs: ::core::option::Option, } -/// Nested message and enum types in `LiteralMapBlob`. -pub mod literal_map_blob { +/// Generic container for encapsulating all types of the above attributes messages. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MatchingAttributes { + #[prost(oneof="matching_attributes::Target", tags="1, 2, 3, 4, 5, 6, 7, 8")] + pub target: ::core::option::Option, +} +/// Nested message and enum types in `MatchingAttributes`. +pub mod matching_attributes { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Data { - /// Data in LiteralMap format + pub enum Target { #[prost(message, tag="1")] - Values(super::super::core::LiteralMap), - /// In the event that the map is too large, we return a uri to the data - #[prost(string, tag="2")] - Uri(::prost::alloc::string::String), + TaskResourceAttributes(super::TaskResourceAttributes), + #[prost(message, tag="2")] + ClusterResourceAttributes(super::ClusterResourceAttributes), + #[prost(message, tag="3")] + ExecutionQueueAttributes(super::ExecutionQueueAttributes), + #[prost(message, tag="4")] + ExecutionClusterLabel(super::ExecutionClusterLabel), + #[prost(message, tag="5")] + QualityOfService(super::super::core::QualityOfService), + #[prost(message, tag="6")] + PluginOverrides(super::PluginOverrides), + #[prost(message, tag="7")] + WorkflowExecutionConfig(super::WorkflowExecutionConfig), + #[prost(message, tag="8")] + ClusterAssignment(super::ClusterAssignment), } } -/// Specifies metadata around an aborted workflow execution. +/// Represents a custom set of attributes applied for either a domain (and optional org); a domain and project (and optional org); +/// or domain, project and workflow name (and optional org). +/// These are used to override system level defaults for kubernetes cluster resource management, +/// default execution values, and more all across different levels of specificity. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct AbortMetadata { - /// In the case of a user-specified abort, this will pass along the user-supplied cause. - #[prost(string, tag="1")] - pub cause: ::prost::alloc::string::String, - /// Identifies the entity (if any) responsible for terminating the execution +pub struct MatchableAttributesConfiguration { + #[prost(message, optional, tag="1")] + pub attributes: ::core::option::Option, #[prost(string, tag="2")] - pub principal: ::prost::alloc::string::String, + pub domain: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub project: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub workflow: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub launch_plan: ::prost::alloc::string::String, + /// Optional, org key applied to the resource. + #[prost(string, tag="6")] + pub org: ::prost::alloc::string::String, } -/// Encapsulates the results of the Execution +/// Request all matching resource attributes for a resource type. +/// See :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for more details #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionClosure { - /// Inputs computed and passed for execution. +pub struct ListMatchableAttributesRequest { + /// +required + #[prost(enumeration="MatchableResource", tag="1")] + pub resource_type: i32, + /// Optional, org filter applied to list project requests. + #[prost(string, tag="2")] + pub org: ::prost::alloc::string::String, +} +/// Response for a request for all matching resource attributes for a resource type. +/// See :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ListMatchableAttributesResponse { + #[prost(message, repeated, tag="1")] + pub configurations: ::prost::alloc::vec::Vec, +} +/// Defines a resource that can be configured by customizable Project-, ProjectDomain- or WorkflowAttributes +/// based on matching tags. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum MatchableResource { + /// Applies to customizable task resource requests and limits. + TaskResource = 0, + /// Applies to configuring templated kubernetes cluster resources. + ClusterResource = 1, + /// Configures task and dynamic task execution queue assignment. + ExecutionQueue = 2, + /// Configures the K8s cluster label to be used for execution to be run + ExecutionClusterLabel = 3, + /// Configures default quality of service when undefined in an execution spec. + QualityOfServiceSpecification = 4, + /// Selects configurable plugin implementation behavior for a given task type. + PluginOverride = 5, + /// Adds defaults for customizable workflow-execution specifications and overrides. + WorkflowExecutionConfig = 6, + /// Controls how to select an available cluster on which this execution should run. + ClusterAssignment = 7, +} +impl MatchableResource { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + MatchableResource::TaskResource => "TASK_RESOURCE", + MatchableResource::ClusterResource => "CLUSTER_RESOURCE", + MatchableResource::ExecutionQueue => "EXECUTION_QUEUE", + MatchableResource::ExecutionClusterLabel => "EXECUTION_CLUSTER_LABEL", + MatchableResource::QualityOfServiceSpecification => "QUALITY_OF_SERVICE_SPECIFICATION", + MatchableResource::PluginOverride => "PLUGIN_OVERRIDE", + MatchableResource::WorkflowExecutionConfig => "WORKFLOW_EXECUTION_CONFIG", + MatchableResource::ClusterAssignment => "CLUSTER_ASSIGNMENT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "TASK_RESOURCE" => Some(Self::TaskResource), + "CLUSTER_RESOURCE" => Some(Self::ClusterResource), + "EXECUTION_QUEUE" => Some(Self::ExecutionQueue), + "EXECUTION_CLUSTER_LABEL" => Some(Self::ExecutionClusterLabel), + "QUALITY_OF_SERVICE_SPECIFICATION" => Some(Self::QualityOfServiceSpecification), + "PLUGIN_OVERRIDE" => Some(Self::PluginOverride), + "WORKFLOW_EXECUTION_CONFIG" => Some(Self::WorkflowExecutionConfig), + "CLUSTER_ASSIGNMENT" => Some(Self::ClusterAssignment), + _ => None, + } + } +} +/// Request to launch an execution with the given project, domain and optionally-assigned name. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionCreateRequest { + /// Name of the project the execution belongs to. + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Name of the domain the execution belongs to. + /// A domain can be considered as a subset within a specific project. + /// +required + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// User provided value for the resource. + /// If none is provided the system will generate a unique string. + /// +optional + #[prost(string, tag="3")] + pub name: ::prost::alloc::string::String, + /// Additional fields necessary to launch the execution. + /// +optional + #[prost(message, optional, tag="4")] + pub spec: ::core::option::Option, + /// 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, + /// Optional, org key applied to the resource. + #[prost(string, tag="6")] + pub org: ::prost::alloc::string::String, +} +/// Request to relaunch the referenced execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionRelaunchRequest { + /// Identifier of the workflow execution to relaunch. + /// +required + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User provided value for the relaunched execution. + /// If none is provided the system will generate a unique string. + /// +optional + #[prost(string, tag="3")] + pub name: ::prost::alloc::string::String, + /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored + /// data once execution finishes successfully. + #[prost(bool, tag="4")] + pub overwrite_cache: bool, +} +/// Request to recover the referenced execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionRecoverRequest { + /// Identifier of the workflow execution to recover. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User provided value for the recovered execution. + /// If none is provided the system will generate a unique string. + /// +optional + #[prost(string, tag="2")] + pub name: ::prost::alloc::string::String, + /// Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution. + #[prost(message, optional, tag="3")] + pub metadata: ::core::option::Option, +} +/// The unique identifier for a successfully created execution. +/// If the name was *not* specified in the create request, this identifier will include a generated name. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionCreateResponse { + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// A message used to fetch a single workflow execution entity. +/// See :ref:`ref_flyteidl.admin.Execution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionGetRequest { + /// Uniquely identifies an individual workflow execution. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// A workflow execution represents an instantiated workflow, including all inputs and additional +/// metadata as well as computed results included state, outputs, and duration-based attributes. +/// Used as a response object used in Get and List execution requests. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Execution { + /// Unique identifier of the workflow execution. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User-provided configuration and inputs for launching the execution. + #[prost(message, optional, tag="2")] + pub spec: ::core::option::Option, + /// Execution results. + #[prost(message, optional, tag="3")] + pub closure: ::core::option::Option, +} +/// Used as a response for request to list executions. +/// See :ref:`ref_flyteidl.admin.Execution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionList { + #[prost(message, repeated, tag="1")] + pub executions: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Input/output data can represented by actual values or a link to where values are stored +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LiteralMapBlob { + #[prost(oneof="literal_map_blob::Data", tags="1, 2")] + pub data: ::core::option::Option, +} +/// Nested message and enum types in `LiteralMapBlob`. +pub mod literal_map_blob { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Data { + /// Data in LiteralMap format + #[prost(message, tag="1")] + Values(super::super::core::LiteralMap), + /// In the event that the map is too large, we return a uri to the data + #[prost(string, tag="2")] + Uri(::prost::alloc::string::String), + } +} +/// Specifies metadata around an aborted workflow execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AbortMetadata { + /// In the case of a user-specified abort, this will pass along the user-supplied cause. + #[prost(string, tag="1")] + pub cause: ::prost::alloc::string::String, + /// Identifies the entity (if any) responsible for terminating the execution + #[prost(string, tag="2")] + pub principal: ::prost::alloc::string::String, +} +/// Encapsulates the results of the Execution +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionClosure { + /// Inputs computed and passed for execution. /// computed_inputs depends on inputs in ExecutionSpec, fixed and default inputs in launch plan #[deprecated] #[prost(message, optional, tag="3")] @@ -1328,814 +1587,558 @@ pub mod execution_metadata { ExecutionMode::Trigger => "TRIGGER", } } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "MANUAL" => Some(Self::Manual), - "SCHEDULED" => Some(Self::Scheduled), - "SYSTEM" => Some(Self::System), - "RELAUNCH" => Some(Self::Relaunch), - "CHILD_WORKFLOW" => Some(Self::ChildWorkflow), - "RECOVERED" => Some(Self::Recovered), - "TRIGGER" => Some(Self::Trigger), - _ => None, - } - } - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct NotificationList { - #[prost(message, repeated, tag="1")] - pub notifications: ::prost::alloc::vec::Vec, -} -/// An ExecutionSpec encompasses all data used to launch this execution. The Spec does not change over the lifetime -/// of an execution as it progresses across phase changes. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionSpec { - /// Launch plan to be executed - #[prost(message, optional, tag="1")] - pub launch_plan: ::core::option::Option, - /// Input values to be passed for the execution - #[deprecated] - #[prost(message, optional, tag="2")] - pub inputs: ::core::option::Option, - /// Metadata for the execution - #[prost(message, optional, tag="3")] - pub metadata: ::core::option::Option, - /// Labels to apply to the execution resource. - #[prost(message, optional, tag="7")] - pub labels: ::core::option::Option, - /// Annotations to apply to the execution resource. - #[prost(message, optional, tag="8")] - pub annotations: ::core::option::Option, - /// Optional: security context override to apply this execution. - #[prost(message, optional, tag="10")] - pub security_context: ::core::option::Option, - /// Optional: auth override to apply this execution. - #[deprecated] - #[prost(message, optional, tag="16")] - pub auth_role: ::core::option::Option, - /// Indicates the runtime priority of the execution. - #[prost(message, optional, tag="17")] - pub quality_of_service: ::core::option::Option, - /// Controls the maximum number of task nodes that can be run in parallel for the entire workflow. - /// This is useful to achieve fairness. Note: MapTasks are regarded as one unit, - /// and parallelism/concurrency of MapTasks is independent from this. - #[prost(int32, tag="18")] - pub max_parallelism: i32, - /// User setting to configure where to store offloaded data (i.e. Blobs, structured datasets, query data, etc.). - /// This should be a prefix like s3://my-bucket/my-data - #[prost(message, optional, tag="19")] - pub raw_output_data_config: ::core::option::Option, - /// Controls how to select an available cluster on which this execution should run. - #[prost(message, optional, tag="20")] - pub cluster_assignment: ::core::option::Option, - /// Allows for the interruptible flag of a workflow to be overwritten for a single execution. - /// Omitting this field uses the workflow's value as a default. - /// As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper - /// around the bool field. - #[prost(message, optional, tag="21")] - pub interruptible: ::core::option::Option, - /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. - /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored - /// data once execution finishes successfully. - #[prost(bool, tag="22")] - pub overwrite_cache: bool, - /// Environment variables to be set for the execution. - #[prost(message, optional, tag="23")] - pub envs: ::core::option::Option, - /// Tags to be set for the execution. - #[prost(string, repeated, tag="24")] - pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(oneof="execution_spec::NotificationOverrides", tags="5, 6")] - pub notification_overrides: ::core::option::Option, -} -/// Nested message and enum types in `ExecutionSpec`. -pub mod execution_spec { - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum NotificationOverrides { - /// List of notifications based on Execution status transitions - /// When this list is not empty it is used rather than any notifications defined in the referenced launch plan. - /// When this list is empty, the notifications defined for the launch plan will be applied. - #[prost(message, tag="5")] - Notifications(super::NotificationList), - /// This should be set to true if all notifications are intended to be disabled for this execution. - #[prost(bool, tag="6")] - DisableAll(bool), - } -} -/// Request to terminate an in-progress execution. This action is irreversible. -/// If an execution is already terminated, this request will simply be a no-op. -/// This request will fail if it references a non-existent execution. -/// If the request succeeds the phase "ABORTED" will be recorded for the termination -/// with the optional cause added to the output_result. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionTerminateRequest { - /// Uniquely identifies the individual workflow execution to be terminated. - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, - /// Optional reason for aborting. - #[prost(string, tag="2")] - pub cause: ::prost::alloc::string::String, -} -/// Purposefully empty, may be populated in the future. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionTerminateResponse { -} -/// Request structure to fetch inputs, output and other data produced by an execution. -/// By default this data is not returned inline in :ref:`ref_flyteidl.admin.WorkflowExecutionGetRequest` -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct WorkflowExecutionGetDataRequest { - /// The identifier of the execution for which to fetch inputs and outputs. - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, -} -/// Response structure for WorkflowExecutionGetDataRequest which contains inputs and outputs for an execution. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct WorkflowExecutionGetDataResponse { - /// Signed url to fetch a core.LiteralMap of execution outputs. - /// Deprecated: Please use full_outputs instead. - #[deprecated] - #[prost(message, optional, tag="1")] - pub outputs: ::core::option::Option, - /// Signed url to fetch a core.LiteralMap of execution inputs. - /// Deprecated: Please use full_inputs instead. - #[deprecated] - #[prost(message, optional, tag="2")] - pub inputs: ::core::option::Option, - /// Full_inputs will only be populated if they are under a configured size threshold. - #[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. - #[prost(message, optional, tag="4")] - pub full_outputs: ::core::option::Option, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionUpdateRequest { - /// Identifier of the execution to update - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, - /// State to set as the new value active/archive - #[prost(enumeration="ExecutionState", tag="2")] - pub state: i32, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionStateChangeDetails { - /// The state of the execution is used to control its visibility in the UI/CLI. - #[prost(enumeration="ExecutionState", tag="1")] - pub state: i32, - /// This timestamp represents when the state changed. - #[prost(message, optional, tag="2")] - pub occurred_at: ::core::option::Option<::prost_types::Timestamp>, - /// Identifies the entity (if any) responsible for causing the state change of the execution - #[prost(string, tag="3")] - pub principal: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionUpdateResponse { -} -/// WorkflowExecutionGetMetricsRequest represents a request to retrieve metrics for the specified workflow execution. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct WorkflowExecutionGetMetricsRequest { - /// id defines the workflow execution to query for. - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, - /// depth defines the number of Flyte entity levels to traverse when breaking down execution details. - #[prost(int32, tag="2")] - pub depth: i32, -} -/// WorkflowExecutionGetMetricsResponse represents the response containing metrics for the specified workflow execution. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct WorkflowExecutionGetMetricsResponse { - /// Span defines the top-level breakdown of the workflows execution. More precise information is nested in a - /// hierarchical structure using Flyte entity references. - #[prost(message, optional, tag="1")] - pub span: ::core::option::Option, -} -/// The state of the execution is used to control its visibility in the UI/CLI. -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] -#[repr(i32)] -pub enum ExecutionState { - /// By default, all executions are considered active. - ExecutionActive = 0, - /// Archived executions are no longer visible in the UI. - ExecutionArchived = 1, -} -impl ExecutionState { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - ExecutionState::ExecutionActive => "EXECUTION_ACTIVE", - ExecutionState::ExecutionArchived => "EXECUTION_ARCHIVED", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "EXECUTION_ACTIVE" => Some(Self::ExecutionActive), - "EXECUTION_ARCHIVED" => Some(Self::ExecutionArchived), - _ => None, - } - } -} -/// Option for schedules run at a certain frequency e.g. every 2 minutes. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct FixedRate { - #[prost(uint32, tag="1")] - pub value: u32, - #[prost(enumeration="FixedRateUnit", tag="2")] - pub unit: i32, -} -/// Options for schedules to run according to a cron expression. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct CronSchedule { - /// Standard/default cron implementation as described by - /// Also supports nonstandard predefined scheduling definitions - /// as described by - /// except @reboot - #[prost(string, tag="1")] - pub schedule: ::prost::alloc::string::String, - /// ISO 8601 duration as described by - #[prost(string, tag="2")] - pub offset: ::prost::alloc::string::String, -} -/// Defines complete set of information required to trigger an execution on a schedule. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Schedule { - /// Name of the input variable that the kickoff time will be supplied to when the workflow is kicked off. - #[prost(string, tag="3")] - pub kickoff_time_input_arg: ::prost::alloc::string::String, - #[prost(oneof="schedule::ScheduleExpression", tags="1, 2, 4")] - pub schedule_expression: ::core::option::Option, -} -/// Nested message and enum types in `Schedule`. -pub mod schedule { - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum ScheduleExpression { - /// Uses AWS syntax: Minutes Hours Day-of-month Month Day-of-week Year - /// e.g. for a schedule that runs every 15 minutes: 0/15 * * * ? * - #[prost(string, tag="1")] - CronExpression(::prost::alloc::string::String), - #[prost(message, tag="2")] - Rate(super::FixedRate), - #[prost(message, tag="4")] - CronSchedule(super::CronSchedule), - } -} -/// Represents a frequency at which to run a schedule. -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] -#[repr(i32)] -pub enum FixedRateUnit { - Minute = 0, - Hour = 1, - Day = 2, -} -impl FixedRateUnit { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - FixedRateUnit::Minute => "MINUTE", - FixedRateUnit::Hour => "HOUR", - FixedRateUnit::Day => "DAY", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "MINUTE" => Some(Self::Minute), - "HOUR" => Some(Self::Hour), - "DAY" => Some(Self::Day), - _ => None, - } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MANUAL" => Some(Self::Manual), + "SCHEDULED" => Some(Self::Scheduled), + "SYSTEM" => Some(Self::System), + "RELAUNCH" => Some(Self::Relaunch), + "CHILD_WORKFLOW" => Some(Self::ChildWorkflow), + "RECOVERED" => Some(Self::Recovered), + "TRIGGER" => Some(Self::Trigger), + _ => None, + } + } } } -/// Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required -/// to launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to -/// set the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct LaunchPlanCreateRequest { - /// Uniquely identifies a launch plan entity. - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, - /// User-provided launch plan details, including reference workflow, inputs and other metadata. - #[prost(message, optional, tag="2")] - pub spec: ::core::option::Option, -} -/// Purposefully empty, may be populated in the future. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct LaunchPlanCreateResponse { -} -/// A LaunchPlan provides the capability to templatize workflow executions. -/// Launch plans simplify associating one or more schedules, inputs and notifications with your workflows. -/// Launch plans can be shared and used to trigger executions with predefined inputs even when a workflow -/// definition doesn't necessarily have a default value for said input. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct LaunchPlan { - /// Uniquely identifies a launch plan entity. - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, - /// User-provided launch plan details, including reference workflow, inputs and other metadata. - #[prost(message, optional, tag="2")] - pub spec: ::core::option::Option, - /// Values computed by the flyte platform after launch plan registration. - #[prost(message, optional, tag="3")] - pub closure: ::core::option::Option, -} -/// Response object for list launch plan requests. -/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct LaunchPlanList { +pub struct NotificationList { #[prost(message, repeated, tag="1")] - pub launch_plans: ::prost::alloc::vec::Vec, - /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page - /// in a query. If there are no more results, this value will be empty. - #[prost(string, tag="2")] - pub token: ::prost::alloc::string::String, -} -/// Defines permissions associated with executions created by this launch plan spec. -/// Use either of these roles when they have permissions required by your workflow execution. -/// Deprecated. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Auth { - /// Defines an optional iam role which will be used for tasks run in executions created with this launch plan. - #[prost(string, tag="1")] - pub assumable_iam_role: ::prost::alloc::string::String, - /// Defines an optional kubernetes service account which will be used for tasks run in executions created with this launch plan. - #[prost(string, tag="2")] - pub kubernetes_service_account: ::prost::alloc::string::String, + pub notifications: ::prost::alloc::vec::Vec, } -/// User-provided launch plan definition and configuration values. +/// An ExecutionSpec encompasses all data used to launch this execution. The Spec does not change over the lifetime +/// of an execution as it progresses across phase changes. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct LaunchPlanSpec { - /// Reference to the Workflow template that the launch plan references +pub struct ExecutionSpec { + /// Launch plan to be executed #[prost(message, optional, tag="1")] - pub workflow_id: ::core::option::Option, - /// Metadata for the Launch Plan + pub launch_plan: ::core::option::Option, + /// Input values to be passed for the execution + #[deprecated] #[prost(message, optional, tag="2")] - pub entity_metadata: ::core::option::Option, - /// Input values to be passed for the execution. - /// These can be overridden when an execution is created with this launch plan. + pub inputs: ::core::option::Option, + /// Metadata for the execution #[prost(message, optional, tag="3")] - 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. - #[prost(message, optional, tag="4")] - pub fixed_inputs: ::core::option::Option, - /// String to indicate the role to use to execute the workflow underneath - #[deprecated] - #[prost(string, tag="5")] - pub role: ::prost::alloc::string::String, - /// Custom labels to be applied to the execution resource. - #[prost(message, optional, tag="6")] - pub labels: ::core::option::Option, - /// Custom annotations to be applied to the execution resource. + pub metadata: ::core::option::Option, + /// Labels to apply to the execution resource. #[prost(message, optional, tag="7")] - pub annotations: ::core::option::Option, - /// Indicates the permission associated with workflow executions triggered with this launch plan. - #[deprecated] + pub labels: ::core::option::Option, + /// Annotations to apply to the execution resource. #[prost(message, optional, tag="8")] - pub auth: ::core::option::Option, - #[deprecated] - #[prost(message, optional, tag="9")] - pub auth_role: ::core::option::Option, - /// Indicates security context for permissions triggered with this launch plan + pub annotations: ::core::option::Option, + /// Optional: security context override to apply this execution. #[prost(message, optional, tag="10")] pub security_context: ::core::option::Option, - /// Indicates the runtime priority of the execution. + /// Optional: auth override to apply this execution. + #[deprecated] #[prost(message, optional, tag="16")] - pub quality_of_service: ::core::option::Option, - /// Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.). + pub auth_role: ::core::option::Option, + /// Indicates the runtime priority of the execution. #[prost(message, optional, tag="17")] - pub raw_output_data_config: ::core::option::Option, - /// Controls the maximum number of tasknodes that can be run in parallel for the entire workflow. + pub quality_of_service: ::core::option::Option, + /// Controls the maximum number of task nodes that can be run in parallel for the entire workflow. /// This is useful to achieve fairness. Note: MapTasks are regarded as one unit, /// and parallelism/concurrency of MapTasks is independent from this. #[prost(int32, tag="18")] pub max_parallelism: i32, + /// User setting to configure where to store offloaded data (i.e. Blobs, structured datasets, query data, etc.). + /// This should be a prefix like s3://my-bucket/my-data + #[prost(message, optional, tag="19")] + pub raw_output_data_config: ::core::option::Option, + /// Controls how to select an available cluster on which this execution should run. + #[prost(message, optional, tag="20")] + pub cluster_assignment: ::core::option::Option, /// Allows for the interruptible flag of a workflow to be overwritten for a single execution. /// Omitting this field uses the workflow's value as a default. /// As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper /// around the bool field. - #[prost(message, optional, tag="19")] + #[prost(message, optional, tag="21")] pub interruptible: ::core::option::Option, /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored /// data once execution finishes successfully. - #[prost(bool, tag="20")] + #[prost(bool, tag="22")] pub overwrite_cache: bool, /// Environment variables to be set for the execution. - #[prost(message, optional, tag="21")] + #[prost(message, optional, tag="23")] pub envs: ::core::option::Option, + /// Tags to be set for the execution. + #[prost(string, repeated, tag="24")] + pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// Execution cluster label to be set for the execution. + #[prost(message, optional, tag="25")] + pub execution_cluster_label: ::core::option::Option, + #[prost(oneof="execution_spec::NotificationOverrides", tags="5, 6")] + pub notification_overrides: ::core::option::Option, } -/// 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. +/// Nested message and enum types in `ExecutionSpec`. +pub mod execution_spec { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum NotificationOverrides { + /// List of notifications based on Execution status transitions + /// When this list is not empty it is used rather than any notifications defined in the referenced launch plan. + /// When this list is empty, the notifications defined for the launch plan will be applied. + #[prost(message, tag="5")] + Notifications(super::NotificationList), + /// This should be set to true if all notifications are intended to be disabled for this execution. + #[prost(bool, tag="6")] + DisableAll(bool), + } +} +/// Request to terminate an in-progress execution. This action is irreversible. +/// If an execution is already terminated, this request will simply be a no-op. +/// This request will fail if it references a non-existent execution. +/// If the request succeeds the phase "ABORTED" will be recorded for the termination +/// with the optional cause added to the output_result. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct LaunchPlanClosure { - /// Indicate the Launch plan state. - #[prost(enumeration="LaunchPlanState", tag="1")] - pub state: i32, - /// Indicates the set of inputs expected when creating an execution with the Launch plan +pub struct ExecutionTerminateRequest { + /// Uniquely identifies the individual workflow execution to be terminated. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// Optional reason for aborting. + #[prost(string, tag="2")] + pub cause: ::prost::alloc::string::String, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionTerminateResponse { +} +/// Request structure to fetch inputs, output and other data produced by an execution. +/// By default this data is not returned inline in :ref:`ref_flyteidl.admin.WorkflowExecutionGetRequest` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionGetDataRequest { + /// The identifier of the execution for which to fetch inputs and outputs. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// Response structure for WorkflowExecutionGetDataRequest which contains inputs and outputs for an execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionGetDataResponse { + /// Signed url to fetch a core.LiteralMap of execution outputs. + /// Deprecated: Please use full_outputs instead. + #[deprecated] + #[prost(message, optional, tag="1")] + pub outputs: ::core::option::Option, + /// Signed url to fetch a core.LiteralMap of execution inputs. + /// Deprecated: Please use full_inputs instead. + #[deprecated] #[prost(message, optional, tag="2")] - pub expected_inputs: ::core::option::Option, - /// Indicates the set of outputs expected to be produced by creating an execution with the Launch plan + pub inputs: ::core::option::Option, + /// Full_inputs will only be populated if they are under a configured size threshold. #[prost(message, optional, tag="3")] - pub expected_outputs: ::core::option::Option, - /// Time at which the launch plan was created. + pub full_inputs: ::core::option::Option, + /// Full_outputs will only be populated if they are under a configured size threshold. #[prost(message, optional, tag="4")] - pub created_at: ::core::option::Option<::prost_types::Timestamp>, - /// Time at which the launch plan was last updated. - #[prost(message, optional, tag="5")] - pub updated_at: ::core::option::Option<::prost_types::Timestamp>, + pub full_outputs: ::core::option::Option, } -/// Additional launch plan attributes included in the LaunchPlanSpec not strictly required to launch -/// the reference workflow. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct LaunchPlanMetadata { - /// Schedule to execute the Launch Plan +pub struct ExecutionUpdateRequest { + /// Identifier of the execution to update #[prost(message, optional, tag="1")] - pub schedule: ::core::option::Option, - /// List of notifications based on Execution status transitions - #[prost(message, repeated, tag="2")] - pub notifications: ::prost::alloc::vec::Vec, - /// Additional metadata for how to launch the launch plan - #[prost(message, optional, tag="3")] - pub launch_conditions: ::core::option::Option<::prost_types::Any>, + pub id: ::core::option::Option, + /// State to set as the new value active/archive + #[prost(enumeration="ExecutionState", tag="2")] + pub state: i32, } -/// Request to set the referenced launch plan state to the configured value. -/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct LaunchPlanUpdateRequest { - /// Identifier of launch plan for which to change state. - /// +required. - #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, - /// Desired state to apply to the launch plan. - /// +required. - #[prost(enumeration="LaunchPlanState", tag="2")] +pub struct ExecutionStateChangeDetails { + /// The state of the execution is used to control its visibility in the UI/CLI. + #[prost(enumeration="ExecutionState", tag="1")] pub state: i32, + /// This timestamp represents when the state changed. + #[prost(message, optional, tag="2")] + pub occurred_at: ::core::option::Option<::prost_types::Timestamp>, + /// Identifies the entity (if any) responsible for causing the state change of the execution + #[prost(string, tag="3")] + pub principal: ::prost::alloc::string::String, } -/// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct LaunchPlanUpdateResponse { +pub struct ExecutionUpdateResponse { } -/// Represents a request struct for finding an active launch plan for a given NamedEntityIdentifier -/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details +/// WorkflowExecutionGetMetricsRequest represents a request to retrieve metrics for the specified workflow execution. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ActiveLaunchPlanRequest { - /// +required. +pub struct WorkflowExecutionGetMetricsRequest { + /// id defines the workflow execution to query for. #[prost(message, optional, tag="1")] - pub id: ::core::option::Option, + pub id: ::core::option::Option, + /// depth defines the number of Flyte entity levels to traverse when breaking down execution details. + #[prost(int32, tag="2")] + pub depth: i32, } -/// Represents a request structure to list active launch plans within a project/domain and optional org. -/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details +/// WorkflowExecutionGetMetricsResponse represents the response containing metrics for the specified workflow execution. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ActiveLaunchPlanListRequest { - /// Name of the project that contains the identifiers. - /// +required. - #[prost(string, tag="1")] - pub project: ::prost::alloc::string::String, - /// Name of the domain the identifiers belongs to within the project. - /// +required. - #[prost(string, tag="2")] - pub domain: ::prost::alloc::string::String, - /// Indicates the number of resources to be returned. - /// +required. - #[prost(uint32, tag="3")] - pub limit: u32, - /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page - /// in a query. - /// +optional - #[prost(string, tag="4")] - pub token: ::prost::alloc::string::String, - /// Sort ordering. - /// +optional - #[prost(message, optional, tag="5")] - pub sort_by: ::core::option::Option, - /// Optional, org key applied to the resource. - #[prost(string, tag="6")] - pub org: ::prost::alloc::string::String, +pub struct WorkflowExecutionGetMetricsResponse { + /// Span defines the top-level breakdown of the workflows execution. More precise information is nested in a + /// hierarchical structure using Flyte entity references. + #[prost(message, optional, tag="1")] + pub span: ::core::option::Option, } -/// By default any launch plan regardless of state can be used to launch a workflow execution. -/// However, at most one version of a launch plan -/// (e.g. a NamedEntityIdentifier set of shared project, domain and name values) can be -/// active at a time in regards to *schedules*. That is, at most one schedule in a NamedEntityIdentifier -/// group will be observed and trigger executions at a defined cadence. +/// The state of the execution is used to control its visibility in the UI/CLI. #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] -pub enum LaunchPlanState { - Inactive = 0, - Active = 1, +pub enum ExecutionState { + /// By default, all executions are considered active. + ExecutionActive = 0, + /// Archived executions are no longer visible in the UI. + ExecutionArchived = 1, } -impl LaunchPlanState { +impl ExecutionState { /// String value of the enum field names used in the ProtoBuf definition. /// /// The values are not transformed in any way and thus are considered stable /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - LaunchPlanState::Inactive => "INACTIVE", - LaunchPlanState::Active => "ACTIVE", + ExecutionState::ExecutionActive => "EXECUTION_ACTIVE", + ExecutionState::ExecutionArchived => "EXECUTION_ARCHIVED", } } /// Creates an enum from field names used in the ProtoBuf definition. pub fn from_str_name(value: &str) -> ::core::option::Option { match value { - "INACTIVE" => Some(Self::Inactive), - "ACTIVE" => Some(Self::Active), + "EXECUTION_ACTIVE" => Some(Self::ExecutionActive), + "EXECUTION_ARCHIVED" => Some(Self::ExecutionArchived), _ => None, } } } -/// Defines a set of overridable task resource attributes set during task registration. +/// Option for schedules run at a certain frequency e.g. every 2 minutes. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct TaskResourceSpec { - #[prost(string, tag="1")] - pub cpu: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub gpu: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub memory: ::prost::alloc::string::String, - #[prost(string, tag="4")] - pub storage: ::prost::alloc::string::String, - #[prost(string, tag="5")] - pub ephemeral_storage: ::prost::alloc::string::String, +pub struct FixedRate { + #[prost(uint32, tag="1")] + pub value: u32, + #[prost(enumeration="FixedRateUnit", tag="2")] + pub unit: i32, } -/// Defines task resource defaults and limits that will be applied at task registration. +/// Options for schedules to run according to a cron expression. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct TaskResourceAttributes { - #[prost(message, optional, tag="1")] - pub defaults: ::core::option::Option, - #[prost(message, optional, tag="2")] - pub limits: ::core::option::Option, +pub struct CronSchedule { + /// Standard/default cron implementation as described by + /// Also supports nonstandard predefined scheduling definitions + /// as described by + /// except @reboot + #[prost(string, tag="1")] + pub schedule: ::prost::alloc::string::String, + /// ISO 8601 duration as described by + #[prost(string, tag="2")] + pub offset: ::prost::alloc::string::String, } +/// Defines complete set of information required to trigger an execution on a schedule. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ClusterResourceAttributes { - /// Custom resource attributes which will be applied in cluster resource creation (e.g. quotas). - /// Map keys are the *case-sensitive* names of variables in templatized resource files. - /// Map values should be the custom values which get substituted during resource creation. - #[prost(map="string, string", tag="1")] - pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +pub struct Schedule { + /// Name of the input variable that the kickoff time will be supplied to when the workflow is kicked off. + #[prost(string, tag="3")] + pub kickoff_time_input_arg: ::prost::alloc::string::String, + #[prost(oneof="schedule::ScheduleExpression", tags="1, 2, 4")] + pub schedule_expression: ::core::option::Option, +} +/// Nested message and enum types in `Schedule`. +pub mod schedule { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum ScheduleExpression { + /// Uses AWS syntax: Minutes Hours Day-of-month Month Day-of-week Year + /// e.g. for a schedule that runs every 15 minutes: 0/15 * * * ? * + #[prost(string, tag="1")] + CronExpression(::prost::alloc::string::String), + #[prost(message, tag="2")] + Rate(super::FixedRate), + #[prost(message, tag="4")] + CronSchedule(super::CronSchedule), + } +} +/// Represents a frequency at which to run a schedule. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum FixedRateUnit { + Minute = 0, + Hour = 1, + Day = 2, +} +impl FixedRateUnit { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + FixedRateUnit::Minute => "MINUTE", + FixedRateUnit::Hour => "HOUR", + FixedRateUnit::Day => "DAY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MINUTE" => Some(Self::Minute), + "HOUR" => Some(Self::Hour), + "DAY" => Some(Self::Day), + _ => None, + } + } } +/// Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required +/// to launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to +/// set the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionQueueAttributes { - /// Tags used for assigning execution queues for tasks defined within this project. - #[prost(string, repeated, tag="1")] - pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +pub struct LaunchPlanCreateRequest { + /// Uniquely identifies a launch plan entity. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User-provided launch plan details, including reference workflow, inputs and other metadata. + #[prost(message, optional, tag="2")] + pub spec: ::core::option::Option, } +/// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecutionClusterLabel { - /// Label value to determine where the execution will be run - #[prost(string, tag="1")] - pub value: ::prost::alloc::string::String, +pub struct LaunchPlanCreateResponse { } -/// This MatchableAttribute configures selecting alternate plugin implementations for a given task type. -/// In addition to an override implementation a selection of fallbacks can be provided or other modes -/// for handling cases where the desired plugin override is not enabled in a given Flyte deployment. +/// A LaunchPlan provides the capability to templatize workflow executions. +/// Launch plans simplify associating one or more schedules, inputs and notifications with your workflows. +/// Launch plans can be shared and used to trigger executions with predefined inputs even when a workflow +/// definition doesn't necessarily have a default value for said input. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct PluginOverride { - /// A predefined yet extensible Task type identifier. - #[prost(string, tag="1")] - pub task_type: ::prost::alloc::string::String, - /// A set of plugin ids which should handle tasks of this type instead of the default registered plugin. The list will be tried in order until a plugin is found with that id. - #[prost(string, repeated, tag="2")] - pub plugin_id: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - /// Defines the behavior when no plugin from the plugin_id list is not found. - #[prost(enumeration="plugin_override::MissingPluginBehavior", tag="4")] - pub missing_plugin_behavior: i32, -} -/// Nested message and enum types in `PluginOverride`. -pub mod plugin_override { - #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] - #[repr(i32)] - pub enum MissingPluginBehavior { - /// By default, if this plugin is not enabled for a Flyte deployment then execution will fail. - Fail = 0, - /// Uses the system-configured default implementation. - UseDefault = 1, - } - impl MissingPluginBehavior { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - MissingPluginBehavior::Fail => "FAIL", - MissingPluginBehavior::UseDefault => "USE_DEFAULT", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "FAIL" => Some(Self::Fail), - "USE_DEFAULT" => Some(Self::UseDefault), - _ => None, - } - } - } +pub struct LaunchPlan { + /// Uniquely identifies a launch plan entity. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User-provided launch plan details, including reference workflow, inputs and other metadata. + #[prost(message, optional, tag="2")] + pub spec: ::core::option::Option, + /// Values computed by the flyte platform after launch plan registration. + #[prost(message, optional, tag="3")] + pub closure: ::core::option::Option, } +/// Response object for list launch plan requests. +/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct PluginOverrides { +pub struct LaunchPlanList { #[prost(message, repeated, tag="1")] - pub overrides: ::prost::alloc::vec::Vec, + pub launch_plans: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Defines permissions associated with executions created by this launch plan spec. +/// Use either of these roles when they have permissions required by your workflow execution. +/// Deprecated. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Auth { + /// Defines an optional iam role which will be used for tasks run in executions created with this launch plan. + #[prost(string, tag="1")] + pub assumable_iam_role: ::prost::alloc::string::String, + /// Defines an optional kubernetes service account which will be used for tasks run in executions created with this launch plan. + #[prost(string, tag="2")] + pub kubernetes_service_account: ::prost::alloc::string::String, } -/// Adds defaults for customizable workflow-execution specifications and overrides. +/// User-provided launch plan definition and configuration values. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct WorkflowExecutionConfig { - /// Can be used to control the number of parallel nodes to run within the workflow. This is useful to achieve fairness. - #[prost(int32, tag="1")] - pub max_parallelism: i32, - /// Indicates security context permissions for executions triggered with this matchable attribute. +pub struct LaunchPlanSpec { + /// Reference to the Workflow template that the launch plan references + #[prost(message, optional, tag="1")] + pub workflow_id: ::core::option::Option, + /// Metadata for the Launch Plan #[prost(message, optional, tag="2")] - pub security_context: ::core::option::Option, - /// Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.). + pub entity_metadata: ::core::option::Option, + /// Input values to be passed for the execution. + /// These can be overridden when an execution is created with this launch plan. #[prost(message, optional, tag="3")] - pub raw_output_data_config: ::core::option::Option, - /// Custom labels to be applied to a triggered execution resource. + 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. #[prost(message, optional, tag="4")] + pub fixed_inputs: ::core::option::Option, + /// String to indicate the role to use to execute the workflow underneath + #[deprecated] + #[prost(string, tag="5")] + pub role: ::prost::alloc::string::String, + /// Custom labels to be applied to the execution resource. + #[prost(message, optional, tag="6")] pub labels: ::core::option::Option, - /// Custom annotations to be applied to a triggered execution resource. - #[prost(message, optional, tag="5")] + /// Custom annotations to be applied to the execution resource. + #[prost(message, optional, tag="7")] pub annotations: ::core::option::Option, + /// Indicates the permission associated with workflow executions triggered with this launch plan. + #[deprecated] + #[prost(message, optional, tag="8")] + pub auth: ::core::option::Option, + #[deprecated] + #[prost(message, optional, tag="9")] + pub auth_role: ::core::option::Option, + /// Indicates security context for permissions triggered with this launch plan + #[prost(message, optional, tag="10")] + pub security_context: ::core::option::Option, + /// Indicates the runtime priority of the execution. + #[prost(message, optional, tag="16")] + pub quality_of_service: ::core::option::Option, + /// Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.). + #[prost(message, optional, tag="17")] + pub raw_output_data_config: ::core::option::Option, + /// Controls the maximum number of tasknodes that can be run in parallel for the entire workflow. + /// This is useful to achieve fairness. Note: MapTasks are regarded as one unit, + /// and parallelism/concurrency of MapTasks is independent from this. + #[prost(int32, tag="18")] + pub max_parallelism: i32, /// Allows for the interruptible flag of a workflow to be overwritten for a single execution. /// Omitting this field uses the workflow's value as a default. /// As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper /// around the bool field. - #[prost(message, optional, tag="6")] + #[prost(message, optional, tag="19")] pub interruptible: ::core::option::Option, /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored /// data once execution finishes successfully. - #[prost(bool, tag="7")] + #[prost(bool, tag="20")] pub overwrite_cache: bool, /// Environment variables to be set for the execution. - #[prost(message, optional, tag="8")] + #[prost(message, optional, tag="21")] pub envs: ::core::option::Option, } -/// Generic container for encapsulating all types of the above attributes messages. +/// 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. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct MatchingAttributes { - #[prost(oneof="matching_attributes::Target", tags="1, 2, 3, 4, 5, 6, 7, 8")] - pub target: ::core::option::Option, +pub struct LaunchPlanClosure { + /// Indicate the Launch plan state. + #[prost(enumeration="LaunchPlanState", tag="1")] + pub state: i32, + /// Indicates the set of inputs expected when creating an execution with the Launch plan + #[prost(message, optional, tag="2")] + pub expected_inputs: ::core::option::Option, + /// Indicates the set of outputs expected to be produced by creating an execution with the Launch plan + #[prost(message, optional, tag="3")] + pub expected_outputs: ::core::option::Option, + /// Time at which the launch plan was created. + #[prost(message, optional, tag="4")] + pub created_at: ::core::option::Option<::prost_types::Timestamp>, + /// Time at which the launch plan was last updated. + #[prost(message, optional, tag="5")] + pub updated_at: ::core::option::Option<::prost_types::Timestamp>, } -/// Nested message and enum types in `MatchingAttributes`. -pub mod matching_attributes { - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Target { - #[prost(message, tag="1")] - TaskResourceAttributes(super::TaskResourceAttributes), - #[prost(message, tag="2")] - ClusterResourceAttributes(super::ClusterResourceAttributes), - #[prost(message, tag="3")] - ExecutionQueueAttributes(super::ExecutionQueueAttributes), - #[prost(message, tag="4")] - ExecutionClusterLabel(super::ExecutionClusterLabel), - #[prost(message, tag="5")] - QualityOfService(super::super::core::QualityOfService), - #[prost(message, tag="6")] - PluginOverrides(super::PluginOverrides), - #[prost(message, tag="7")] - WorkflowExecutionConfig(super::WorkflowExecutionConfig), - #[prost(message, tag="8")] - ClusterAssignment(super::ClusterAssignment), - } +/// Additional launch plan attributes included in the LaunchPlanSpec not strictly required to launch +/// the reference workflow. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanMetadata { + /// Schedule to execute the Launch Plan + #[prost(message, optional, tag="1")] + pub schedule: ::core::option::Option, + /// List of notifications based on Execution status transitions + #[prost(message, repeated, tag="2")] + pub notifications: ::prost::alloc::vec::Vec, + /// Additional metadata for how to launch the launch plan + #[prost(message, optional, tag="3")] + pub launch_conditions: ::core::option::Option<::prost_types::Any>, } -/// Represents a custom set of attributes applied for either a domain (and optional org); a domain and project (and optional org); -/// or domain, project and workflow name (and optional org). -/// These are used to override system level defaults for kubernetes cluster resource management, -/// default execution values, and more all across different levels of specificity. +/// Request to set the referenced launch plan state to the configured value. +/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct MatchableAttributesConfiguration { +pub struct LaunchPlanUpdateRequest { + /// Identifier of launch plan for which to change state. + /// +required. #[prost(message, optional, tag="1")] - pub attributes: ::core::option::Option, - #[prost(string, tag="2")] - pub domain: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub project: ::prost::alloc::string::String, - #[prost(string, tag="4")] - pub workflow: ::prost::alloc::string::String, - #[prost(string, tag="5")] - pub launch_plan: ::prost::alloc::string::String, - /// Optional, org key applied to the resource. - #[prost(string, tag="6")] - pub org: ::prost::alloc::string::String, + pub id: ::core::option::Option, + /// Desired state to apply to the launch plan. + /// +required. + #[prost(enumeration="LaunchPlanState", tag="2")] + pub state: i32, } -/// Request all matching resource attributes for a resource type. -/// See :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for more details +/// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListMatchableAttributesRequest { - /// +required - #[prost(enumeration="MatchableResource", tag="1")] - pub resource_type: i32, - /// Optional, org filter applied to list project requests. - #[prost(string, tag="2")] - pub org: ::prost::alloc::string::String, +pub struct LaunchPlanUpdateResponse { } -/// Response for a request for all matching resource attributes for a resource type. -/// See :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for more details +/// Represents a request struct for finding an active launch plan for a given NamedEntityIdentifier +/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListMatchableAttributesResponse { - #[prost(message, repeated, tag="1")] - pub configurations: ::prost::alloc::vec::Vec, +pub struct ActiveLaunchPlanRequest { + /// +required. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, } -/// Defines a resource that can be configured by customizable Project-, ProjectDomain- or WorkflowAttributes -/// based on matching tags. +/// Represents a request structure to list active launch plans within a project/domain and optional org. +/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ActiveLaunchPlanListRequest { + /// Name of the project that contains the identifiers. + /// +required. + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Name of the domain the identifiers belongs to within the project. + /// +required. + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// Indicates the number of resources to be returned. + /// +required. + #[prost(uint32, tag="3")] + pub limit: u32, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="4")] + pub token: ::prost::alloc::string::String, + /// Sort ordering. + /// +optional + #[prost(message, optional, tag="5")] + pub sort_by: ::core::option::Option, + /// Optional, org key applied to the resource. + #[prost(string, tag="6")] + pub org: ::prost::alloc::string::String, +} +/// By default any launch plan regardless of state can be used to launch a workflow execution. +/// However, at most one version of a launch plan +/// (e.g. a NamedEntityIdentifier set of shared project, domain and name values) can be +/// active at a time in regards to *schedules*. That is, at most one schedule in a NamedEntityIdentifier +/// group will be observed and trigger executions at a defined cadence. #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] -pub enum MatchableResource { - /// Applies to customizable task resource requests and limits. - TaskResource = 0, - /// Applies to configuring templated kubernetes cluster resources. - ClusterResource = 1, - /// Configures task and dynamic task execution queue assignment. - ExecutionQueue = 2, - /// Configures the K8s cluster label to be used for execution to be run - ExecutionClusterLabel = 3, - /// Configures default quality of service when undefined in an execution spec. - QualityOfServiceSpecification = 4, - /// Selects configurable plugin implementation behavior for a given task type. - PluginOverride = 5, - /// Adds defaults for customizable workflow-execution specifications and overrides. - WorkflowExecutionConfig = 6, - /// Controls how to select an available cluster on which this execution should run. - ClusterAssignment = 7, +pub enum LaunchPlanState { + Inactive = 0, + Active = 1, } -impl MatchableResource { +impl LaunchPlanState { /// String value of the enum field names used in the ProtoBuf definition. /// /// The values are not transformed in any way and thus are considered stable /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - MatchableResource::TaskResource => "TASK_RESOURCE", - MatchableResource::ClusterResource => "CLUSTER_RESOURCE", - MatchableResource::ExecutionQueue => "EXECUTION_QUEUE", - MatchableResource::ExecutionClusterLabel => "EXECUTION_CLUSTER_LABEL", - MatchableResource::QualityOfServiceSpecification => "QUALITY_OF_SERVICE_SPECIFICATION", - MatchableResource::PluginOverride => "PLUGIN_OVERRIDE", - MatchableResource::WorkflowExecutionConfig => "WORKFLOW_EXECUTION_CONFIG", - MatchableResource::ClusterAssignment => "CLUSTER_ASSIGNMENT", + LaunchPlanState::Inactive => "INACTIVE", + LaunchPlanState::Active => "ACTIVE", } } /// Creates an enum from field names used in the ProtoBuf definition. pub fn from_str_name(value: &str) -> ::core::option::Option { match value { - "TASK_RESOURCE" => Some(Self::TaskResource), - "CLUSTER_RESOURCE" => Some(Self::ClusterResource), - "EXECUTION_QUEUE" => Some(Self::ExecutionQueue), - "EXECUTION_CLUSTER_LABEL" => Some(Self::ExecutionClusterLabel), - "QUALITY_OF_SERVICE_SPECIFICATION" => Some(Self::QualityOfServiceSpecification), - "PLUGIN_OVERRIDE" => Some(Self::PluginOverride), - "WORKFLOW_EXECUTION_CONFIG" => Some(Self::WorkflowExecutionConfig), - "CLUSTER_ASSIGNMENT" => Some(Self::ClusterAssignment), + "INACTIVE" => Some(Self::Inactive), + "ACTIVE" => Some(Self::Active), _ => None, } } diff --git a/flyteidl/protos/flyteidl/admin/execution.proto b/flyteidl/protos/flyteidl/admin/execution.proto index a46d6efdd37..09f8fcc7ec0 100644 --- a/flyteidl/protos/flyteidl/admin/execution.proto +++ b/flyteidl/protos/flyteidl/admin/execution.proto @@ -14,6 +14,7 @@ import "flyteidl/core/security.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; +import "flyteidl/admin/matchable_resource.proto"; // Request to launch an execution with the given project, domain and optionally-assigned name. message ExecutionCreateRequest { @@ -330,6 +331,9 @@ message ExecutionSpec { // Tags to be set for the execution. repeated string tags = 24; + + // Execution cluster label to be set for the execution. + ExecutionClusterLabel execution_cluster_label = 25; } // Request to terminate an in-progress execution. This action is irreversible. From b74f705a579b771faff355bb808d9ba16bf85c63 Mon Sep 17 00:00:00 2001 From: ddl-rliu <140021987+ddl-rliu@users.noreply.github.com> Date: Mon, 25 Mar 2024 11:45:23 -0700 Subject: [PATCH 105/107] Log line for debugging audience (#5078) Signed-off-by: ddl-rliu --- flyteadmin/auth/authzserver/claims_verifier.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flyteadmin/auth/authzserver/claims_verifier.go b/flyteadmin/auth/authzserver/claims_verifier.go index 9ba3c0d1d91..c27ea06ee70 100644 --- a/flyteadmin/auth/authzserver/claims_verifier.go +++ b/flyteadmin/auth/authzserver/claims_verifier.go @@ -24,7 +24,7 @@ func verifyClaims(expectedAudience sets.String, claimsRaw map[string]interface{} } if foundAudIndex < 0 { - return nil, fmt.Errorf("invalid audience [%v]", claims) + return nil, fmt.Errorf("invalid audience [%v], wanted [%v]", claims, expectedAudience) } userInfo := &service.UserInfoResponse{} From cb6384ac6ea60f8b9421a71cfda4279f3579d3cb Mon Sep 17 00:00:00 2001 From: Chi-Sheng Liu Date: Tue, 26 Mar 2024 02:46:50 +0800 Subject: [PATCH 106/107] docs: Add make target/doc to update console in demo sandbox (#5100) Signed-off-by: Chi-Sheng Liu --- Makefile | 4 ++++ docs/community/contribute.rst | 1 + 2 files changed, 5 insertions(+) diff --git a/Makefile b/Makefile index 072fdf8efb0..6eab674b17f 100644 --- a/Makefile +++ b/Makefile @@ -117,3 +117,7 @@ go-tidy: lint-helm-charts: # This pressuposes that you have act installed act pull_request -W .github/workflows/validate-helm-charts.yaml --container-architecture linux/amd64 -e charts/event.json + +.PHONY: clean +clean: ## Remove the HTML files related to the Flyteconsole. + rm -rf cmd/single/dist diff --git a/docs/community/contribute.rst b/docs/community/contribute.rst index 993cb6bca52..c7573011351 100644 --- a/docs/community/contribute.rst +++ b/docs/community/contribute.rst @@ -396,6 +396,7 @@ that integrates all Flyte components into a single binary. # Step2: Build a single binary that bundles all the Flyte components. # The version of each component/library used to build the single binary are defined in `go.mod`. sudo apt-get -y install jq # You may need to install jq + make clean # (Optional) Run this only if you want to run the newest version of flyteconsole go mod tidy make compile From d68047a1bff9383cb2f53a6f39848ec662354c03 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> Date: Mon, 25 Mar 2024 17:50:45 -0700 Subject: [PATCH 107/107] Fix numbering in code examples (#5104) Signed-off-by: Eduardo Apolinario <653394+eapolinario@users.noreply.github.com> --- docs/community/contribute.rst | 74 ++++++++++++++++------------------- 1 file changed, 33 insertions(+), 41 deletions(-) diff --git a/docs/community/contribute.rst b/docs/community/contribute.rst index c7573011351..bb10031a9dd 100644 --- a/docs/community/contribute.rst +++ b/docs/community/contribute.rst @@ -342,13 +342,13 @@ How to setup dev environment for flyteidl, flyteadmin, flyteplugins, flytepropel .. code:: shell - # Step1: Install the latest version of flytectl + # Step 1: Install the latest version of flytectl curl -sL https://ctl.flyte.org/install | bash # flyteorg/flytectl info checking GitHub for latest tag # flyteorg/flytectl info found version: 0.6.39 for v0.6.39/Linux/x86_64 # flyteorg/flytectl info installed ./bin/flytectl - # Step2: Export flytectl path based on the previous log "flyteorg/flytectl info installed ./bin/flytectl" + # Step 2: Export flytectl path based on the previous log "flyteorg/flytectl info installed ./bin/flytectl" export PATH=$PATH:/home/ubuntu/bin # replace with your path **2. Build a k3s cluster that runs minio and postgres Pods.** @@ -360,7 +360,7 @@ How to setup dev environment for flyteidl, flyteadmin, flyteplugins, flytepropel .. code:: shell - # Step1: Start k3s cluster, create Pods for postgres and minio. Note: We cannot access Flyte UI yet! but we can access the minio console now. + # Step 1: Start k3s cluster, create Pods for postgres and minio. Note: We cannot access Flyte UI yet! but we can access the minio console now. flytectl demo start --dev # 👨‍💻 Flyte is ready! Flyte UI is available at http://localhost:30080/console 🚀 🚀 🎉 # ❇️ Run the following command to export demo environment variables for accessing flytectl @@ -368,10 +368,10 @@ How to setup dev environment for flyteidl, flyteadmin, flyteplugins, flytepropel # 🐋 Flyte sandbox ships with a Docker registry. Tag and push custom workflow images to localhost:30000 # 📂 The Minio API is hosted on localhost:30002. Use http://localhost:30080/minio/login for Minio console - # Step2: Export FLYTECTL_CONFIG as the previous log indicated. + # Step 2: Export FLYTECTL_CONFIG as the previous log indicated. FLYTECTL_CONFIG=/home/ubuntu/.flyte/config-sandbox.yaml - # Step3: The kubeconfig will be automatically copied to the user's main kubeconfig (default is `/.kube/config`) with "flyte-sandbox" as the context name. + # Step 3: The kubeconfig will be automatically copied to the user's main kubeconfig (default is `/.kube/config`) with "flyte-sandbox" as the context name. # Check that we can access the K3s cluster. Verify that postgres and minio are running. kubectl get pod -n flyte # NAME READY STATUS RESTARTS AGE @@ -389,26 +389,18 @@ that integrates all Flyte components into a single binary. .. code:: shell - # Step1: Clone flyte repo + # Step 1: Clone flyte repo git clone https://github.com/flyteorg/flyte.git cd flyte - # Step2: Build a single binary that bundles all the Flyte components. + # Step 2: Build a single binary that bundles all the Flyte components. # The version of each component/library used to build the single binary are defined in `go.mod`. sudo apt-get -y install jq # You may need to install jq make clean # (Optional) Run this only if you want to run the newest version of flyteconsole go mod tidy make compile - # Step3: Edit the config file: ./flyte-single-binary-local.yaml. - # Replace occurrences of $HOME with the actual path of your home directory. - sedi=(-i) - case "$(uname)" in - Darwin*) sedi=(-i "") - esac - sed "${sedi[@]}" -e "s|\$HOME|${HOME}|g" flyte-single-binary-local.yaml - - # Step 4: Prepare a namespace template for the cluster resource controller. + # Step 3: Prepare a namespace template for the cluster resource controller. # The configuration file "flyte-single-binary-local.yaml" has an entry named cluster_resources.templatePath. # This entry needs to direct to a directory containing the templates for the cluster resource controller to use. # We will now create a simple template that allows the automatic creation of required namespaces for projects. @@ -420,7 +412,7 @@ that integrates all Flyte components into a single binary. metadata: name: '{{ namespace }}'" > $HOME/.flyte/sandbox/cluster-resource-templates/namespace.yaml - # Step5: Running the single binary. + # Step 4: Running the single binary. # The POD_NAMESPACE environment variable is necessary for the webhook to function correctly. # You may encounter an error due to `ERROR: duplicate key value violates unique constraint`. Running the command again will solve the problem. POD_NAMESPACE=flyte ./flyte start --config flyte-single-binary-local.yaml @@ -439,7 +431,7 @@ The following instructions provide guidance on how to build single binary with y .. code:: shell - # Step1: Install Go. Flyte uses Go 1.19, so make sure to switch to Go 1.19. + # Step 1: Install Go. Flyte uses Go 1.19, so make sure to switch to Go 1.19. export PATH=$PATH:$(go env GOPATH)/bin go install golang.org/dl/go1.19@latest go1.19 download @@ -451,10 +443,10 @@ The following instructions provide guidance on how to build single binary with y go install golang.org/x/tools/cmd/goimports@latest export PATH=$(go env GOPATH)/bin:$PATH - # Step2: Go to the {flyteadmin} repository, modify the source code accordingly. + # Step 2: Go to the {flyteadmin} repository, modify the source code accordingly. cd flyte/flyteadmin - # Step3: Now, you can build the single binary. Go back to Flyte directory. + # Step 3: Now, you can build the single binary. Go back to Flyte directory. go mod tidy make compile POD_NAMESPACE=flyte ./flyte start --config flyte-single-binary-local.yaml @@ -464,10 +456,10 @@ The following instructions provide guidance on how to build single binary with y .. code:: shell - # Step1: Install flytekit + # Step 1: Install flytekit pip install flytekit && export PATH=$PATH:/home/ubuntu/.local/bin - # Step2: Run a hello world example + # Step 2: Run a hello world example pyflyte run --remote https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/hello_world.py hello_world_wf # Go to http://localhost:30080/console/projects/flytesnacks/domains/development/executions/fd63f88a55fed4bba846 to see execution in the console. # You can go to the [flytesnacks repository](https://github.com/flyteorg/flytesnacks) to see more useful examples. @@ -496,16 +488,16 @@ If not, we can start backends with a single command. .. code:: shell - # Step1: Install the latest version of flytectl, a portable and lightweight command-line interface to work with Flyte. + # Step 1: Install the latest version of flytectl, a portable and lightweight command-line interface to work with Flyte. curl -sL https://ctl.flyte.org/install | bash # flyteorg/flytectl info checking GitHub for latest tag # flyteorg/flytectl info found version: 0.6.39 for v0.6.39/Linux/x86_64 # flyteorg/flytectl info installed ./bin/flytectl - # Step2: Export flytectl path based on the previous log "flyteorg/flytectl info installed ./bin/flytectl" + # Step 2: Export flytectl path based on the previous log "flyteorg/flytectl info installed ./bin/flytectl" export PATH=$PATH:/home/ubuntu/bin # replace with your path - # Step3: Starts the Flyte demo cluster. This will setup a k3s cluster running minio, postgres Pods, and all Flyte components: flyteadmin, flyteplugins, flytepropeller, etc. + # Step 3: Starts the Flyte demo cluster. This will setup a k3s cluster running minio, postgres Pods, and all Flyte components: flyteadmin, flyteplugins, flytepropeller, etc. # See https://docs.flyte.org/en/latest/flytectl/gen/flytectl_demo_start.html for more details. flytectl demo start # 👨‍💻 Flyte is ready! Flyte UI is available at http://localhost:30080/console 🚀 🚀 🎉 @@ -519,7 +511,7 @@ If not, we can start backends with a single command. .. code:: shell - # Step1: Build a virtual environment for developing Flytekit. This will allow your local changes to take effect when the same Python interpreter runs `import flytekit`. + # Step 1: Build a virtual environment for developing Flytekit. This will allow your local changes to take effect when the same Python interpreter runs `import flytekit`. git clone https://github.com/flyteorg/flytekit.git # replace with your own repo cd flytekit virtualenv ~/.virtualenvs/flytekit @@ -545,11 +537,11 @@ If not, we can start backends with a single command. pip install -e . # Now you can use all plugins, but the performance is slow. - # Step2: Modify the source code for flytekit, then run unit tests and lint. + # Step 2: Modify the source code for flytekit, then run unit tests and lint. make lint make test - # Step3: Run a hello world sample to test locally + # Step 3: Run a hello world sample to test locally pyflyte run https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/hello_world.py hello_world_wf # Running hello_world_wf() hello world @@ -579,19 +571,19 @@ the Flyte cluster, and finally submit the workflow. .. code:: shell - # Step1: Ensure you have pushed your changes to the remote repo + # Step 1: Ensure you have pushed your changes to the remote repo # In the flytekit folder git add . && git commit -s -m "develop" && git push - # Step2: Build the image + # Step 2: Build the image # In the flytekit folder export FLYTE_INTERNAL_IMAGE="localhost:30000/flytekit:demo" # replace with your own image name and tag docker build --no-cache -t "${FLYTE_INTERNAL_IMAGE}" -f ./Dockerfile . - # Step3: Push the image to the Flyte cluster + # Step 3: Push the image to the Flyte cluster docker push ${FLYTE_INTERNAL_IMAGE} - # Step4: Submit a hello world workflow to the Flyte cluster + # Step 4: Submit a hello world workflow to the Flyte cluster cd flytesnacks pyflyte run --image ${FLYTE_INTERNAL_IMAGE} --remote https://raw.githubusercontent.com/flyteorg/flytesnacks/master/examples/basics/basics/hello_world.py hello_world_wf # Go to http://localhost:30080/console/projects/flytesnacks/domains/development/executions/f5c17e1b5640c4336bf8 to see execution in the console. @@ -612,35 +604,35 @@ Depending on your needs, refer to one of the following guides to setup up the Fl .. code:: shell - # Step1: Clone the repo and navigate to the Flyteconsole folder + # Step 1: Clone the repo and navigate to the Flyteconsole folder git clone https://github.com/flyteorg/flyteconsole.git cd flyteconsole - # Step2: Install Node.js 18. Refer to https://github.com/nodesource/distributions/blob/master/README.md#using-ubuntu-2. + # Step 2: Install Node.js 18. Refer to https://github.com/nodesource/distributions/blob/master/README.md#using-ubuntu-2. curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ sudo apt-get install -y nodejs - # Step3: Install yarn. Refer to https://classic.yarnpkg.com/lang/en/docs/install/#debian-stable. + # Step 3: Install yarn. Refer to https://classic.yarnpkg.com/lang/en/docs/install/#debian-stable. curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt update && sudo apt install yarn - # Step4: Add environment variables + # Step 4: Add environment variables export BASE_URL=/console export ADMIN_API_URL=http://localhost:30080 export DISABLE_AUTH=1 export ADMIN_API_USE_SSL="http" - # Step5: Generate SSL certificate + # Step 5: Generate SSL certificate # Note, since we will use HTTP, SSL is not required. However, missing an SSL certificate will cause an error when starting Flyteconsole. make generate_ssl - # Step6: Install node packages + # Step 6: Install node packages yarn install yarn build:types # It is fine if seeing error `Property 'at' does not exist on type 'string[]'` yarn run build:prod - # Step7: Start flyteconsole + # Step 7: Start flyteconsole yarn start **3. Install the Chrome plugin:** `Moesif Origin & CORS Changer `__. @@ -693,11 +685,11 @@ FlyteAdmin and datacatalog use postgres to store persistent records, and you can .. code:: shell - # Step1: Install the PostgreSQL client. + # Step 1: Install the PostgreSQL client. sudo apt-get update sudo apt-get install postgresql-client - # Step2: Connect to the PostgreSQL server. The password is "postgres". + # Step 2: Connect to the PostgreSQL server. The password is "postgres". psql -h localhost -p 30001 -U postgres -d flyte